美文网首页
读书笔记之 加载规范 amd cmd umd

读书笔记之 加载规范 amd cmd umd

作者: 芗芗_ | 来源:发表于2018-04-09 10:51 被阅读0次

commonjs 是服务器端的规范

requirejs 采用 amd
  • 4月10号粗略的看了下requirejs的源码 发现它主要是在浏览器加载js用的 而且 主要是创建 script的标签 然后监听 onreadystatechange事件 来判断是否load 但是有一个问题 load了就代表本地代码执行了么 ?

  • 团队解答:
    js在下载的时候 接下来就是执行 下载完了 并不会马上触发 onreadystatechange 因为 js是单线程 所以会把主线程的任务都执行完了 才会释放控制权 去检查异步线程队列是否可执行 所以 下载执行都在主线程里 相当于说 onreadystatechange的load
    事件也可以代表说 下载执行完成了

特点:依赖前置 加载模块前 先加载依赖
加载了js export就存在在内存里了 即是下一个文件还依赖 这个js 也不会在去加载 而是直接去内存里去调用这个对象

// AMD
define(['a', 'b'], function(a, b) {
  a.doSomething();
  b.doSomething();
})
seajs 采用 cmd

特点: cmd推崇依赖就近,延迟执行

// CMD
define(function(require, exports, module) {
  var a = require('./a');
  a.doSomething();
  var b = require('./b');
  b.doSomething();
})

共同点:
1.cmd和amd 都是预加载依赖js
区别:
1.调用和声明依赖的地方不同。
AMD和CMD都是用difine和require,但是CMD标准倾向于在使用过程中提出依赖,就是不管代码写到哪突然发现需要依赖另一个模块,那就在当前代码用require引入就可以了,规范会帮你搞定预加载,你随便写就可以了。但是AMD标准让你必须提前在头部依赖参数部分写好(没有写好? 倒回去写好咯)。这就是最明显的区别。

浏览器的加载规范之UMD

由于CommonJS是服务器端的规范,跟AMD、CMD两个标准实际不冲突
当我们写一个文件需要兼容不同的加载规范的时候怎么办呢,看看下面的代码。

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
      // AMD
      define(['jquery', 'underscore'], factory);
    } else if (typeof exports === 'object') {
      // Node, CommonJS之类的
      module.exports = factory(require('jquery'),         
      require('underscore'));
    } else {
      // 浏览器全局变量(root 即 window)
      root.returnExports = factory(root.jQuery, root._);
    }
}(this, function ($, _) {
    // 方法
    function a(){}; // 私有方法,因为它没被返回 (见下面)
    function b(){}; // 公共方法,因为被返回了
    function c(){}; // 公共方法,因为被返回了

    // 暴露公共方法
    return {
        b: b,
        c: c
    }
}));

参考文章

https://blog.csdn.net/Real_Bird/article/details/54869066

相关文章

  • 读书笔记之 加载规范 amd cmd umd

    commonjs 是服务器端的规范 requirejs 采用 amd 4月10号粗略的看了下requirejs的源...

  • JS的各种模块化规范

    AMD CMD CommonJs UMD ES6 一路演进 AMD 异步模块定义规范(Asynchron...

  • JS模块化

    模块化规范:CommonJS,AMD,CMD,UMD,ES6 Module CommonJS CommonJS是服...

  • JS模块化工具

    AMD规范是依赖前置, CMD规范是依赖后置 AMD规范的加载器会把所有的JS中的依赖前置执行。 CMD是懒加载,...

  • AMD&CMD RequireJS&Seajs

    AMD规范:先载入,后执行 ,代表RequireJS 高版本也支持CMD规范CMD规范:懒加载,需要才加载,代表S...

  • AMD CMD

    AMD CMD AMD,CMD是浏览器端模块加载器的两种规范。AMD的代表是requireJS和SeaJS。今天主...

  • 通用模块规范

    AMD、CMD、UMD 模块的写法 : http://web.jobbole.com/82238/

  • 前端模块加载规范

    模块加载规范:CommonJS、AMD 和 CMD,而框架Node.js、RequireJS 和 Seajs 分别...

  • javascrip中UMD规范的详细介绍

    一、UMD规范 UMD规范,就是多有规范里面长得最丑的那个,没有之一!!!他是为了让模块同时兼容AMD和Commo...

  • CommonJS AMD CMD UMD

    CommonJS CommonJS是服务器端模块的规范,Node.js采用了这个规范。 根据CommonJS规范,...

网友评论

      本文标题:读书笔记之 加载规范 amd cmd umd

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