发表于: 2019-10-06 23:21:27
1 802
今日完成的事
完成模块的基本样式和基本逻辑
明日计划的事
多mock点数据来进行测试
收获
遇到这么一个问题,在写 v-model="value" 属性时手误写成了 v-model="this.value" 然后发现页面没有报错但是双向绑定失效,找了很长时间发现多写了一个 this,为什么加了 this 就不可以呢,因为在模板赋值的时候是可以加 this 的,比如 <div>{{this.message}}</div>,那为什么双向绑定不能加 this 呢,我们知道其实 v-model 也是一个语法糖,比如在 input 输入框中它是由 v-bind 和 v-input 组成的一个双向绑定,
三种写法都可以,因为 v-bind 和 v-on 都会把双引号中的内容当做一段 js 代码读取,v-bind 里面出现 this 其实没事也就是 v-bind:value="this.inputVal" 这么写也是没问题的,但是在 v-on 中如果这么写 v-on:input="this.inputVal = $event.target.value" 就不可以了因为这里面不能用 this 关键字会找不到 inputVal 这个属性,所以也就是说 v-model 的属性值中同样不能带有 this。以后在使用双向绑定时一定要注意这一点。
mixin 和 mixins 区别
mixin 用于全局混入,会影响到每个组件实例,通常插件都是这样做初始化的。
虽然文档不建议在应用中直接使用 mixin,但是如果不滥用的话也是很有帮助的,比如可以全局混入封装好的 ajax 或者一些工具函数等等。
mixins 应该是我们最常使用的扩展组件的方式了。如果多个组件中有相同的业务逻辑,就可以将这些逻辑剥离出来,通过 mixins 混入代码,比如上拉下拉加载数据这种逻辑等等。
另外需要注意的是 mixins 混入的钩子函数会先于组件内的钩子函数执行,并且在遇到同名选项的时候也会有选择性的进行合并。
import和require的区别,import和require都是被模块化所使用。
require 是 AMD规范引入方式
import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法
require是运行时调用,所以require理论上可以运用在代码的任何地方
import是编译时调用,所以必须放在文件开头
require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量
import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require
require / exports :
遵循 CommonJS/AMD,只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。
import / export:
遵循 ES6 规范,支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。
通过require引入基础数据类型时,属于复制该变量。
通过require引入复杂数据类型时,数据浅拷贝该对象。
出现模块之间的循环引用时,会输出已经执行的模块,而未执行的模块不输出(比较复杂)
CommonJS模块默认export的是一个对象,即使导出的是基础数据类型
评论