CommonJS基于服务器端(node)运用

Posted eyes++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CommonJS基于服务器端(node)运用相关的知识,希望对你有一定的参考价值。

node是完全遵循CommonJS规范的
CommonJS说明:
    每个文件都可以当作一个模块
    在服务端:模块的加载是运行时同步加载的
    在浏览器端:模块需要提前编译打包处理
基本语法:
    暴露模块:
        module.exports = value
        exports.xxx = value
    引入模块:require(xxx) (其中第三方模块时xxx为模块名,自定义模块时为模块文件路径)
实现:
    服务器端实现:Node.js
    浏览器端实现:Browserify(也称CommonJS的浏览器端的打包工具)

大家还可以看看我的另一篇博文:CommonJS基于浏览器端运用
以下是代码部分:
文件目录:
目录
先通过命令行初始化环境,方便下包:

npm init --yes

下载uniq包:

npm i uniq --save

modules目录下文件:
module1.js

// module.exports = value 暴露一个对象
module.exports = {
    msg: 'module1',
    foo(){
        console.log(this.msg);
    }
};

module2.js

// 暴露一个函数 module.exports = function()
module.exports = function() {
    console.log('module2');
}

module3.js

// exports.xxx = value
exports.foo = function() {
    console.log('foo() module3');
};

exports.bar = function() {
    console.log('bar() module3');
};

exports.arr = [6,2,5,2,8,10];

app.js

// 将其他模块汇集到主模块
let uniq = require('uniq'); // 第三方库应该放到自定义模板上方,这个库可以给数组排序并且去重

let module1 = require('./modules/module1');
let module2 = require('./modules/module2');
let module3 = require('./modules/module3');

// module1是对象,所以调用方式如下:
module1.foo();
// module2是函数,所以调用方式如下:
module2();
// module3有多个函数,所以调用方式如下:
module3.foo();
module3.bar();
console.log(module3.arr);
// 取出module3中的数组,该方法会自动给数组元素去重和排序,根据数字第一位编码排序
let result = uniq(module3.arr);
console.log(result);

node运行:

运行结果

以上是关于CommonJS基于服务器端(node)运用的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS新建服务器以及CommonJS规范

CommonJSAMD和CMD区别

CommonJS模块化实例

es6 import 和node 的require

JavaScript模块化规范

requirejs in node