Modular JS
文章平均质量分 89
魔豆爸
擅长Web开发前端技术,具有多种浏览器下开发经验。精通 JavaScriptAJAX编程熟练使用主流JS库。手写JS能力强,运用无干扰的JS思想进行开发。熟练使用CSS及DHTML,W3C标准的推广和贯彻者。熟悉Java语言,MVC设计模式,StrutsSpring架构
展开
-
RequireJS入门(一)
RequireJS由James Burke创建,他也是AMD规范的创始人。 RequireJS会让你以不同于往常的方式去写JavaScript。 你将不再使用script标签在HTML中引入JS文件,以及不用通过script标签顺序去管理依赖关系。 当然也不会有阻塞(blocking)的情况发生。好,以一个简单示例开始。 新建一个目录,结构如下 ...原创 2012-05-22 16:41:39 · 142 阅读 · 0 评论 -
UMD和ECMAScript模块
一、UMD:AMD 和CommonJS的糅合 前面花了很长的篇幅介绍了两大类模块规范,CommonJS(Modules/Modules/Wrappings)及AMD。 我们知道Modules/Wrappings是出于对NodeJS模块格式的偏好而包装下使其在浏览器中得以实现。 而Modules/Wrappings的格式通过某些工具(如r.js)也能运行在NodeJS中。事实...原创 2012-03-19 15:57:59 · 210 阅读 · 0 评论 -
JavaScript模块化开发库之SeaJS
SeaJS由国内的牛人lifesinger开发。目前版本是1.1.1,源码不到1500行,压缩后才4k,质量极高。 这篇会讲述SeaJS的一些基本用法,不会面面俱到,但会就个人的理解讲述官方文档没有提到的一些细节。 一、SeaJS的全局接口 SeaJS向全局公开了两个标识符: seajs 和 define。 如果你的项目中已经用了标识符seajs,又不想改。这时Se...原创 2012-03-29 14:05:33 · 121 阅读 · 0 评论 -
RequireJS和Backbone的集成
有朋友留言RequireJS如何与Backbone集合使用。 这两个轻量级的库合起来使用确实能够方便的构建大型应用程序。RequireJS填补了前端模块化开发的空缺,Backbone采用MVC的分层结构很好的将程序各个部分解耦。Backbone目前不支持AMD(曾经支持过),那么它只能作为普通的JS文件使用。它全局的标示符是Backbone,它还依赖于underscore,unde...原创 2013-05-16 07:15:49 · 119 阅读 · 0 评论 -
基于CommonJS Modules/2.0的实现:BravoJS
今天看见一个基于CommonJS Modules/2.0的实现:BravoJS。Modules/2.0目前还不是CommonJS的当前规范(Current Specifications),甚至连建议或开发中的标准(Proposals and standards in development)也都不是。Modules/2.0的模块写法大概如下1,定义模块用module标识符,它有一个...原创 2013-05-16 16:53:06 · 105 阅读 · 0 评论 -
Backbone.sync-将模型同步到服务器
默认情况下,只要保存模型(Model/Collection的sync方法),Backbone就会Ajax请求把模型持久化到服务器端。 有以下几点sync方法把model持久化存储到服务器端,你可以重写该方法的实现方式,它默认使用jQuery或zepto的$.ajax整个Backbone,只有Model和Collection的sync会调用Backbone.sync请求类型...2014-05-05 10:52:21 · 184 阅读 · 0 评论 -
Backbone模型
现在进入最关键的组件 - 模型。模型用来存储应用的所有数据,以及直接和数据操作相关的逻辑。Backbone中的模型类是Backbone.Model,它包含了数据存储,数据验证,以及数据发生变动时触发相关动作。一般可以把模型与后端绑定(ORM),模型改变的同时向后端发起请求(Ajax)更新数据(数据库)。也有把模型和DOM元素绑定,模型改变时更新HTML界面。 一、模型可以直接n...2014-05-05 11:09:43 · 199 阅读 · 0 评论 -
软件复用的几种方式
软件复用的好处有很多 一、提高工作效率这条自不必说,比如在项目A中你写一个Ajax模块,A完工后启动了项目B,在B中就可以直接复用项目A的模块了。一个可复用的软件可以为将来节省费用,被服用的频率越高,组件的初始开发成本就越低。 二、提高软件质量可复用的软件总比不能复用的有更多的质量保障。因为可复用的软件在不断的复用过程中把一些bug,缺陷都很快的排除了。因此可复用的软件...2014-06-20 05:39:17 · 835 阅读 · 0 评论 -
Backbone的写类方式
从两个角度去讨论Backbone的写类方式Backbone内部的写类方式,Backbone自身的类如Model、Collection、View等是如何定义的Backbone外部的写类方式,如何使用Backbone提供的类来定义自己的类一、Backbone内部的写类方式Backbone提供给客户端程序员的类都是通过 构造函数+原型 的方式写的,Backbone.Model的代...2014-04-22 07:58:48 · 112 阅读 · 0 评论 -
RequireJS进阶(三)
进阶的前面两篇讲述了r.js如何通过命令行把所有的模块压缩为一个js文件或把所有的css压缩为一个css文件。其中包括一些压缩配置参数的使用。 但以上两种方式有几个问题1、通过命令手动配置压缩选项显得很呆板2、都仅合并为一个文件对于最后只生成一个文件的库来说,这种方式并无不妥。比如jQuery,它的工程中小文件有20多个,打包后只有一个jquery-1.x.x.js。对于多数...原创 2012-07-16 17:32:10 · 100 阅读 · 0 评论 -
RequireJS进阶(二)
这一篇来认识下打包工具的paths参数,在入门一中就介绍了require.config方法的paths参数。用来配置jquery模块的文件名(jQuery作为AMD模块时id为“jquery”,但文件名可通过paths配置可以不必是“jquery.js”,而是带有版本的如“jquery-1.7.2.js”)。 在入门一中,jquery-1.7.2.js和main.js都在一个域中,即把jq...原创 2012-07-12 12:04:55 · 103 阅读 · 0 评论 -
RequireJS进阶(一)
为了应对日益复杂,大规模的JavaScript开发。我们化整为零,化繁为简。将复杂的逻辑划分一个个小单元,各个击破。这时一个项目可能会有几十个甚至上百个JS文件,每个文件为一个模块单元。如果上线时都是这些小文件,那将对性能造成一定影响。 RequireJS提供了一个打包压缩工具r.js来对模块进行合并压缩。r.js非常强大,不但可以压缩js,css,甚至可以对整个项目进行打包。 ...原创 2012-07-03 18:00:08 · 81 阅读 · 0 评论 -
RequireJS入门(二)
上一篇是把整个jQuery库作为一个模块。这篇来写一个自己的模块:选择器。 为演示方便这里仅实现常用的三种选择器id,className,attribute。RequireJS使用define来定义模块。 新建目录结构如下 这次新建了一个子目录js,把main.js和selctor.js放入其中,require.js仍然和index.html在同一级目录。 ...原创 2012-06-03 19:18:07 · 83 阅读 · 0 评论 -
RequireJS入门(三)
这篇来写一个具有依赖的事件模块event。event提供三个方法bind、unbind、trigger来管理DOM元素事件。event依赖于cache模块,cache模块类似于jQuery的$.data方法。提供了set、get、remove等方法用来管理存放在DOM元素上的数据。示例实现功能:为页面上所有的段落P元素添加一个点击事件,响应函数会弹出P元素的innerHTML。 ...原创 2012-06-04 09:36:36 · 89 阅读 · 0 评论 -
RequireJS 2.0 正式发布
就在前天晚上RequireJS发布了一个大版本,直接从version1.0.8升级到了2.0。随后的几小时James Burke又迅速的将版本调整为2.0.1,当然其配套的打包压缩工具r.js也同时升级到了2.0.1。此次变化较大,代码也进行了重构,层次更清晰可读。功能上主要变化如下: 1,延迟模块的执行。这是一个很大变化,以前模块加载后factory立马执行。性能上肯定有一些损耗。2...原创 2012-06-05 18:13:03 · 79 阅读 · 0 评论 -
拥抱模块化的JavaScript
此篇属于软文,了解的请忽略。 我们再一次被计算机的名词,概念笼罩。 backbone、emberjs、spinejs、batmanjs 等MVC框架侵袭而来。 CommonJS、AMD、NodeJS、RequireJS、SeaJS、curljs等模块化的JavaScript扑面而来。 模块化JavaScript的...2012-02-26 11:09:39 · 116 阅读 · 0 评论 -
JavaScript中模块“写法”
在JavaScript模块到底是什么,能用代码具体展现一下吗? 其实上一篇已经写了一段事件模块代码event = function() { // do more return { bind: function() {}, unbind: function() {}, trigger: function() {} }; }(); 这能代...2012-02-27 14:06:30 · 102 阅读 · 0 评论 -
JavaScript在服务器端的模块化
服务器端的JSer是幸运的,它有NodeJS,NodeJS遵循了一个称为CommonJS的规范。CommonJS其中就有对写模块的标准化。当然模块化只是其中的一部分而已。具体来说NodeJS实现了 Modules/1.0Promises/B (http://github.com/kriskowal/q)Promises/D (https://githu...2012-02-28 07:20:46 · 133 阅读 · 0 评论 -
NodeJS模块格式在浏览器中的尝试
我们知道NodeJS有一套简洁的格式写模块,它遵循的就是 Moudles。 浏览器里的JavaScript呢? 尽管语言本身暂不支持模块,但可以用现有的API包装一个写法出来。 毫无疑问,首先想到的是NodeJS的module格式,它是最好的效仿对象。因为前后端有一个统一的方式写JS模块岂不乐哉! 但一开始就有碰到一些难题 1,服务器端JS模块文件就在本地,...2012-02-29 07:32:11 · 148 阅读 · 0 评论 -
AMD:浏览器中的模块规范
前面提到,为实现与NodeJS相同方式的模块写法,大牛们做了很多努力。 但由于浏览器环境不同于服务器端,它的模块有一个HTTP请求过程。这个请求过程多数使用script tag,script tag默认的异步性导致很难实现与NodeJS一模一样的模块格式。 Modules/Wrappings 使得实现变为现实。虽然和NodeJS的模块写法不完全一致,但也有很多相似之处,使得熟悉N...2012-03-01 08:07:23 · 215 阅读 · 0 评论 -
Backbone事件模块
事件模块Backbone.Events是Backbone的核心,Model、Collection、View都依赖它。此外,事件模块的所有方法都挂在了全局的Backbone上,如果你的代码中需要用到自定义事件(实现观察者模式),可以直接使用它。 标示符Events是内部的一个引用,为讨论方便,这里也省去了前缀Backbone,这篇文章会从以下几个点分析Events APIE...2014-04-29 13:58:46 · 141 阅读 · 0 评论