Vue入门笔记 day2

复习

  • Vue单文件方式 xxx.vue
  • 1:准备好配置文件 package.json(包描述文件&&封装命令 npm run dev)+ webapck.config.js(打包的配置文件)
  • 2:创建index.html(单页应用的页)
  • 3:创建main.js(入口文件)
  • 4:引入vue和相关的文件xxx.vue
  • 5:new Vue(options)
  • 6:options(选项)
    • data
    • methods
    • components (组件内声明子组件)
    • props
  • 7:实例
    • 在组件内(xxx.vue)中的this
    • new Vue()
    • 事件
      • this.$on(事件名,回调函数(参数))
      • this.$emit(事件名,数据)
      • this.$once(事件名,回调函数(参数)) 之触发一次
      • this.off(事件名) 取消事件
  • 全局
    • Vue.component('组件名',组件对象) 在哪里都可以使用
  • 组件传值
    • 父传子
      • 常量 title="xxx" 子组件声明接收参数 props:['xxx']
      • 变量 :title="xxx" 子组件声明接收参数 props:['xxx']
    • 子传父 vuebus(只能是同一辆车)
      • 先停车到父组件 on一下
      • 再开车到子组件;’如果需要的话,emit一下,触发上述事件的回调函数

过滤器

  • content|过滤器,vue中没有提供相关的内置过滤器,可以自定义过滤器
  • 组件内的过滤器 + 全局过滤器
    • 组件内的过滤器就是options中的一个filters的属性(一个对象)
      • 多个key就是不同过滤器名,多个value就是与key对应的过滤方式函数体
    • Vue.filter(名,fn)
  • 总结
    • 全局:范围大,如果出现同名时,权力小
    • 组件内:权力大,如果出现同名时,范围小

获取DOM元素

  • 救命稻草 前端框架就是为了减少DOM操所,但是特定情况下,也给你留了后门
  • 在指定元素上,添加ref='名称A'
  • 在获取的地方加入 this.$refs.名称A
    • 如果ref放在了原生DOM元素上,获取的数据就是原生DOM对象
      • 可以直接操作
    • 如果ref放在了组件对象上,获取的就是组件对象
      • 1:获取到DOM对象,通过this.refs.sub.$el,进行操作
    • 对应的事件
      • created 完成了数据的初始化,此时还未生辰DOM,无法操作DOM
      • mounted 将数据装载到了DOM之上,可以操作DOM

mint-ui

  • 饿了么,element-ui在pc端使用的
  • mint-ui 基于 Vue.js 的移动端组件库
  • 注意:
    • 如果是全部安装的方式
      • 1:在template中可以直接使用组件标签
      • 2:在script中必须要声明,也就是引入组件对象(按需加载)

wappalyzer

vue-router

  • 前端路由 核心就是锚点值的改变,根据不同的值,渲染指定DOM位置的不同数据
  • ui-router:锚点值改变,如何获取模板?ajax
  • vue中,模板数据不是通过ajax请求来,而是调用函数获取到模板内容
  • 核心:锚点值改变
  • 以后看到vue开头,就知道必须Vue.use()
  • vue的核心插件
    • vue-router 路由
    • vuex 管理全局共享数据
  • 使用方式
    • 1:下载 npm install vue-router -S
    • 2:在main.js中引入 import VueRouter from 'vue-router'
    • 3:安装插件 Vue.use(VueRouter)
    • 4:创建路由对象并配置路由规则
      • let router=new VueRouter({routers:[path:'/home',component:Home]})
    • 5:将其路由对象传递Vue的实例,options中
      • options 中加入 router:router
    • 6:在app.vue中留坑 <router-view></router-view>

vue-router

  • 需求:通过a标签点击,做页面数据的跳转
  • 使用router-link标签
    • 1:去哪里 <router-link to="/beijing">去北京</router-link>
    • 2:去哪里 <router-link :to="{name:'bj'}">去北京</router-link>
      • 更利于维护,如果修改了path,只修改路由配置中的path,该a标签会根据修改后的值生成href属性

eg
main.js

//引入Vue
import Vue from 'vue';
import VueRouter from 'vue-router';

//引入app.vue
import App from './components/app.vue';
import Music from './components/music.vue';
import Movie from './components/movie.vue';


//安装插件

Vue.use(VueRouter); //挂载属性

//创建路由对象并配置路由规则
let router = new VueRouter({
    //routers
    routes: [{
        name: 'music',
        path: '/music',
        component: Music
    }, {
        name: 'movie',
        path: '/movie',
        component: Movie
    }]
});

//new Vue
new Vue({
    el: '#app',
    //让Vue知道路由规则
    router: router,
    render: c => c(App)
})

app.vue

<template>
    <div>
        <div class="h">
            头部
            <!-- a标签 -->

            <a href="#/music">音乐</a>
            <a href="#/movie">电影</a>
            
            <!-- to:去哪里 -->
             
            <router-link :to="{name:'music'}">音乐</router-link>
            <router-link :to="{name:'movie'}">电影</router-link> 
            
            <!-- 也可以根路径用 -->
             
            <router-link to="/music">音乐</router-link>
            <router-link to="/movie">电影</router-link> 
            
        </div>
        <router-view class="b"></router-view>
        <div class="f">底部</div>
    </div>
</template>
<script type="text/javascript">
export default {
    data() {
        return {

        }
    }
}
</script>
<style type="text/css" scoped>
.h {
    height: 100px;
    background: yellowgreen;
}

