关于javascript:前端培训中级阶段46-CommonJS规范模块化思想及操作

7次阅读

共计 1620 个字符,预计需要花费 5 分钟才能阅读完成。

前端最根底的就是 HTML+CSS+Javascript。把握了这三门技术就算入门,但也仅仅是入门,当初前端开发的定义曾经远远不止这些。前端小课堂(HTML/CSS/JS),本着晋升技术水平,打牢基础知识的中心思想,咱们开课啦(每周四)。

Node 利用 由模块组成,采纳 CommonJS 模块标准

每个文件就是一个模块,有本人的作用域。在一个文件外面定义的变量、函数、类,都是 公有的,对其余文件不可见

// 导出 addX
module.exports.addX = 1;

// 导入模块
example = require('./example.js');
console.log(example.addX)

commonjs 模块标准

特点

  • 所有代码运行在模块作用域,不会净化全局作用域。
  • 模块能够屡次加载,然而只会在第一次加载时运行一次,而后 运行后果就被缓存 了,当前再加载,就间接读取缓存后果。要想让模块再次运行,必须革除缓存。
  • 模块加载的程序,依照其在代码中呈现的程序。
  • CommonJS 标准 加载模块是同步的,也就是说,只有加载实现,能力执行前面的操作。

module 对象

Node 外部提供一个 Module 构建函数。所有模块都是 Module 的实例。每个模块外部,都有一个 module 对象,代表以后模块。它有以下属性。

  • module.id 模块的辨认符,通常是带有绝对路径的模块文件名。
  • module.filename 模块的文件名,带有绝对路径。
  • module.loaded 返回一个布尔值,示意模块是否曾经实现加载。
  • module.parent 返回一个对象,示意调用该模块的模块。

    if (!module.parent) {
        // ran with `node something.js`
        app.listen(8088, function() {console.log('app listening on port 8088');
        })
    } else {// used with `require('/.something.js')`
        module.exports = app;
    }
  • module.children 返回一个数组,示意该模块要用到的其余模块。
  • module.exports 示意模块对外输入的值。

AMD 模块标准

CommonJS 标准加载模块是同步的,也就是说,只有加载实现,能力执行前面的操作。AMD 标准则是非同步加载模块,容许指定回调函数。因为 Node.js 次要用于服务器编程,模块文件个别都曾经存在于本地硬盘,所以加载起来比拟快,不必思考非同步加载的形式,所以 CommonJS 标准比拟实用。然而,如果是浏览器环境,要从服务器端加载模块,这时就必须采纳非同步模式,因而浏览器端个别采纳 AMD 标准。

AMD 标准应用 define 办法定义模块,上面就是一个例子:

define(['package/lib'], function(lib){function foo(){lib.log('hello world!');
  }

  return {foo: foo};
});

AMD 标准容许输入的模块兼容 CommonJS 标准,这时 define 办法须要写成上面这样:

define(function (require, exports, module){var someModule = require("someModule");
  var anotherModule = require("anotherModule");

  someModule.doTehAwesome();
  anotherModule.doMoarAwesome();

  exports.asplode = function (){someModule.doTehAwesome();
    anotherModule.doMoarAwesome();};
});

微信公众号:前端 linong

参考文献

  1. 前端培训目录、前端培训布局、前端培训打算
  2. https://javascript.ruanyifeng.com/nodejs/module.html
正文完
 0