vue 安装
1. 安装 node,git2. git bash3. 淘宝 NPM 镜像npm install -g cnpm --registry=https://registry.npm.taobao.org
4. 全局安装 vue-clicnpm install -g vue-cli
5. 创建一个基于 webpack 模板的新项目vue init webpack my-project
6. 模板
Project name 项目的名称,括号里面是你创建模板时候的名称,如果想要用这个名称直接按 Enter 键就可以了,或者是自己写一个新名字。
Project description 项目的描述,自己写,不是必填项,然后按下 Enter 键。
Author zhang 项目作者,自己写,不是必填项,然后按下 Enter 键。
vue build 是否安装编译器,到选择 Vue build 方式时,有两种方式,第一种为 standaloe 方式,第二种 runtime-only 为 runtime 方式。 runtime 打包的是 /node_modules/vue/dist/vue.common. ...
ES 中模拟 class
1.创建一个空对象 2.把构造函数的 prototype 属性,最为空对象的原型 3.this 赋值为这个空对象 4.执行函数 5.如果函数没有返回值,返回 this
123456789101112131415function Constructor(fn,args) { var _this=Object.create(fn.prototype); var res=fn.apply(_this,args); return res?res:_this; } function Person(name,age) { this.name=name; this.age=age; } Person.prototype.say=function() { console.log("我叫"+this ...
同步变成异步使用promise
123456789101112function createAsyncTask(syncTask) { return Promise.resolve(syncTask).then(syncTask => syncTask());}createAsyncTask(() => { console.log('我变成了异步任务!!!'); return 1 + 1;}).then(res => { console.log(res);});console.log('我是同步任务!');
结果:
123同步任务!我变成了异步任务!!!2
let 和 const
let与 var 的区别,只作用在当前块级作用域内12345678for (let i = 0; i < 3; i++) {};console.log(i);//undefinedfor (var i = 0; i < 3; i++) { console.log(i);//0,1,2};console.log(i);//3
使用let或者const声明的变量 不能在被重新声明1234567var dad = '我是爸爸!';console.log(dad);var dad = '我才是爸爸!';console.log(dad);let son = '我是儿子';let son = '我才是儿子';// Identifier 'son' has already been declared
不存在变量提升12345 ...
jquery 绑定事件区别
jQuery 中提供了四种事件监听方式,分别是 bind、live、delegate、on,对应的解除监听的函数分别是 unbind、die、undelegate、off。
bind$(selector).bind(event,data,function)
event:事件,必选,一个或多个事件; data:参数,可选; fn:绑定事件发生时执行的函数,必选。
bind()是最直接的、存在最久的绑定方法。
优点:这个方法提供了一种在不同浏览器中对事件处理的兼容性解决方案。
缺点:它会绑定事件到所有的目标元素上,有一个绑一个,在页面上的元素不会动态添加的时候使用它没什么问题。
但如果列表中动态增加一个“列表元素 5”,点击它是没有反应的,必须再 bind 一次才行。也就是说,它不会绑定到在它执行完后动态添加的那些元素上。
当元素很多时,会出现效率问题。当页面加载完的时候,你才可以进行 bind(),所以可能产生效率问题。
live$(selector).live(event,data,function)
这个方法用到了事件委托的概念来处理事件的绑定。
优点:这里仅有一次的事件绑定 ...
JSONP跨域封装
封装 JSONP随机生成函数名是为了确保唯一性。因为 JSONP 的回调实际上是创建了一个临时的函数供加载的 js 调用。如果回调函数不是随机的,那在连续 JSONP 请求时,后发出的请求回调函数会覆盖掉之前的,返回的数据会出问题。
12345678910function getJSONP(url, callback) { if (!url) { return; } // 声明数组来随机生成函数名 var a = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]; var r1 = Math.floor(Math.random() * a.length); ...
XMLHttpRequest封装
XMLHttpRequest123456789101112131415161718192021222324252627282930// 封装xhr对象,兼容各个版本 function createXHR() { // 判断游览器是否将XMLHttpRequest作为本地对象实现,针对IE7,Firefox。opera等 if (typeof XMLHttpRequest != "undefined") { return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined") { // 将所有可能出现的ActiveXObject版本放在一个数组中 var xhrArr = ["Microsoft.XMLHTTP", "MSXML2.XMLHTT ...
xmlhttprequest
创建 xmlhttprequest 对象
123var xhr = createXHR();var data = null;console.log(xhr);
写在 2 上面响应 XMLHttpRequest 对象状态变化的函数,onreadystatechange 在 readystatechange 属性发生改变时触发
123456789101112xhr.onreadystatechange = function () { // 异步调用成功,响应内容解析完成,可以在客户端调用 if (xhr.readyState == 4) { //xhr的status属性>=200时才表示真正的异步调用成功;xhr的status属性===304时表示请求资源没有被修改,可以使用浏览器的缓存,也就是表示之前请求成功过,而且请求的资源距离上次请求没有发生改变,可以使用缓存。 if ((xhr. ...
LESS 样式
BEMbem 规则: > 表示下一个层级 ^ 表示上一个层级 + 表示紧邻的兄弟元素 . 后面的 - 相当于 less 嵌套规则里的 & 表示前一个类的所有前缀 { } 用来写元素包含的文本
$表示自动顺序补齐,@加数字:表示从哪个开始。 使用$时,如果已经有 1,要从 2 开始,就加上@2 这里就是$@2 () 会把里面的所有内容视为一个整体,就不用关心里面的元素到底有多少层级,就不用^来提多次层级。
1header.header>.-item{$@2}*3|bem
LESS12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#layout(@name) { & when(@name=header) { height: 60px; #bg-color(black); } & when(@name ...
jq实现放大消失动画
123456789101112131415161718192021$(function () { $('#box1').click(function () { var $this = $(this); $this .css({ position: 'absolute', top: $this.position().top, left: $this.position().left }) .animate({ opacity: 'hide', width: $this.width() * ...