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区别

  1. 相对而已,exports不能导出匿名函数(比如没有变量名的函数)也不能写 exports = acc;
  2. exports是引用 module.exports的值。module.exports 被改变的时候,exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports。
  3. 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 区别

  1. export default 在一个模块中只能有一个,也可以没有,export可以有很多个
  2. export default 的对象、变量、函数、类、 可以没有名字,但export导出的必须有名字
  3. 两者导出,用import导入对应会有区别。

以上是关于JS模块导入导出规范-CommonJS | ES6 -规范案例的主要内容,如果未能解决你的问题,请参考以下文章

模块化导入导出

ES6导入导出import | export | export default-使用案例

ES6导入导出import | export | export default-使用案例

Node.js 的 commonJS 规范 ES6 导入 js 文件

Node.js 的 commonJS 规范 ES6 导入 js 文件

ES6模块化基本语法(导入import/导出export)