如何改造现有文件为 CMD 模块
来源:互联网 发布:台湾谈大陆2016网络 编辑:程序博客网 时间:2024/04/30 10:25
参考cmd官方文档:http://seajs.org/docs/#docs
改造主流模块
这里指的是 jQuery、Moment、Backbone、underscore 等业界主流模块,这些模块一般都有对 AMD 和 CommonJS 的支持代码,例如 jQuery 源文件的最后几行:
if ( typeof module === "object" && module && typeof module.exports === "object" ) { module.exports = jQuery;} else { window.jQuery = window.$ = jQuery; if ( typeof define === "function" && define.amd ) { define( "jquery", [], function () { return jQuery; } ); }}
还有 Backbone 里:
var Backbone;if (typeof exports !== 'undefined') { Backbone = exports;} else { Backbone = root.Backbone = {};}
对于有这些兼容代码的,只需要去掉 define.amd 的支持,或是直接包装上 define 就可以了。
define(function(require, exports, module) { // code here ...});
如果没有模块化的兼容代码,有时候需要手动引入依赖,以及暴露对应的接口。
define(function(require, exports, module) { var $ = require('$'); // code here ... module.exports = Placeholders;});
现有的 JS 文件
对于一些现有的普通 JS 文件,相对简单的多,参考 CMD 的书写规范,把那些暴露到全局命名空间的接口用 CMD 的方式进行改造就可以了。
比如现有文件 util.js 。
window.util = window.util || {};util.addClass = function() { window.css();};util.queryString = function() {};
改为
define(function(require, exports, module) { // 引入依赖 var css = require('css'); util.addClass = function() { css(); }; util.queryString = function() {}; // 暴露对应接口 module.exports = util;});
改造 jQuery 插件
这也是一个经常遇到的问题,推荐以下的包装方式:
// jquery-plugin-abcdefine(function(require, exports, module) { var $ = require('$'); // 插件的代码 $.fn.abc = function() {};});
这样的改造方式实际上是强化了原有的 $
对象(而不是重新包装出一个新的 $
),在实际调用时,可以用下面的方式:
seajs.use(['$', 'jquery-plugin-abc'], function($) { // $ 有了 jquery-plugin-abc 所提供的插件功能 $.abc();});
0 0
- 如何改造现有文件为 CMD 模块
- 如何改造现有文件为 CMD 模块
- 简单分页插件simplePagination改造为CMD模块
- jQuery焦点图插件改造为CMD模块
- 用grunt下载jquery cmd文件,手动构建jquery为cmd模块
- 将现有程序改造为OLE服务器供包容器(word,ppt)使用
- 将现有程序改造为OLE服务器供包容器(word,ppt)使用
- 通达OA 改造OA手机短信系统为通用模块
- 如何将现有的asp.net改造成为asp.net ajax
- 改造现有工程文件目录结构。vs2005下实验。尝试使用单一resolution
- Qt如何添加现有的ui文件
- web前端.js--seajs--把easyUI改造成功标准CMD模块的方法
- web前端.js--seajs--把jquery改造标准CMD模块的方法
- 如何使用cmd打开文件
- 如何将一个应用改造为Azure云服务
- 离散型工厂如何改造为智能工厂?
- 如何将单体应用改造为微服务
- sql2000 如何把现有数据 转化为Insert into SQL
- servlet配置
- MAVEN web 创建
- Prism4 文档翻译系列---第3章 管理组件间的依赖关系
- Eclipse修改控制台背景色
- CSS引入样式
- 如何改造现有文件为 CMD 模块
- cocos Creator
- 使用@ControllerAdvice实现发生异常时返回json错误信息
- LeetCode 482. License Key Formatting
- 为什么说coarseGrainedExecutorBackend要通信的对象driverUrl是driverEndpoint而不是ClientEndpoint
- Print binary tree
- 南邮数据结构实验三---图的基本运算及飞机换乘次数最少问题
- Java Web项目中编写定时任务
- 采访:关于Go语言和《Go Web编程》