- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何改造现有文件为 CMD 模块
如何改造现有⽂件为 CMD 模块
如何改造现有⽂件为 CMD 模块
经过⼀段考察,我们终于要在项⽬中引⼊模块机制和 Sea.j s 了,那么如何将现有 ⽂
件改造成 CMD 模块就成了重要 问题。下⾯针对⼀些典型场景来说明包装 ⽅式。
⾸先还是请⼤家详细了解下 CMD 模块定义规范,只要洞悉事物 定义和本质,⼀切
问题可迎刃⽽解。
改造主流模块
这⾥指 是 j Query 、Moment 、Backbone 、underscore 等业界主流模块,这些模块⼀般
都有对 AMD 和 CommonJS ⽀持代码,例如 j Query 源⽂件 最后⼏⾏:
if ( typeof module === object module typeof module.exports
} else { window .jQuery = window .$ = jQuery; if ( typeof defi
define( jquery, [], function () { return jQuery; } );
}
}
还有 Backbone ⾥:
v r B ckbone;if (typeof exports !== undefined) {
B ckbone = exports;
} else {
B ckbone = root.B ckbone = {};
}
对于有这些兼容代码 ,只需要去掉 define .amd ⽀持,或是直接包装上 define 就
可以了。
define(function(require, exports, module) { // code here ...});
如果没有模块化 兼容代码,有时候需要⼿动引⼊依赖,以及暴露对应 接⼜。
define(function(require, exports, module) { v r $ = require($);
module.exports = Pl ceholders;
});
可以参考 cmdj s/gallery ⾥ Gruntfile 对这些主流模块 代码替换⽅式。
现有的 JS ⽂件
对于⼀些现有 普通 JS ⽂件,相对简单 多,参考 CMD 书写规范,把那些暴露到
全局命名空间 接⼜⽤ CMD ⽅式进⾏改造就可以了。
⽐如现有⽂件 util.js 。
window .util = window .util || {};util. ddCl ss = function() { wind
};util.queryString = function() {};
改为:
define(function(require, exports, module) { // 引⼊依赖
v r css = require(css); util. ddCl ss = function() {
css();
}; util.queryString = function() {}; // 暴露对应接⼝
module.exports = util;
});
这⾥不啰嗦,就是基本 CMD 书写规范。实际 改造过程中,情况可以⽐上⾯ 例
⼦要复杂⼀些,具体情况具体解决就⾏。
改造 j Query 插件
这也是⼀个经常遇到 问题,我们推荐以下 包装⽅式:
// jquery-plugin- bcdefine(function(require, exports, module) { v
$.fn. bc = function() {};
});
这样 改造⽅式实际上是强化了原有 对象 (⽽不是重新包装出⼀个新 ),在
实际调⽤时,可以⽤下⾯ ⽅式:
se js.use([$, jquery-plugin- bc], function($) { // $ 有了 jque
$. bc();
});
更多 j Query 插件 包装,可以参考 cmdj s/jquery ⾥ 做法。
⼯具
除了⼿动 ⽅式修改代码外,我们推荐使⽤ Grunt 来进⾏统⼀ 改造,官⽅也通过
Grunt 改造了很多主流模块和 j Query 插件,具体 操作⼿册见 引⼊ CMD 模块指南 。
你可以在 cmdj s/gallery 和 cmdj s/jquery 中找到具
文档评论(0)