// vue-router中可以使用 routes:[ { path:‘/‘, name:‘index‘, component:()=>import(‘./index‘) } ] // 这种写法可以让componet 后面跟一个匿名函数里面跟着组件的路径。 // v-cloak 防止表达式闪烁 // v-pre 不编译这个标签 // immediate:true 在使用handler 函数时 可以在初始化时进行监听. watch:{ $route:{ handler:function(newVal,oldVal){ // 监听新数据 // 监听旧数据 }, immediate:true, //监听初始化的数据 deep:true //深度监听数据 } } // 凡是实例上的东西都可以进行监听 // 权限路由 // 路由组件传值 { path:‘/‘, name:‘list‘, component:List, props:true // 子组件在接收值时. 在props里直接直接写传值的数据名字. } // 计算属性也拥有getters 和setters 默认写的是getter,设置setter // 执行可以当此计算属性数据更改的时候去做其他的一些事情.相当于watch这个计算属性 computed:{ xm:{ get:function(){ //getter 当依赖改变后设置值的时候 return this.xing+‘.‘+this.ming }, set:function(val){ //setter 当自身改变后执行 this.xing = val.split(‘.‘)[0], this.ming = val.split(‘.‘.[1]) } } } // 过滤器 // vue 中可以设置filter(过滤器)来实现数据格式化,双花括号插值和v-bind表达式中使用 // 调用过滤器 {{msg|money}} {{msg|money|money}} 可以有多个过滤器进行过滤 Vue.filter(‘money‘,(value)=>{ return ‘$‘+value; }) // mixin 便于混合 后期维护时候进行操作 let obj = { data:{ //混合到data中 也可以混合到methods或者created等等所有vue的实例拥有的方法 xs:‘123‘, xq:‘bk‘ } } let vm = new Vue({ el:‘#box‘, mixins:[obj], data:{ msg:‘hello‘, x:‘s‘ } }) // 虚拟dom的核心思想:对复杂的文档DOM结构,提供一种方便的工具,进行最小化的DOM操作 // 这句话,也许过于抽象,却基于概况了虚拟DOM的设计思想 // 1,提供了一种方便的工具,使得开发效率得到了保证 // 2,保证最小化的DOM操作,使得执行效率得到保证 // 也就是说,虚拟DOM的框架/工具都是这么做的: // 1:根据现有的真实的dom来生成一个完整的虚拟DOM树结构 // 2:当数据变化,或者说页面需要重新渲染时候,会重新生成一个新的完整的虚拟DOM // 3:拿新的虚拟dom来和旧的虚拟DOM做对比(使用diff算法),.得到需要更新的地方之后,更新内容 // 组件化开发: // 优点:代码复用,便于维护 // 划分组件的原则:具有大量的布局结构的,或者是独立的逻辑的,都应该分成组件. // 组件应该拥有的特性:可组合,可重用,可测试,可维护 // 组件可以用script的标签来书写比如: <script type="text/x-template" id="myComponent">//注意 type 和id。 <div>This is a component!</div> </script> Vue.component(‘my-component‘,{ template: ‘#myComponent‘ }) //我们可以为组件的 prop 指定验证规则。如果传入的数据不符合要求,Vue 会发出警告。这对于开发给他人使用的组件非常有用 // 验证主要分为:类型验证、必传验证、默认值设置、自定义验证 props:{ // 类型验证: str:String, //str:[String,Number] 也可以是多种类型 num:{ type:Number, required:true //必填项 }, //默认数据 bool:{ type:Boolean, // default:true, default:function(){ return true } }, // 自定义类型 nums:{ type:Number, validator:function(value){ return value %2 ==0; } } } // slot 匿名插槽 具名插槽 作用域插槽 // 匿名插槽 <com><h1>123</h1></com> // 为了让h1显示出来 let com = { template:‘<div>111<slot></slot></div>‘ } // 具名插槽 根据名字来匹配 <com><h1 slot=‘right‘>123</h1></com> let com = { template:‘<div>www<slot name="right"></slot></div>‘ } // 组件传参可以使用props 路由 非父子组件可以使用props 路由 还有空组件也可以传参 // 从A组件传给B组件 // A组件内容 <template> <div> AAA <button @click=‘send‘>send</button> </div> </template> <script> import bus from "空组件路径" export default{ methods:{ send(){ bus.$emit(‘msg‘,‘hahaha‘); } } } </script> // 在空组件种传参 空组件内容: import Vue from ‘vue‘; export default new Vue(); // B组件 import bus from "空组件路径" export default { created() { bus.$on("msg",(data)=>{ console.log(data); }) } } // 命名路由 // router-link 写在本页面 <router-link to="/">点我显示多个组件</router-link> routes:[ { path:‘/‘, components:{ default:One //One组件 right:Two //组件 } } ] // router-view 显示本页面的路由 显示当前组件的子组件 如果是默认路由的话 直接写router-view 显示当前的组件 <router-view></router-view> <router-view name="right"></router-view> // right是要显示组件的名字
原文:https://www.cnblogs.com/l8l8/p/9409717.html