.b {
    height: 100px;
    background: skyblue;
}

.f {
    height: 100px;
    background: hotpink;
}
</style>

参数 router-link

  • 在vue-router中,有两大对象被挂载到了实例this
  • $router(只读、具备信息的对象)、$router(具备功能函数)
  • 查询字符串
    • 1:去哪里<router-link :to="{name:'detail',query:{id:1}}">xxx</router-link>
    • 2:导航(查询字符串path不用改){name: 'detail',path: '/detail',component: 组件}
    • 3:去了干嘛?获取路由参数(要注意是query还是params)
      • this.$route.query.id
  • path方式
    • 1:去哪里<router-link :to="{name:'detail',params:{name:1}}">xxx</router-link>
    • 2:导航(path方式需要在路由规则上加上/:xxx)
    • {name: 'detail',path: '/detail/:name',component: 组件}
    • 3:去了干嘛?获取路由参数(要注意是query还是params)
      • this.$route.params.name

编程导航

  • 不能保证用户一定会点击某些按钮
  • 并且当前操作,除了路由跳转以外,还有一些别的附加操作
  • this.$router.go 根据浏览器记录 前进1 后退-1
  • this.$router.push(直接跳转到某个页面显示)
    • push参数:
      • 字符串/xxx
      • 对象:{name:'xxx',query:{id:1},params:{name:2}}

复习

  • 过滤器,全局,组件内
  • 获取DOM元素,在元素上 ref="xxx"
  • 在代码中通过this.$ref.xxx获取其元素
    • 原生DOM标签获取就是原生DOM对象
    • 如果是组件标签,获取的就是组件对象 $el继续再获取DOM元素
  • 声明周期事件(钩子函数)
    • created:数据的初始化,DOM没有生成
    • mounted:将数据装载到DOM元素上,此时有DOM
  • 路由
    • window.addEventListener('hashchange',fn)
    • 根据你放<router-link></router-link>作为DOM上的标识
    • 最终当锚点值改变触发hashchange的回调函数,我们将指定的模板数据插入到DOM标识上

重定向和404

  • 进入后,默认就是/
  • 重定向
    • {path:'/',redirect:'/home'}
    • {path:'/',redirect:{name:'home'}}
  • 404:在路由规则的最后一个规则
    • 写一个很强大的匹配
    • {path:'*',component:notFoundVue}

多视图

  • 以前可以一次放一个坑 对应一个路由和显示一个组件
    • 一次行为 = 一个坑 + 一个路由 + 一个组件
    • 一次行为 = 多个坑 + 一个路由 + 多个组件
  • components 多视图 是一个对象 对象内多个key和value
    • key 对应视图的name属性
    • value 就是要显示的组件对象
  • 多视图name
    • <router-view></router-view> ->name就是default
    • <router-view name="xxx"></router-view> ->name就是xxx

嵌套路由

  • 用单页去实现多页应用 复杂的嵌套路由
  • 开发中一般会需要使用
  • 视图包含视图
  • 路由父子及关系路由

    //其组件内包含着第一层的router
    {
        name:'music',
        path:'/music',
        component:Music,
        children:[ //子路由的path /就是绝对路径  不/就是相对路径
            {name:'music.oumei',path:'oumei',component:Oumei},
            {name:'music.guochan',path:'guochan',component:Guochan}
            //name:'music_oumei',格式不固定,只是为了表明父子级关系
        ]
    }

vue-resource(了解)

  • 可以安装插件,早期vue团队开发的插件
  • 停止维护了,作者推荐使用
  • options预检请求,是当浏览器发现跨域+application/json的请求,就会自动发起
  • 并且发起的时候携带了一个content-type的头

axios

  • 中文文档1
  • 中文文档2
  • post请求的时候,如果数据是字符串 默认头就是键值对 否则是对象就是application/json
  • this.$axios.get(url,options)
  • this.$axios.post(url,data,options)
  • this.$axios.get(url,options)
  • opions:{params:{id:1},headers:{'content-type':'xxx'},baseURL:''}
  • 全局默认设置 Axios.default.baseURL='xxx'
  • 针对当前这一次请求的相关设置

如何练习

  • 1:路由核心
    • 路由基本使用
    • 任选一种路由参数的方式(查询字符串)
    • 404(路由匹配规则)
    • 路由嵌套
    • 编程导航
  • 2:http请求
    • axios 发起get/post请求(300)
    • axios挂载属性的方式 Vue.prototype.$axios=Axios
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • vue-cli搭建项目 确保安装了node与npm 再目标文件夹下打开终端 执行cnpm i vue-cli -g...
    Akiko_秋子阅读 3,211评论 1 22
  • 有一天晚上,中山区区长谷铁请我和陈建祥喝酒,酒喝到半夜才结束。 我喝了很多酒,林大勇喝得更多,大勇的车只好由我开。...
    文人一ke阅读 228评论 0 0
  • 最近学校经常停水,没了自来水,宿舍楼的洗澡房要炸锅了。洗澡房的热水成为大家洗澡刷牙洗脸的唯一水源,每个人手上一个...
    伯鱼阅读 312评论 0 1
  • 最近忙着搬家,整理收纳,刷淘宝买东西,很充实。终于搬的差不多了,计划本周一入住。妈妈和婆婆开始忙活开了,要按规矩来...
    恬隆阅读 348评论 5 4