- 博客(40)
- 收藏
- 关注
原创 前端模块化
前端模块化前端模块化在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却
2016-10-23 16:41:08
340
翻译 svn与git区别
1) 最核心的区别Git是分布式的,而Svn不是分布的。能理解这点,上手会很容易,声明一点Git并不是目前唯一的分布式版本控制系统,还有比如Mercurial等,所以说它们差不许多。话说回来Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,
2016-10-10 12:34:04
410
原创 nth-type-of nth-child(n) eq(n)区别
nth-child() inex 1-n nth-type-of() index 1-n jquery eq:()index 0-n-1 p:nth-child(2) 选择器匹配属于表示这个元素要是p标签,且是第二个子元素 :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。 p:nth-chi
2016-09-24 10:37:16
601
原创 小米 muiu
1.git mend git rebase一、基本git rebase用于把一个分支的修改合并到当前分支。假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。$ git checkout -b mywork origin假设远程分支"origin"已经有了2个提交,如图 现在我们在这个分支做一些修改,然后生成两个提交(c
2016-09-01 20:10:17
778
转载 js定义类的方式
1.构造函数法function MyClass(id,age,name){ this.id = id; this.age = age; this.name = name;}
2016-09-01 19:36:43
312
转载 jquery extend实现原理
今天突然分析了一下JQuery中的extend方法实现原理。目的为了提高自己对JQuery的认识,也想了解JavaScript高手是如何编写JS的,如有不足请指正。谢谢!下面是JQuery.extend方法源代码:复制代码代码如下:jQuery.extend = jQuery.fn.extend = function() { var options
2016-08-31 11:39:37
1590
原创 vue MVVM数据绑定
整个 vm 的核心,就是如何实现 observer, directive (parser), watcher 这三样东西通过 observer 对 data 进行了监听,并且提供订阅某个数据项的变化的能力把 template 解析成一段 document fragment,然后解析其中的 directive,得到每一个 directive 所依赖的数据项及其更新方法。比如 v-text
2016-08-19 16:24:49
563
转载 h5 pushState replaceState popState 总结
history.state当前URL下对应的状态信息。如果当前URL不是通过pushState或者replaceState产生的,那么history.state是null。history.pushState(state, title, url)将当前URL和history.state加入到history中,并用新的state和URL替换当前。不会造成页面刷新。
2016-08-16 12:35:33
1897
翻译 promise对象的特点
Promise对象有以下两个特点。(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称Fulfilled)和Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。(2
2016-08-11 10:55:19
1386
转载 jquery事件处理机制
jQuery事件处理机制:事件处理机制1)事件绑订的方式bind(type,fn)2)、绑订方式的简写形式click(function(){});3)、合成事件hover(enter,leave) : 模拟光标悬停事件toggle(fn1,fn2...):模拟鼠标连续单击事件4)、事件冒泡a、获得事件对象//event不再是原始的事件对象
2016-08-10 10:48:35
446
转载 vue双向数据绑定原理
Vue应用的是mvvm框架,view和model分离,然后通过vm双向数据绑定,`div id="app"> {{msg}}div>!-模型->// 原生对象即数据var data = { msg: 'hello!'}// 创建一个 ViewModel 实例var vm = new Vue({ // 选择目标元素 el: '#app',
2016-07-14 18:31:42
3400
原创 js 快速 +冒泡+去重
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一
2016-07-14 17:44:18
1161
原创 jsonp
AJAX 跨域请求 - JSONP获取JSON数据博客分类: Javascript /Jquery / Bootstrap / Web Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据
2016-07-08 16:46:11
317
转载 react
1.哪些组件应该有 State? #大部分组件的工作应该是从 props 里取数据并渲染出来。但是,有时需要对用户输入、服务器请求或者时间变化等作出响应,这时才需要使用 State。** 尝试把尽可能多的组件无状态化。** 这样做能隔离 state,把它放到最合理的地方,也能减少冗余,同时易于解释程序运作过程。常用的模式是创建多个只负责渲染数据的无状态(stateless)
2016-06-27 18:13:00
285
转载 angular 1与angular2区别
1.性能的限制AngularJS当初是提供给设计人员用来快速构建HTML表单的一个内部工具。随着时间的推移,各种特性 被加入进去以适应不同场景下的应用开发。然而由于最初的架构限制(比如绑定和模板机制),性能的 提升已经非常困难了。2.快速变化的WEB在语言方面,ECMAScript6的标准已经完成,这意味着浏览器将很快支持例如模块、类、lambda表达式、 generato
2016-06-24 15:34:54
1359
转载 Commom JS
何为 CommonJS?CommonJS 是一个有志于构建 JavaScript 生态圈的组织。它有一个 邮件列表,有很多开发者参与其中。 整个社区致力于提高 JavaScript 程序的可移植性和可交换性,无论是在服务端还是浏览器端。何为 CommonJS 模块?JavaScript 并没有内置模块系统(反正现在没有),于是 CommonJS 创造了自己的。 传统的
2016-06-20 18:40:10
802
原创 CMD模块写法
CMD 模块定义规范在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范。该规范明确了模块的基本书写格式和基本交互规则。在 CMD 规范中,一个模块就是一个文件。代码的书写格式如下:define(factory);define Functiondefine 是一个全
2016-06-16 16:07:08
1093
转载 AMD模块写法
AMD模块的写法require.js加载的模块,采用AMD规范。也就是说,模块必须按照AMD的规定来写。具体来说,就是模块必须采用特定的define()函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中。假定现在有一个math.js文件,它定义了一个math模块。那么,math.js就要这样写: // math.js defi
2016-06-16 15:35:43
1934
原创 SeaJS与RequireJS的区别
SeaJS与RequireJS的区别 一、遵循的规范不同 RequireJS 遵循的是 Modules/AMD 规范。 SeaJS 遵循的 Modules/Wrappings 规范是 CMD 规范。 区别: 1.对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as
2016-06-16 12:29:24
452
原创 nodejs中的模块
核心模块#显示原文其他翻译纠错Node中有一些模块是编译成二进制的。这些模块在本文档的其他地方有更详细的描述。显示原文其他翻译纠错核心模块定义在node源代码的lib/目录下。显示原文其他翻译纠错require()总是会优先加载核心模块。例如,require('http')总是返回编译好的HTTP模块,
2016-06-12 12:00:29
358
转载 nodejs中exports与module.exports的区别
原文:http://www.hacksparrow.com/node-js-exports-vs-module-exports.html你肯定非常熟悉nodejs模块中的exports对象,你可以用它创建你的模块。例如:(假设这是rocker.js文件)exports.name = function() { console.log('My name is Lemmy Kil
2016-05-31 10:56:39
298
原创 jquery插件
分析三:插件接口jQuery的主体框架就是这样,但是根据一般设计者的习惯,如果要为jQuery或者jQuery prototype添加属性方法,同样如果要提供给开发者对方法的扩展,从封装的角度讲是不是应该提供一个接口才对,字面就能看懂是对函数扩展,而不是看上去直接修改prototype.友好的用户接口,jQuery支持自己扩展属性,这个对外提供了一个接口,jQuery.fn.ext
2016-05-25 15:19:55
278
原创 分析二:链式调用
分析二:链式调用 通过简单扩展原型方法并通过return this的形式来实现跨浏览器的链式调用。利用JS下的简单工厂模式,来将所有对于同一个DOM对象的操作指定同一个实例。 实现链式的基本条件就是实例this的存在,并且是同一个aQuery.prototype = { init: function() { return this;
2016-05-25 15:06:08
395
原创 分析一:jQuery的无new构建
JavaScript是函数式语言,函数可以实现类,类就是面向对象编程中最基本的概念var aQuery = function(selector, context) { //构造函数}aQuery.prototype = { //原型 name:function(){}, age:function(){}}var a = new aQue
2016-05-25 14:56:51
851
原创 Jquery中each的三种遍历方法
1、选择器+遍历$('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象});2、选择器+遍历$('div').each(function (index,domEle){ index就是索引值 domEle 表示获取遍历每一个dom对象});
2016-05-25 12:23:20
612
原创 gulp
1、gulp的安装首先确保你已经正确安装了nodejs环境。然后以全局方式安装gulp:npm install -g gulp全局安装gulp后,还需要在每个要使用gulp的项目中都单独安装一次。把目录切换到你的项目文件夹中,然后在命令行中执行:npm install gulp如果想在安装的时候把gulp写进项目package.json文件的依赖中,则可以加上--s
2016-05-24 17:46:03
7455
转载 js数组去重
面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项。据我所知,百度、腾讯、盛大等都在面试里出过这个题目。 这个问题看起来简单,但是其实暗藏杀机。 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解。 我总共想出了三种算法来实现这个目的:Array.prototype.unique1 = function(){ var n = []
2016-04-22 18:05:05
351
原创 块级元素和内联元素区别
在标准文档流里面,块级元素具有以下特点:①总是在新行上开始,占据一整行;②高度,行高以及外边距和内边距都可控制;③宽带始终是与浏览器宽度一样,与内容无关;④它可以容纳内联元素和其他块元素。行内元素的特点:①和其他元素都在一行上;②高,行高及外边距和内边距部分可改变;③宽度只与内容有关;④行内元素只能容纳文本或者其他行内元素。不可以设置宽高,其宽度随着内容增加,高度随字体大
2016-04-18 20:40:42
346
原创 js动态创建json对象
{ "name":"test","table":["date:"2016-10-10","age":"10"],"array":[0,1,2]}var json={ "name":"test","table":["date:"2016-10-10","age":"10"],"array":[0,1,2]}
2016-04-16 09:27:12
678
转载 理解jquery的$.extend()、$.fn和$.fn.extend()
jQuery为开发插件提拱了两个方法,分别是:jQuery.fn.extend();jQuery.extend();jQuery.fnjQuery.fn = jQuery.prototype = { init: function( selector, context ) {//….//……};原来 jQuery.fn = jQuery.prototyp
2016-04-15 22:48:04
291
原创 js正则表达式
1."^[0-9]*[1-9][0-9]*$" //正整数 var t="^[0-9]*[1-9][0-9]*$"; t.test("被检查的字符串");如果验证通过返回true
2016-04-15 21:10:46
285
原创 web前端笔试
1.列举不同的清除浮动的技巧,并指出它们各自适用的使用场景1.使用空标签清除浮动。这种方法是在所有浮动标签后面添加一个空标签定义css clear:both.弊端就是增加了无意义标签。2.使用overflow。给包含浮动元素的父标签添加css属性overflow:auto;zoom:1;zoom:1用于兼容IE6。3.使用after伪对象清除浮动。该方法只适用于非IE浏览器。具体写法可
2016-04-15 18:01:17
406
原创 CSS选择器的权重与优先规则
1.内联>内部>外部2.!important >第一等>第二等>第三等>第四等第一等:代表内联样式,如: style=””,权值为1000。第二等:代表ID选择器,如:#content,权值为100。第三等代表类,伪类(目标伪类、状态伪类、结构伪类、)和属性选择器,如.content,权值为10。第四等:代表类型选择器和伪元素选择器(first-line,:
2016-04-15 17:26:48
307
原创 特征闭包的三个
闭包有如下应用特征: 1.局部变量:在函数中定义有共享意义的局部变量(定义成全局变量会造成全局污染); 2.内嵌函数:在函数中申明有内嵌函数,内嵌函数对函数中的局部变量进行访问; 3.外部使用:函数向外返回此内嵌函数,外部可通过此内嵌函数持有并访问申明在函数中的局部变量,而此变量在外部是通过其他路径无法访问的;
2016-04-02 12:00:45
1207
原创 简要描述javascript中的作用域链
任何一段Javascript代码都对应一个作用域链,作用域链中存放一系列对象,代码中申明的变量将作为对象的属性而存放。 在javascript的顶层代码中,作用域链由一个全局对象组成,当定义一个函数时,它保存一个作用域链,作用域链上有两个对象,一个是函数对象,一个是全局对象。 每当一个函数被调用时,会创建一个活动对象(也叫上下文对象),函数中的局部变量,将作为该对象的属性存放
2016-04-02 11:42:48
350
原创 JavaScript 中的 this
由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。JavaScript 中函数的调用有以下几种方式:作为对象方法调用,作为函数调用,作为构造函数调用,和使用 apply 或 call 调用。下面我们将按照调用方式的不同,分别讨论 this 的含义。作为对象方法调用在 JavaScript
2016-04-01 17:58:50
355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人