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

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

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

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)运用_第2张图片

你可能感兴趣的:(js,nodejs,js)