多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ### JavaScript #### 基本数据类型 分为原始数据类型和对象数据类型。 原始数据类型分为:字符串,数值,布尔,`null`,`undefined`以及`Symbol`。 #### 入参为`5`,不使用`for`循环输出`[1,2,3,4,5]` 使用递归 ```js let show = function(param){ let arr = []; return function(){ arr.unshift(param); param--; if(param>0){ arguments.callee() } return arr; }() } console.log(show(5)) ``` #### 原型链,对象,构造函数之间的联系 #### `DOM`事件绑定的几种方式 * 在`dom`元素中直接绑定; * 在`javascript`中绑定; * 绑定事件监听函数,`addEventListener` or `attachEvent` #### DOM事件的target和currentTarget #### requestAnimationFrame的兼容写法 ```js let raf = (function(){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || function(callback){ winow.setTimeout(callback,1000/60); } })() ``` ### CSS #### 盒模型(I) #### `box-sizing`的应用场景 #### 弹性`flex`布局(I) #### 未知宽高的元素怎么上下左右垂直居中 * `flex`布局 * `transform:translate` #### `postcss`(II) ### HTTP #### http协议常用的状态码 ### webpack #### `webpack`入口文件怎么配置,多个入口文件怎么分割 #### `babel`插件 * babel-core * babel-pollyfill ### vue #### `vue`实现双向绑定的原理(II) > 发布订阅的设计模式 `vue.js` 是采用数据劫持结合发布者-订阅者模式的方式,通过`Object.defineProperty()`来劫持各个属性的`setter`,`getter`,在数据变动时发布消息给订阅者,触发相应的监听回调。 具体步骤: 第一步:需要observe的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter和getter 这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化 第二步:compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图 第三步:Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是: 1、在自身实例化时往属性订阅器(dep)里面添加自己 2、自身必须有一个update()方法 3、待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退 #### `vue`常用的指令(I) #### `vue`的生命周期 * 创建前/后 * 载入前/后 * 更新前/后 * 销毁前/后 ### 字符串拷贝N次 `xxxx.repeat(n)`