JS模块化开发
Javascript社区做了很多努力,在现有的运行环境中,实现"模块"的效果。本文总结了当前"Javascript模块化编程"的最佳实践,说明如何投入实用。
一 js模块化原理
(1)原始写法 :相同功能的放到一起
function m1(){
...
}
function m2(){
...
}
(2)对象写法
var model = new Object({
_count : 1;
m1 : function(){
}
m2 : function(){
}
});
(3)立即执行函数写法
var model = (function(){ var count = 1; var m1 = function(){ return count; }; var m2 = function(aa){ count = aa; }; return { m1 : m1, m2 : m2 }; })(); //调用方式 model.count; //undefined model.m1(); //1 model.m2("aa"); model.m1(); //aa
(4)放大模块
var model = (function(){ var count = 1; var m1 = function(){ return count; }; var m2 = function(aa){ count = aa; }; return { m1 : m1, m2 : m2}; })(); var model = (function(mod){ mod.m3 = function(){ mod.m2(mod.m1()+1); }; return mod; })(model); //调用方式 model.m3(); model.m1();//2
(5)宽放大模块 // 函数立即执行 参数可以为空对象
var cc = (function(mod){
mod.m3 = function(){
alert("dd");
};
return mod;
})(cc||{});
(6)将全局变量引入模块
var model = (function($){
....
})(jquery);
二 、AMD /CMD的区别
先说 RequireJS/seaJS 是一个前端的模块化管理的工具库
AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
1.模块化定义的规范不同,AMD推崇依赖前置,CMD推崇依赖就近。
2.虽然 AMD 也支持 CMD 的写法,同时还支持将 require 作为依赖项传递,但 RequireJS 的作者默认是最 喜欢上面的写法,也是官方文档里默认的模块定义写法。
3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
AMD规范
requiredJs模块定义
-
define('name',[ 'module1', 'module2' ], function(m1, m2){ ... });//模块的名字是文件的名字 也可以取名字 function 里的值对应前面的依赖返回
requiredJs调用:
require( ['foo', 'bar'], function( foo, bar ){ foo.func(); bar.func(); } );
CMD规范
seajs模块定义
define( 'module', ['module1', 'module2'], function( require, exports, module ){
// 模块代码
} ); // 模块id,依赖模块,函数(require,输出,被扩展的)
require 是 factory 的第一个参数。 require( id ); 接受模块标识作为唯一的参数,用来获取其他模块提供的接口;equire.async( id, callback? );require是同步往下执行的,需要的异步加载模块可以使用 require.async 来进行加载;
exports 是 factory 的第二个参数,用来向外提供模块接口。
module 是factory的第三个参数,为一个对象,上面存储了一些与当前模块相关联的属性与方法。
module.id 为模块的唯一标识。
module.uri 根据模块系统的路径解析规则得到模块的绝对路径。
module.dependencies 表示模块的依赖。
module.exports 当前模块对外提供的接口。
参考链接http://blog.chinaunix.net/uid-26672038-id-4112229.html
相关推荐
JavaScript模块化开发库之SeaJS 在Web开发中,JavaScript代码的组织和管理是一个重要的问题。随着项目的复杂性增加,代码的模块化变得至关重要。SeaJS便是一个专注于JavaScript模块化开发的库,它提供了一种在...
在JavaScript开发领域,随着Web应用复杂性的增加,模块化开发成为了不可或缺的一部分。Three.js作为一款流行的3D库,虽然功能强大,但在处理大型项目时,其模块化支持并不完善,尤其是在与现代前端构建工具如Webpack...
JavaScript模块化开发.pdf
JavaScript前端开发模块化教程 在当今的Web开发领域,JavaScript作为客户端编程的首选语言,其重要性不言而喻。...通过本教程的学习,你将能熟练地运用JavaScript模块化开发,打造高效、整洁的前端项目。
本教程主要围绕Web前端的模块化开发展开,利用ES6的语法特性、Node.js环境以及Webpack工具进行深入探讨。在现代Web开发中,模块化已经成为不可或缺的一部分,它有助于提高代码的可读性、可维护性和复用性。下面将...
### JavaScript模块化详解 #### 一、模块化的背景与意义 在现代Web开发中,JavaScript作为客户端编程的主要语言,其重要性不言而喻。随着Web应用变得越来越复杂,单个脚本文件往往无法满足需求,这就导致了多个...
模块化开发是一种软件工程方法,它强调将复杂系统分解为更小、更易管理的部件或模块,并且这些模块可以独立地开发和测试。在web前端开发中,模块化通常与组件化紧密相关,它帮助开发者创建具有可重用性的用户界面...
模块开发的不同写法反映了JavaScript模块化演进的过程: 1. **原始写法**:最简单的模块形式,即将一组相关的函数定义在一起。但这种方法容易导致全局命名空间的污染,且模块成员之间的关系不明显。 ```...
JavaScript模块化编程是一种组织代码的方式,它使得代码更易于维护、重用和协作。Require.js是JavaScript的一个模块加载器,它引入了AMD(Asynchronous Module Definition)规范,为JavaScript提供了异步加载模块的...
通过这个JavaScript前端开发模块化教程,学习者将能够掌握JavaScript模块化的基础概念,以及如何在实际项目中应用这些知识。结合源代码的实践,将理论与实践相结合,有助于提升开发者的技能和项目管理能力。在完成本...
Sea.js是一款遵循CMD模块定义规范的JavaScript模块化开发框架。CMD(Common Module Definition)是一种模块定义规范,与AMD(Asynchronous Module Definition)类似,但是CMD更加适合于Node.js环境,并且在浏览器端...
在IT行业中,模块化开发是一种高效且可维护的软件开发策略,尤其对于处理大规模组件时更为重要。2012年阿里技术嘉年华的嘉宾演讲PPT聚焦于这一主题,揭示了如何通过模块化来应对复杂性和扩展性挑战。在本篇内容中,...
在大型项目中,为了更好地管理代码,提高可维护性和复用性,开发者通常会选择模块化开发。Vue-multipage 就是针对Vue.js 应用的多页面模块化构建工具。它结合了Webpack等现代前端构建工具,使得在Vue.js应用中实现多...
### JavaScript模块化编程知识点 #### 一、模块化的重要性 模块化编程是现代软件开发的基础之一,尤其是在JavaScript这种广泛应用于Web开发的语言中尤为重要。模块化的关键在于它允许开发者将复杂的程序拆分成更小...
JavaScript模块化编程是现代Web开发中的重要组成部分,它有助于组织代码、提高可维护性和复用性。本篇文章将深入探讨JavaScript模块化编程的实战应用,特别是通过试用SeaJS这一工具来实现。SeaJS是一款专注于浏览器...
可以说,Node.js开创了javascript模块化开发的先河,早期的javascript需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成 类。最后node.js的出现才开始有...
SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制,本文给大家介绍JavaScript模块化开发之SeaJS,需要的朋友参考下
二.JavaScript模块化简介 为了解决上述问题,JavaScript社区发展出了几种模块化标准,包括CommonJS、AMD(Asynchronous Module Definition)和CMD(Common Module Definition)。其中: - CommonJS主要应用于Node...