NodeJS模块与ES6模块系统语法及注意点详解
NodeJS模块系统
在NodeJS中,每个文件被视为一个模块,一个模块中的变量、函数、对象、类等信息只在该模块内部可见。
导入模块
const someModule = require('./someModule'); // 导入某个模块
require
函数用于加载模块../
表示当前目录.
导出模块
exports.foo = 'bar'; // 导出一个变量
module.exports = someClass; // 导出一个类
exports
是module.exports
的简化写法module.exports
指向当前模块的导出对象,可以是任何类型的值
注意事项
- 每个模块是单独解析,存在
避免循环依赖
的问题. - NodeJS模块系统是运行时加载,可动态加载和卸载模块.
ES6模块系统
在ES6中,模块同样被视为独立的片段,但新的语法代替了NodeJS中的 require
和 module.exports
.
导入模块
import someModule from './someModule'; // 导入某个模块
import
语句用于导入模块../
表示当前目录.
导出模块
export const foo = 'bar'; // 导出一个变量
export default someClass; // 导出一个类
export
语句用于导出变量和方法.export default
语句用于导出模块中的默认值.
注意事项
- ES6模块系统是编译时加载.
import
语句只能在模块的最外层使用.
其他
- NodeJS模块与ES6模块系统可以混用,但需要注意语法差异.
- 其他一些特定的模块系统,如AMD、CommonJS、UMD等,使用不同的语法和规则.
示例
NodeJS模块系统示例
模块文件 someModule.js
const bar = 'hello world';
function sayHello(name) {
console.log(`${bar}, ${name}!`);
}
module.exports = {
bar,
sayHello
};
另一模块中使用该模块
const someModule = require('./someModule');
console.log(someModule.bar); // 输出 'hello world'
someModule.sayHello('Tom'); // 输出 'hello world, Tom!'
ES6模块系统示例
模块文件 someModule.js
const bar = 'hello world!';
function sayHello(name) {
console.log(`${bar}, ${name}!`);
}
export default {
bar,
sayHello
};
另一模块中使用该模块
import someModule from './someModule';
console.log(someModule.bar); // 输出 'hello world!'
someModule.sayHello('Tom'); // 输出 'hello world!, Tom!'
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NodeJS模块与ES6模块系统语法及注意点详解 - Python技术站