require、module.export、import、export总结

683 阅读1分钟
  1. import、export可以导入导出任何类型,包括字符串,变量,对象,方法

  2. require、module.export只能导入导出对象

  3. require 是赋值过程并且是运行时才执行, import 是解构过程并且是编译时执行。require可以理解为一个全局方法意味着可以在任何地方执行,而import必须写在文件的顶部。

//a.js

    function test (args) {

    console.log(args);    
    }

    module.exports = {
        test
    };


//b.js

    let { test } = require('./a.js');

    test('this is a test.');


require的核心概念:在导出的文件中定义module.exports,导出的对象类型不予限定(可为任意类型)。在导入的文件中使用require()引入即可使用。本质上,是将要导出的对象,赋值给module这个对象的exports属性,在其他文件中通过require这个方法来访问exports这个属性。上面b.js中,require(./a.js) = exports 这个对象,然后使用es6取值方式从exports对象中取出test的值。

//a.js:

    export function test (args) {
    // body...
    console.log(args);    
    }

    // 默认导出模块,一个文件中只能定义一个
    export default function() {...};

    // 导出变量
    export const name = "lyn";

//b.js:

    // _代表引入的export default的内容,加入default关键字代表在import时可以使用任意变量名并且不需要花括号
    import _, { test, name } from './a.js';

    test(`my name is ${name}`);

import是es6为js模块化提出的新的语法,import (导入)要与export(导出)结合使用。