JS中模块的暴露和引入方式

2020-04-23  本文已影响0人  爱吃馒头不吃辣

export和export default:

        在创建JavaScript模块时,export 语句用于从模块中导出函数、对象或原始值,以便其他程序可以通过import语句使用它们。
        能够在每一个模块中定义多个export 命名导出,但是只允许有一个export default 默认导出。

export命名导出(每个模块包含任意数量):

//my-module.js

//导出列表
let a = 1, b = 2;
export {a, b}

// 导出单个特性
export let name1, name2;
export let name1 = 1, name2 = 2;
export function FunctionName(){...}
export class ClassName {...}

//重命名导出
export {a as aa,b as bb};

// 解构导出并重命名
export const { name1, name2: bar } = o;

import语句使用命名导出:

import { a, b,FunctionName } from 'my-module.js';

export default默认导出(每个模块包含一个):

//my-module.js

// 默认导出
export default expression;
export default function (…) { … } 
export default function nameInfo(…) { … } 
export { name1 as default, … };
        更多详细信息可查询这里官方文档

exports和module.exports:

        exports允许使用快捷方式,因此module.exports.f = ...可以更简洁地写成exports.f = ...。但是,就像任何变量一样,如果为exports赋予了新值,则它将不再绑定到module.exports
        能够在每一个模块中定义多个exports导出,但是只允许有一个module.exports导出。

exports导出(每个模块包含任意数量):

//my-module.js

//导出多个方法和变量
let a = 1, b = 2;
exports.a = a;
exports.b = b;
exports.FunctionName = () => {
    console.log(123)
};
console.log(exports);//{ a: 1, b: 2, FunctionName: [Function] }

require语句使用导出:

const {a, b, FunctionName} = require('./my-module');//可直接解构
console.log(a, b);//1 2
FunctionName();//123

module.exports导出(每个模块包含一个):

//my-module.js

//导出多个方法和变量
let FunctionName = () => {
    console.log(123)
};
let a = 1, b = 2;
module.exports = {a, b, FunctionName};
console.log(module.exports);//{ a: 1, b: 2, FunctionName: [Function: FunctionName] }

require语句使用导出:

const {a, b, FunctionName} = require('./my-module');// 可直接解构
console.log(a, b);//1 2
FunctionName();//123
        更多详细信息可查询这里官方文档

总结

        exportexport default使用import导入。
        exportsmodule.exports使用require导入。常用的Nodejs项目中。
        exportexports在模块中可使用多个。
        export defaultmodule.exports在模块中只可使用一个。
上一篇 下一篇

猜你喜欢

热点阅读