zoukankan      html  css  js  c++  java
  • 学习笔记:CommonJS规范、AMD规范

    CommonJS规范

    http://wiki.jikexueyuan.com/project/webpack-handbook/commonjs.html  CommonJS 规范

    http://www.cnblogs.com/littlebirdlbw/p/5670633.html  CommonJS规范

    CommonJS 是以在浏览器环境之外构建 JavaScript 生态系统为目标而产生的项目,比如在服务器和桌面环境中。

    这个项目最开始是由 Mozilla 的工程师 Kevin Dangoor 在2009年1月创建的,当时的名字是 ServerJS。

    2009年8月,这个项目改名为 CommonJS,以显示其 API 的更广泛实用性。CommonJS 是一套规范,它的创建和核准是开放的。这个规范已经有很多版本和具体实现。CommonJS 并不是属于 ECMAScript TC39 小组的工作,但 TC39 中的一些成员参与 CommonJS 的制定。2013年5月,Node.js 的包管理器 NPM 的作者 Isaac Z. Schlueter 说 CommonJS 已经过时,Node.js 的内核开发者已经废弃了该规范。

    CommonJS 规范是为了解决 JavaScript 的作用域问题而定义的模块形式,可以使每个模块它自身的命名空间中执行。该规范的主要内容是,模块必须通过 module.exports 导出对外的变量或接口,通过 require() 来导入其他模块的输出到当前模块作用域中。

    所有代码都运行在模块作用域,不会污染全局作用域;模块可以多次加载,但只会在第一次加载的时候运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果;模块的加载顺序,按照代码的出现顺序是同步加载的;

    在CommonJs规范中:
    一个文件就是一个模块,拥有单独的作用域;
    普通方式定义的变量、函数、对象都属于该模块内;
    通过require来加载模块;
    通过exports和modul.exports来暴露模块中的内容;

    NPM的模块加载机制:
    如果require的是绝对路径文件,查找不会去遍历每个node_modules目录,其速度最快
    1).从module.paths数组中(由当前执行文件目录到磁盘根目录)取出第一个目录作为查找基准
    2).直接从目录中查找该文件,如果存在则结束查找,如果不存在则进行下一条查找
    3).尝试添加.js、.node、.json后缀之后查找,如果存在文件则结束查找,如果不存在则进行下一条查找
    4).尝试将require的参数作为一个包来进行查找,读取目录下的package.json文件,取得Main参数指定的文件
    5).尝试查找该文件,如果存在则结束查找,如果不存在则进行第3条查找
    6).如果继续失败,则取出module.paths数组中的下一目录作为基准查找,循环第1-5个步骤
    7).如果继续失败,循环第1-6个步骤,直到module.paths中的最后一个值
    8).如果继续失败,则抛出异常


    AMD规范

    http://wiki.jikexueyuan.com/project/webpack-handbook/amd.html


    AMD(异步模块定义)是为浏览器环境设计的,因为 CommonJS 模块系统是同步加载的,当前浏览器环境还没有准备好同步加载模块的条件。

    AMD 定义了一套 JavaScript 模块依赖异步加载标准,来解决同步加载的问题。

    模块通过 define 函数定义在闭包中


     阅读:

    http://blog.csdn.net/xcymorningsun/article/details/52709608  理解AMD ,CMD,CommonJS规范

    http://blog.csdn.net/vin1992/article/details/60870040  彻底弄懂CommonJS和AMD/CMD

    ..

  • 相关阅读:
    实时控制软件设计第一周作业-汽车ABS软件系统案例分析
    团队项目·冰球模拟器——任务间通信、数据共享等设计
    团队项目·冰球模拟器——cmake 自动化构建系统的配置文件的编写
    团队项目·冰球模拟器——文件结构设计
    团队项目·冰球模拟器——插值算法接口设计
    第四周作业
    第三周作业、实时操作系统µC/OS介绍及其它内容
    第二周作业、停车场门禁控制系统状态机
    Open Dynamics Engine for Linux 安装笔记
    第一周作业、典型实时控制系统案例分析
  • 原文地址:https://www.cnblogs.com/qq21270/p/7524051.html
Copyright © 2011-2022 走看看