`
liuting37
  • 浏览: 10199 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

js模块化开发

 
阅读更多

  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模块定义  

 

  1. 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

    JavaScript模块化开发库之SeaJS 在Web开发中,JavaScript代码的组织和管理是一个重要的问题。随着项目的复杂性增加,代码的模块化变得至关重要。SeaJS便是一个专注于JavaScript模块化开发的库,它提供了一种在...

    一个解决threeJs模块化开发问题的webpack插件

    在JavaScript开发领域,随着Web应用复杂性的增加,模块化开发成为了不可或缺的一部分。Three.js作为一款流行的3D库,虽然功能强大,但在处理大型项目时,其模块化支持并不完善,尤其是在与现代前端构建工具如Webpack...

    JavaScript模块化开发.pdf

    JavaScript模块化开发.pdf

    JavaScript前端开发模块化教程_PPT.rar

    JavaScript前端开发模块化教程 在当今的Web开发领域,JavaScript作为客户端编程的首选语言,其重要性不言而喻。...通过本教程的学习,你将能熟练地运用JavaScript模块化开发,打造高效、整洁的前端项目。

    Web前端模块化开发教程(ES6+Node.js+Webpack)_源代码.zip

    本教程主要围绕Web前端的模块化开发展开,利用ES6的语法特性、Node.js环境以及Webpack工具进行深入探讨。在现代Web开发中,模块化已经成为不可或缺的一部分,它有助于提高代码的可读性、可维护性和复用性。下面将...

    javascript模块化

    ### JavaScript模块化详解 #### 一、模块化的背景与意义 在现代Web开发中,JavaScript作为客户端编程的主要语言,其重要性不言而喻。随着Web应用变得越来越复杂,单个脚本文件往往无法满足需求,这就导致了多个...

    模块化开发(英文版)

    模块化开发是一种软件工程方法,它强调将复杂系统分解为更小、更易管理的部件或模块,并且这些模块可以独立地开发和测试。在web前端开发中,模块化通常与组件化紧密相关,它帮助开发者创建具有可重用性的用户界面...

    JavaScript模块化编程

    模块开发的不同写法反映了JavaScript模块化演进的过程: 1. **原始写法**:最简单的模块形式,即将一组相关的函数定义在一起。但这种方法容易导致全局命名空间的污染,且模块成员之间的关系不明显。 ```...

    Javascript模块化编程(Require.js)

    JavaScript模块化编程是一种组织代码的方式,它使得代码更易于维护、重用和协作。Require.js是JavaScript的一个模块加载器,它引入了AMD(Asynchronous Module Definition)规范,为JavaScript提供了异步加载模块的...

    JavaScript前端开发模块化教程_源代码.rar

    通过这个JavaScript前端开发模块化教程,学习者将能够掌握JavaScript模块化的基础概念,以及如何在实际项目中应用这些知识。结合源代码的实践,将理论与实践相结合,有助于提升开发者的技能和项目管理能力。在完成本...

    JavaScript的模块化开发框架Sea.js上手指南

    Sea.js是一款遵循CMD模块定义规范的JavaScript模块化开发框架。CMD(Common Module Definition)是一种模块定义规范,与AMD(Asynchronous Module Definition)类似,但是CMD更加适合于Node.js环境,并且在浏览器端...

    大规模组件的模块化开发

    在IT行业中,模块化开发是一种高效且可维护的软件开发策略,尤其对于处理大规模组件时更为重要。2012年阿里技术嘉年华的嘉宾演讲PPT聚焦于这一主题,揭示了如何通过模块化来应对复杂性和扩展性挑战。在本篇内容中,...

    vue-multipage vue 模块化开发打包

    在大型项目中,为了更好地管理代码,提高可维护性和复用性,开发者通常会选择模块化开发。Vue-multipage 就是针对Vue.js 应用的多页面模块化构建工具。它结合了Webpack等现代前端构建工具,使得在Vue.js应用中实现多...

    Javascript模块化编程

    ### JavaScript模块化编程知识点 #### 一、模块化的重要性 模块化编程是现代软件开发的基础之一,尤其是在JavaScript这种广泛应用于Web开发的语言中尤为重要。模块化的关键在于它允许开发者将复杂的程序拆分成更小...

    Javascript模块化编程(三):模块化编程实战,试用SeaJS

    JavaScript模块化编程是现代Web开发中的重要组成部分,它有助于组织代码、提高可维护性和复用性。本篇文章将深入探讨JavaScript模块化编程的实战应用,特别是通过试用SeaJS这一工具来实现。SeaJS是一款专注于浏览器...

    初始Nodejs

    可以说,Node.js开创了javascript模块化开发的先河,早期的javascript需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成 类。最后node.js的出现才开始有...

    JavaScript模块化开发之SeaJS

    SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制,本文给大家介绍JavaScript模块化开发之SeaJS,需要的朋友参考下

    模块化的js.pdf

    二.JavaScript模块化简介 为了解决上述问题,JavaScript社区发展出了几种模块化标准,包括CommonJS、AMD(Asynchronous Module Definition)和CMD(Common Module Definition)。其中: - CommonJS主要应用于Node...

Global site tag (gtag.js) - Google Analytics