zoukankan      html  css  js  c++  java
  • 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命令用于加载模块文件。

  • 相关阅读:
    MNIST手写字母识别(二)
    MNIST手写字母识别(一)
    多元线性回归问题(Tensorflow 求解)
    单变量线性回归问题(TensorFlow实战)
    TensorBoard可视化初步
    TensorFlow的基本运算
    NumPy科学计算库
    tensorflow使用Session模块时报错:AttributeError: module 'tensorflow' has no attribute 'Session',已解决
    Python 第一个爬虫
    Python(列表)
  • 原文地址:https://www.cnblogs.com/yiran2020/p/14097296.html
Copyright © 2011-2022 走看看