头图

https://segmentfault.com/a/11... 这篇文章写的比较详细,但是有一些以前困惑我的点还是需要单独记一下的。

commonjs

Node 应用由模块组成,采用 CommonJS 模块规范。也就是说CommonJs是应用在node服务器端的,如果浏览器想使用CommonJs规范的话需要用 browserify库 来进行转化。CommonJs分为两部分:moudle对象和requeire命令。也就是说要用 node 执行的代码,就只能遵循 commonjs 规范,使用 module.export 对象导出,使用 require 方法导入。想要写 export default / import 之类的 node 端执行的代码就需要单独配置(网上另找)。node 内部提供一个 module 的构建函数直接使用 console.log(module) 就可以看到所有的属性
image.png

amd

因为 commonjs 规范加载依赖资源是同步加载的,加载过程中是一直卡住的,所以 amd 是这样的写一堆需要加载的内容,然后将要执行的代码放在加载完成之后,require.js 就是 amd 规范的实践。使用方式是这样的

<script src='../node_modules/requirejs/require.js' data-main='./index'></script>
// data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的index.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把index

amd 规范的 lib 库该如何写呢

// moduleA.js
  define(function (){
    var add = function (x,y){
      return x+y;
    };
    return {
      add: add
    };
  });

是的,引入 require.js 之后会提供全局的 define 方法,所以 lib 库只需要直接使用 define 方法就好了。使用的时候是这样的

// index.js
  require(['moduleA'], function (moduleA){
    console.log(moduleA)
       //moduleA就是moduleA.js模块传入的函数执行后返回的对象{add:function}
 });

umd

umd

唉,😮‍💨,午觉没睡醒就叫起来开会。累了,不想写了


黄小波波
31 声望5 粉丝