1.模板语法-动态参数...这里的attributeName会作为一个JavaScript表达式被动态求值,find得到的值会作为最终的参数。例如,如果你的Vue实例有一个值为“href”的数据属性attributeName,那么这个绑定将等同于v-bind:href。...在此示例中,当eventName的值为“focus”时,v-on:[eventName]将等同于v-on:重点。约束1、动态参数期望获取的是字符串,异常情况下取值为null。这个特殊的null值可以显式地用于删除绑定。任何其他非字符串值都会触发警告。2.因为一些字符,如空格和引号,在HTML属性名称中是无效的,解决方法是使用不带空格或引号的表达式,或者用计算属性替换这种复杂的表达式。...3.在DOM中使用模板时(直接在aHTML文件写模板),同时你也需要避免使用大写字符命名键名,因为浏览器会强制所有属性名小写::[someattr]`。除非实例中有一个名为“someattr”的属性,否则代码将不起作用。-->...2.mixins如果你的项目足够复杂,或者需要多人协同开发,在app.vue中会写很多代码量大,结构复杂,难以维护。这时候可以使用Vue.js的mixedmixins,将不同的逻辑分离到不同的js文件中。user.jsexportdefault{data(){return{userInfo:null}},方法:{getUserInfo(){$.ajax('/user/info',(data)=>{this.userInfo=data;});}},mounted(){this.getUserInfo();然后在app.vue中混合:app.vue:importEmitterfrom'../mixins/emitter.js'exportdefault{name:'componentA',mixins:[Emitter],methods:{handleClick(){this.broadcast('componentB','on-message','HelloVue.js')},},}//B.vueexportdefault{name:'componentB',created(){this.$on('on-message',this.showMessage);},methods:{showMessage(text){window.alert(text);}}}同样,如果B和A通信,在B的dispatch方法中调用,使用$on来监听A中的事件,因为是作为mixins的导入,methods中定义的dispatch和broadcast方法会混入到组件中,所以可以通过this.dispatch和this.broadcast来使用。这两个方法接收三个参数,第一个是组件的name值,用于递归向上或向下遍历找到对应的组件,第二个和第三个是上面分析的自定义事件的名称和要传递的数据。可以看出,在调度中,t通过while语句,不断向上遍历和更新当前组件的父组件实例(即当前调用该方法的组件的上下文)(变量parent为父组件实例),直到定义的componentName匹配上级组件的name选项,循环结束,在找到的组件实例上调用$emit方法触发自定义事件eventName.broadcast方法类似,只是向下遍历查找。*与Vue.js1.x相比,有以下不同:附加组件的名称需要作为第一个参数传入;没有冒泡机制;第三个参数传递的数据只能是一个(多个可以传入一个对象),Vue.js1.x可以传入多个参数,当然你可以修改emitter.足够的*