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

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

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

// 导出 addXmodule.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