导入javascript模块的这两种方法有什么区别?

时间:2017-04-22 19:51:22

标签: javascript npm

我是javascript开发的新手。我使用的是npm。

我想生成一些uuids所以我找到了一个uuid包:
https://www.npmjs.com/package/uuid

我是通过跑步安装的 npm install uuid

现在,我想在我的代码中使用这个包。

我发现有两种方法可以做到这一点。 npm文档建议:

// Generate a v4 UUID (random) 
const uuidV4 = require('uuid/v4');
uuidV4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' 

但我猜我也可以做(这似乎有用):

import uuid from 'uuid';
console.info(uuid.v4());

我的问题:

  • 这些之间有什么区别?
  • 如何判断模块导出的内容,以便知道我可以导入什么以及在什么路径下导入?例如,似乎我也可以做import v4 from 'uuid' ......但我真的不明白这是如何运作的。

1 个答案:

答案 0 :(得分:1)

require是在项目中包含模块的es5方式。

import是在项目中包含模块的es6方式。

如果您需要支持旧浏览器并希望使用es6功能,则需要使用像Babel这样的运算符将代码转换为es5格式。

使用导入,您可以获取模块的各个部分。让我们以此为例:

// test.js
export default () => { console.log("Hi, I'm a default export"); }

export NotDefault = () => { console.log("I am not the default export"); }

现在,如果您尝试:

import NotDefault from "test.js";

您实际上不会导入NotDefault,您可以导入默认导出。

要导入NotDefault,您将使用以下格式:

import { NotDefault } from "test.js";

ES5语法

module.exports = function() {
    // this is now the default export of this file.
    // you can use this file in another by typing var MyVar = require("module_name");
}

exports.MyFunc = function() {
    // this is also exported from this file
    // you can use this by var MyVar = require("module_name").myFunc;
}

ES6语法

default export function() {
    // this is the default export of this file
    // use can use me by typing import MyVar from "module_name";
}

export const MyFunc = function() {
    // this is also exported and can be used by typing
    // import { MyFunc } from "module_name";
}

我希望这有帮助!