vue随笔

随笔

1.方法是和实例绑定的, 方法和属性的区别

2.动态绑定classstyle

3.computed计算属性,有缓存 set和get

4.let和var 块级作用域, for循环 i经过块级改了,但是函数有作用域,所以用闭包

5.v-on什么时候能省略方法的() 1.事件监听的时候,2没有参数、

6.组织事件冒泡@click.stop(详细参考vue修饰符.md)

7.v-if 需要有key来让虚拟dom区别数据显示

8.key的作用是高效的更新虚拟dom

9.数组.push(“aaa”,”bbb”,”ccc”)

10.js高阶函数 filter、map、reduce(function(前一个值,当前值),默认值)

11.脚手架的优势,子传父,监听命名可以用驼峰

12.props传值,可以直接用变量展示,但是如果需要改变值,则要放到data里(如果是对象或者数组则可以直接改变值!)

13.具名插槽,让name为left的slot替换 。

14.作用域插槽:父组件替换插槽的标签,但是内容还是由子组件提供。子组件:data template里 slot-scope

15.模块化开发
1.commonJS导出导入模块
module.exports导出 require导入
2.es6
export 导出 还有多种写法,default和class 等 import 导入

16.webpack
webpack要想正常运行,依赖node环境。 node环境为了正常运行很多代码,需要很多包,所以需要npm工具

17.webpack中的entry 和output(中有path需要require(“path”))path.resolve(_dirname,”)

18.package.json dependencies是打包完所依赖的东西,devdependencies是开发过程中需要依赖的包
为什么要有dev.config.js和localdev.config.js? 因为
为什么要用“scripts”省事,还有就是终端默认先选择全局的环境变量,用脚本就会优先使用局部的环境变量

19.webpack loader 是个数组,加载的顺序是从右边开始加载 cssloader styleloader fileloader imgloader moudle 的rule下面 babelloader es6转es5 vueloader
exclude:排除某些文件

20.vue最外层 引用 vue 组件模块,然后再template里放组件用来替换

21.vuecli 不支持适配ie8以下(可以改)

22.this.$router 是vuerouter对象 。 this. $route.params.abc(谁处于活跃对象就拿到谁)

23.mustache语法里不加this

24.路由的懒加载(因为同时放到一个里太大了)

25.路由的动态加载

26当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。

27.new Promise((resolve,reject) => {
$.ajax(function(){
www.baidu.com"},function(){
resolve(callback)
}
}).then()(最好了解一下event loop)

28.Vue.use()其实是执行内部的install

29.所有的组件都继承自Vue类的原型

30.Object.defineProperty(“obj”“id”,“8015”)

31.导航守卫 是从哪里到哪里

32.vue router 传参用query或者params

33.vue router 执行事件用beforeEach

34.router的嵌套 (children)

35.生命周期函数, 在mounted之前才用template替换el,在之后用html替换el 一直执行update,destroy

36.keep-alive activated

37.首页使用path属性记录离开时的路径,在beforerouteleave

38.mixin和组件 create的先后顺序 混入对象的钩子先触发

性能

1.数组渲染,在中间插入元素,加key

2.computed计算属性,有缓存 set和get

3.静态资源压缩合并,如js代码合并,css代码合并,压缩图片等

4.静态资源缓存

5.使用 CDN 让资源加载更快

优化页面渲染:

1)减少HTTP请求;

2)减少DOM操作,多个操作尽量合并在一起执行(DocumentFragment);

3)懒加载(图片懒加载、下拉加载更多);

遵循规范

require 是 AMD规范引入方式
import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法

调用时间

require是运行时调用,所以require理论上可以运用在代码的任何地方
import是编译时调用,所以必须放在文件开头

本质

require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量
import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require
一键三连!