JS模块导入导出规范-CommonJS | ES6 -规范案例
Posted JackieDYH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS模块导入导出规范-CommonJS | ES6 -规范案例相关的知识,希望对你有一定的参考价值。
module.exports、exports和export、export default
总体上区分两大规范 CommonJS模块规范和ES6模块规范
require: node 和 es6 都支持的引入
export / import : 只有es6 支持的导出引入
module.exports / exports: 只有 node 支持的导出Node里面的模块系统遵循的是CommonJS规范。
CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require)1.module.exports 和exports 是Commonjs的规范 2.export 和export default 是es6 规范 3.require 是amd规范引入方式 4.import 是es6 的一个语法标准
module.exports 、exports
module 变量代表当前模块,这是个对象,会创建exports的属性,属性的默认值是空对象
//导出使用方法:
function add(a,b)
return a+b;
var a1 = 1
module.exports = add,a1;
module.exports = a:1;
module.exports.a = 1
module.exports = function(name,age,money)
this.name = name;
this.age = age;
this.money = money;
this.say = function()
console.log(123)
;
//导入使用方法
var req = require ('../app.js');
console.log(req.a1,req.a)
const add,a1 = require('../app.js')
exports 是module.exports的一个引用,可以认为是 var exports = module.exports
exports.a = 1;
exports.add = add
//导入使用方法
var req = require ('../app.js');
console.log(req.a)
module.exports 、exports区别
- 相对而已,exports不能导出匿名函数(比如没有变量名的函数)也不能写 exports = acc;
- exports是引用 module.exports的值。module.exports 被改变的时候,exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports。
- Require 引入模块后,放回给调用者的是module.exports 而不是exports
module.exports = name: '叔叔';
exports = name: '阿姨'
//main.js
let people = require('./people');
console.log(people);//输出:name: '叔叔'
export、export default
export default导出
var name = 'javk'
var sys = function ()
console.log('test')
var name1;
//一个模块文件只能有一个export default,下面是举例而已
export default name , sys
export default const name3 = 'error'; //这个是错误的,可以用下一行这种方式
export default name1 = 'marry'
export default name2: 'bob' //暴露一个对象
export default function()
console.log ('export 不能这样子')
//引入
import test form 'app.js' // test可以随便取名字,不需要花括号
export 导出
export age,open //等同于下边
export age
export open
export const age1 = 23 //let 也行
export class User
constructor(name)
this.name = name;
export function log(sth) //不能没有函数名字
return sth;
//导入方法 对应导入的变量或函数,一定要花括号
import age,open form "app.js" // 花括号里面的值必须和暴露的变量相同
import age1 as age2 form "app.js"
import * as test form "app.js"
export、export default 区别
- export default 在一个模块中只能有一个,也可以没有,export可以有很多个
- export default 的对象、变量、函数、类、 可以没有名字,但export导出的必须有名字
- 两者导出,用import导入对应会有区别。
以上是关于JS模块导入导出规范-CommonJS | ES6 -规范案例的主要内容,如果未能解决你的问题,请参考以下文章
ES6导入导出import | export | export default-使用案例
ES6导入导出import | export | export default-使用案例
Node.js 的 commonJS 规范 ES6 导入 js 文件