commonJS
- commonJS规范的核心变量是:exports,module.exports,require
- exports 和 module.exports可以负责模块的导出
- require 负责模块的导入
module.exports 导出方案:
const name = 'yx'
const age = 18
// 1 导出方案
module.exports.name = name
module.exports.age = age
const info = {
age: 12,
name: 'yx',
foo: function(){
console.log('foo')
}
}
// 2 导出方案
module.exports = info
exports 导出方案:
const name = 'yx'
exports.name = name
注意: exports 导出实际上也是用module.exports进行导出的,如:
// 默认给的 空对象
module.exports = {}
// 把module.exports 赋值给 exports 的
exports = module.exports
require 导入方案
const info = require('文件路径')
require(X) 导入格式的查找规则
- 情况一:X是一个node核心模块,比如path,http,fs
- 直接返回核心模块,并且停止查找
- 情况二:X是以 ./ 或 …/ 或 /(根目录)开头的
- 第一步:将X当作一个文件在对应目录下查找:
A:如果有后缀名,按照后缀名的格式直接查找对应的文件
B:如果没有后缀名,会按照如下顺序:
a:直接查找文件X
b:查找X.js文件
c:查找X.json文件
d:查找X.node文件 - 第二步:没有找到对应的文件,将X作为一个目录
A:查找目录下的index文件
a: 查找X/index.js 文件
b: 查找X/index.json 文件
c: 查找X/index.node 文件
- 情况三:直接是一个X(没有路径),并且X不是一个核心模块
- 会在node_modules里查找相应的index.js文件
const axios = require('axios')
esModule
- import 是进行导入,export 是进行导出
- import 导入的几种方式
// 第一种方式 解构方式
import { name, age } from './foo.js'
// 第二种方式 可以进行别名设置
import { name as fName, age as fAge } from './foo.js'
// 第三种方式 导出所有 (也可以设置别名)
import * from './foo.js'
import * as foo from './foo.js'
// 第四种方式 针对于 export default 方式
import foo from './foo.js'
// 导出方式则为
export default foo
// 或者为
export {
foo as default
}
- export 导出的几种方式
function add(){}
function sub(){}
// 第一种方式
export {
add,
sub
}
// 同样导出也可以使用别名
export { add as fAdd, sub as fSub }
// 第二种方式
export { add, sub } from './foo.js'
// 第三种方式
export * from './foo.js'