• CommonJS规范与AMD规范


    CommonJS模块的特点如下:
    所有代码都运行在模块作用域,不会污染全局作用域。
    模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
    模块加载的顺序,按照其在代码中出现的顺序。
    CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

    require方法用于加载模块。
    module对象:Node内部提供一个Module构建函数。所有模块都是Module的实例,每个模块内部,都有一个module对象,代表当前模块
    例如:function Module(id, parent) {
    this.id = id;//模块的识别符,通常是带有绝对路径的模块文件名。
    this.exports = {};//module.exports 表示模块对外输出的值。
    this.parent = parent;//返回一个对象,表示调用该模块的模块。module.children 返回一个数组,表示该模块要用到的其他模块。
    // ...}
    module.exports属性:表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。
    exports变量:Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。
    var exports = module.exports;在对外输出模块接口时,可以向exports对象添加方法。
    注意:如果一个模块的对外接口,就是一个单一的值,不能使用exports输出,只能使用module.exports输出
    AMD规范与CommonJS规范的兼容性:
    CommonJS规范加载模块是同步的,只有加载完成,才能执行后面的操作,AMD规范则是非同步加载模块,允许指定回调函数。
    由于Node.js主要用于服务器编程,加载起来较快,不用考虑非同步加载方式,CommonJS规范比较适用。而浏览器环境,从服务器端加载模块一般采用AMD规范。
    AMD规范使用define方法定义模块,CommonJS模块规范,内置的require命令用于加载模块文件。

  • 相关阅读:
    ThreadLocal的魔数为什么是0x61c88647?
    java流程控制之 高级for循环
    java流程控制之 for循环 九九乘法表
    java流程控制之 while循环 1到1000中能被5整除的数 按3个数据一行输出
    java流程控制之 for循环 1到1000中能被5整除的数 按3个数据一行输出
    java流程控制之 for循环 1到100的奇偶数和
    java流程控制之 while 循环
    java流程控制之 while 循环 1到100的和
    java流程控制之 switch
    java流程控制之顺序结构
  • 原文地址:https://www.cnblogs.com/yiran2020/p/14097296.html
Copyright © 2020-2023  润新知