开发原则:
避免 if 嵌套的层次过深, 形成 "金字塔" 代码
局部变量申明尽可能靠近使用的地方
如有可能, 尽可能用常量
减少控制流变量
拆分超长表达式
函数应该短小, 只做一件事情
把过多的参数封装成类
安装一系列工具
1, 安装 node 环境, 检测 node 安装版本;(安装 node 是会自动安装 NPM)
2, 安装 vue 脚手架工具 vue-cli
3, 引入 jQuery 出错
4,routes 非数组报错
5,component 组件的 name 名称不能与文件名一样
6,eslint 限制的编码错误, 注意分号, 空格
7,CSS 引入文件路径错误, 依赖缺失
8, 项目启动报错, 端口占用
9, 兼容 IE9,10,11 遇到的问题
10, 浏览器对 es6 的支持问题
11, 深入了解 ES6--promise 异步编程
我们在写前端代码时, 经常会对 dom 做事件处理操作, 比如点击, 激活焦点, 失去焦点等; 再比如我们用 Ajax 请求数据, 使用回调函数获取返回值. 这些都属于异步编程.
也许你已经大概知道 JavaScript 引擎单线程的概念, 那么这种单线程模式和异步编程有什么关系呢?
JavaScript 引擎中, 只有一个主线程, 当执行 JavaScript 代码块时, 不允许其他代码块执行, 而事件机制和回调机制的代码块会被添加到任务队列 (或者叫做堆栈) 中, 当符合某个触发回调或者事件的时候, 就会执行该事件或者回调函数.
上面这段话的意思可以这样理解, 假设你是一个修仙者, 你去闯一个秘境, 这个秘境就是主线程, 你只能一直深入下去, 直到找到宝物和出口, 而你还有一个自身的储物空间, 这个空间就类似堆栈, 你在储物空间放了很多你可能用到的法宝或者丹药, 这些东西就是回调函数和事件函数, 当你遇到危险或者满足某个条件时, 就可以从储物空间拿出你当前需要的东西.
好吧, 不扯这么远, 下面看正题.
事件模型: 浏览器初次渲染 DOM 的时候, 我们会给一些 DOM 绑定事件函数, 只有当触发了这些 DOM 事件函数, 才会执行他们.
- const btn = document.querySelector('.button')
- btn.onclick = function(event) {
- console.log(event)
- }
来源: http://www.jianshu.com/p/04dfad2d9617