一, 常用指令:
1.v-text:是元素的innerText只能在双标签中使用
2.v-html:是元素的innerHtml,不能包含{{xxx}}
3.v-if:元素是否移除或者插入
4.v-show:元素是否显示或隐藏
5.v-model:双向数据绑定,v-bind是单向数据绑定(内存js改变影响页面)
二,class结合v-bind使用
三, methods和v-on的使用:
1. 绑定事件的方法,
‘v-on:事件名=”表达式||函数名”’
简写:‘@事件名=” 表达式||函数名”’
2.函数名如果没有参数,可以省略() 只给一个函数名称
3.声明组件内函数,在export default这个对象的根属性加上methods属性,其是一个对象-key 是函数名 值是函数体
4.在export default这个对象的根属性加上data属性,其是一个函数,返回一个对象-对象的属性是我们初始化的变量的名称
5.凡是在template中使用变量或者函数,不需要加this
6.在script中使用就需要加上this
四,v-for的使用:
五,父子组件使用(父传子)
七,查看文档的对象分类:
八,子向父组件通信(vuebus)(扩展)
九,过滤器:
Vue.filter(名,fn)
十,获取DOM元素
十一,vue-router
npm i vue-router -S
import VueRouter from 'vue-router';
Vue.use(VueRouter);
let router = new VueRouter({ routes:[ {path:'/home',component:Home} ] });
router:router
十二,命名路由
去北京
去北京
十三,参数router-link
xxx
{ name:'detail' , path:'/detail',组件}
this.$route.query.id
xxx
{ name:'detail' , path:'/detail/:name',组件}
this.$route.params.name
十四,编程导航
拓展:Vue中用this.$router传递参数与取值
十五,重定向和404:
十六,多视图:
1.以前可以一次放一个坑对应一个路由和显示一个组件
-一次行为=一个坑+一个路由+一个组件
-一次行为=多个坑+一个路由+多个组件
2.components多视图 是一个对象 对象内多个key和value
-key对应视图的name属性
-value就是要显示的组件对象
3. 多个识图’’-> name就是default
4. ’’-> name就是xxx
十七,嵌套路由
期组件内包含着第一层router-view
{ name:'music' ,path:'/music', component:Music ,
children:[ 子路由的path /就是绝对路径 不/就是相对父级路径
{name:'music.oumei' ,path:'oumei', component:Oumei },
{name:'music.guochan' ,path:'guochan', component:Guochan }
]
}
十八,vue-resource(了解)
十九,axios
二十,复习
//引入对象
import VueRouter from 'vue-router';
//安装插件
Vue.use(VueRouter); //挂载属性的行为
//创建路由对象 并且配置路由规则
let router = new VueRouter({
routes:[
//一个个对象
{ name:'xxx',path:'/xxx',组件 }
]
});
//将路由对象放入到options中new Vue()
//new vue 启动
new Vue({
el:'#app',
render:c=>c(App),
router
})
import Vue from 'vue';//引入vue
import App from './app.vue';//引入app.vue 用它的内容来替换
//构建vue实例
new Vue({
el:'#app',//渲染内容到目的地
render: h => h(App)//渲染内容
})
-
套路
- 1: 去哪里
- 2: 导航(配置路由规则)
{name:'bj',path:'/beijing',组件A}
- 3: 去了干嘛(在组件A内干什么)
- 在created事件函数中,获取路由参数
- 发起请求,把数据挂载上去
-
参数
- 查询字符串(#/beijing?id=1&age=2)
- 1: 去哪里
- 2: 导航(配置路由规则)
{name:'bj',path:'/beijing',组件A}
- 3: 去了干嘛(在组件A内干什么)
this.$route.query.id||age
- path(#/beijing/1/2)
- 1: 去哪里
- 2: 导航(配置路由规则)
{name:'bj',path:'/beijing/:id/:age',组件A}
- 3: 去了干嘛(在组件A内干什么)
this.$route.params.id||age
-
编程导航
- 一个获取信息的只读对象($route)
- 一个具备功能函数的对象($router)
- 根据浏览器历史记录前进和后台
this.$router.go(1|-1);
- 跳转到指定路由
this.$router.push({ name:'bj' });
-
嵌套路由
- 让变化的视图(router-view)产生包含关系(router-view)
- 让路由与router-view关联,并且也产生父子关系
-
多视图
- 让视图更为灵活,以前一个一放,现在可以放多个,通过配置可以去修改
-
axios:
- 开始:
- 跨域 + 默认的头是因为你的数据是对象,所以content-type:application/json
- 有OPTIONS预检请求(浏览器自动发起)
- 最终:
- 当我们调整为字符串数据,引起content-type变为了www键值对
- 没有那个OPTIONS预检请求
- 总结: 跨域 + application/json 会引起OPTIONS预检请求,并且自定义一个头(提示服务器,这次的content-type较为特殊),content-type的值
- 服务器认为这个是一次请求,而没有允许content-type的头,
- 浏览器就认为服务器不一定能处理掉这个特殊的头的数据
- 抛出异常
- 在node服务器 response.setHeader(“Access-Control-Allow-Headers”,“content-type,多个”);
- formdata的样子: key=value&key=value
-
axios属性关系
- options: headers、baseURL、params
- 默认全局设置(大家都是这么用)
- Axios.defaults-> options对象
- 针对个别请求来附加options
- axios.get(url,options)
- axios.post(url,data,options)
二十一,axios
- 合并请求
- axios.all([请求1,请求2])
- 分发响应 axios.spread(fn)
- fn:对应参数(res)和请求的顺序一致
- 应用场景:
- 必须保证两次请求都成功,比如,分头获取省、市的数据
- 执行特点: 只要有一次失败就算失败,否则成功
二十二,拦截器
- 过滤,在每一次请求与响应中、添油加醋
- axios.interceptors.request.use(fn) 在请求之前
- function(config){ config.headers = { xxx }} config 相当于options对象
- 默认设置 defaults 范围广、权利小
- 单个请求的设置options get(url,options) 范围小、权利中
- 拦截器 范围广、权利大
二十三, token(扩展)
- cookie 和session的机制,cookie自动带一个字符串
- cookie只在浏览器
- 移动端原生应用,也可以使用http协议,1:可以加自定义的头、原生应用没有cookie
- 对于三端来讲,token可以作为类似cookie的使用,并且可以通用
- 拦截器可以用在添加token上
二十四, 拦截器操作loadding
- 在请求发起前open,在响应回来后close
二十五,监视
- watch 可以对(单个)变量进行监视,也可以深度监视
- 如果需求是对于10个变量进行监视?
- 计算属性computed 可以监视多个值,并且指定返回数据,并且可以显示在页面
- 都是options中的根属性
- watch监视单个
- computed可以监视多个this相关属性值的改变,如果和原值一样
- 不会触发函数的调用,并且可以返回对象