美文网首页程序员
前后端模块规范有哪些?

前后端模块规范有哪些?

作者: 代小代isDelenDelen | 来源:发表于2017-07-22 22:47 被阅读572次

        模块化思想在前端的应用层出不穷,它的出现也加快了前端内容的开发,和下部的复用,同时增加了合作性。做到模块化,就要有一定的模块规范, CommonJS为后端定制了特定的规范,但是鉴于网络的原因,CommonJS并不完全适合前端的应用场景,经过一段时间争论后,AMD(Asynchronous Module Definition,异步模块定义)规范最终在前端应用场景中胜出。除此之外,还有国内玉伯的CMD。

1.AMD规范

AMD规范是CommonJS模块规范的一个延伸,它的模块定义如下:

define(id?,dependencies?,factory);

它的模块id和依赖都是可选的,与node模块相似的地方在于factory的内容就是实际代码中内容。下面的代码定义了一个简单的模块:

define(function(){

   var exports = {};

   exports.sayHello=function(){

       alert('hello from module:' + module.id);

  }

   return exports;

})

不同的地方就是AMD模块需要用define来明确定义一个模块,而Node实现中是隐式包装的,他们的目的都是作用域隔离(不知道啥是作用域隔离,去问度娘或者谷妹吧),仅在需要的时候被引入,避免掉过去那种通过全局变量或者全局命名空间的方式,以免变量污染和不小心被修改。另一个区别就是内容通过返回的方式实现导出。例如require.js的实现方式

2 CMD规范

它与AMD规范的主要区别在于定义模块和依赖引入的部分,AMD需要在声明模块的时候制定所有的依赖,通过形式参数传递依赖到模块内容中:

define(['dep1','dep2'],function(dep1,dep2)){

     return function(){};

});

而CMD模块更接近于Node对CommonJS规范的定义:

define(factory);

在依赖部分,CMD支持动态引入,示例如下:

define(function(require,exports,module){

//这里来写模块内容

})

require、exports和module通过形式参数传递给模块,在需要依赖模块时,随时调用require()引入即可。例如sea.js的实现方式

3.兼容多种模块规范的写法

前面废话那么多,现在为了让同一个模块可以运行在前后端,在写作过程中需要考虑兼容前端也实现模块规范的环境。为了保持前后端的一致性,类库开发者需要将类库代码包装在一个闭包内。下面栗子演示如何将hello方法定义到不同的运行环境中,兼容Node、AMD、CMD以及常见的浏览器环境中:(用的时候copy一下就ok了)

```

;(function(name,definition){

   //检测上下文环境是否为AMD或者CMD

var hasDefine=typeof define==='function',

      hasExports=typeof module !=='undefined'&&module.exports;

if(hasDefine){

 //AMD/CMD

   define(definition);

}else if(hasExports){

    //定义为普通Node模块

   module.exports=definition();

}else{

  //将模块的执行结果挂在window变量中,在浏览器中this指向window对象

  this[name]=definition();

 }

})('hello',function(){

    var hello=function(){};

 return hello;

})

```

至此 不足之处,请批评指正(感谢朴灵的深入浅出nodejs)!

```

```

相关文章

  • 前后端模块规范有哪些?

    模块化思想在前端的应用层出不穷,它的出现也加快了前端内容的开发,和下部的复用,同时增加了合作性。做到模块化...

  • webpack教程 babel-preset语法级别打包 b

    ################主流的前后端模块化规范############### // 高效的学习 后端服务器...

  • AMD_CMD_RequireJS

    1.为什么要使用模块化? 2. CMD、AMD、CommonJS 规范分别指什么?有哪些应用 Commonjs:用...

  • AMD和CMD

    题目1: 为什么要使用模块化? 题目2:CMD、AMD、CommonJS 规范分别指什么?有哪些应用 AMD和CM...

  • JS模块化

    1.CommonJS规范 Node 应用由模块组成,采用 CommonJS 模块规范。 每个文件就是一个模块,有自...

  • 关于前端模块化开发

    关于前端模块化开发 1 前端中有哪些模块化开发的规范以及实现方案 2 模块化的开发的好处 3 CommonJS

  • 任务24

    问答 1. ajax 是什么?有什么作用? 2. 前后端开发联调需要注意哪些事情?后端接口完成前如何 mock 数...

  • 模块化规范

    服务器端规范 CommonJS Node.js CommonJS 定义JavaScript语言后端规范+ 后端语言...

  • 后端产品典型的功能模块

    负责后端产品已有六年了,回顾过去负责的后端产品,除核心业务外,在功能模块上基本都雷同,常见的后端功能模块有以下几个...

  • CommonJS

    模块规范 CommonJS模块规范主要分为三部分:模块引用、模块定义、模块标识。 模块引用 var math = ...

网友评论

    本文标题:前后端模块规范有哪些?

    本文链接:https://www.haomeiwen.com/subject/hsqpkxtx.html