commonJs主要为了解决ES6之前无模块概念的问题
引入核心模块不需要写路径,引入文件模块需要写路径(一般是相对路径./
或../
开头)
model.js
var msg = 'this is a model';
function func(){
console.log('this is a function by model');
}
//导出变量、方法
module.exports = {
msg,
func,
name:'model'
}
index.js
//引入同目录下的model.js,如果是相对路径,必须以./开头
//此处的model.js的.js可以省略
var model = require('./model');
console.log(model.msg);
model.func();
console.log(model.name);
model.js
var msg = 'this is a model';
function func(){
console.log('this is a function by model');
}
exports.func = func;
exports.msg = msg;
exports.num = 10;
index.js
//引入同目录下的model.js,如果是相对路径,必须以./开头
//此处的.js可以省略
var model = require('./model.js');
console.log(model.msg)
model.func();
console.log(model.num);
module.exports
生效使用的时候,引用js文件必须type="model"
nodel中没有web中的全局变量window,node中的全局变量是global
console.log(global);
输出,看到封装了一些函数可以使用
<ref *1> Object [global] {
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
queueMicrotask: [Function: queueMicrotask],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
}
}
//声明一个全局变量a,因为每个模块单独运行在一个函数里面
a = 10;
console.log(global.a);