webpack - 这些import语句有何不同?

时间:2017-12-13 05:08:07

标签: javascript typescript webpack webpack-2

假设使用webpack 2和typescript,这些语句之间究竟有什么区别。

import "moment";
import "imports-loader?window=>this!moment";
import "script-loader!moment";
import * as moment from "moment";
import { moment } from "moment";

webpack 2的情况下,究竟发生了什么......
尽管在(IMHO坏)文档中搜寻,但对我来说还不是很清楚。

我发现,例如,使用script-loader似乎可以使用script-loader导入的其他库可以使用某些库,但不会将其放入全局范围对于其他ES6导入的库。

供参考:我的tsconfig.json看起来像这样:

{
  "compileOnSave": true,
  "compilerOptions": {
    "moduleResolution": "node",
    "target": "es5",
    "sourceMap": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "pretty": true,
    "lib": [ "es6", "dom" ],
    "types": []
  },
  "exclude": [
    "node_modules", "wwwroot/lib", "bower_components"
  ]
}

1 个答案:

答案 0 :(得分:0)

三种形式:

import "moment";
import * as moment from "moment";
import { moment } from "moment";
  • import "moment";

导入副作用文件。

  • import * as moment from "moment";

将完整模块导入名为moment

的文件中
  • import { moment } from "moment";

从模块moment导入名为导出moment

更多

阅读ES6导入/模块语法

的WebPack

Webpack还允许您在导入时使用加载器,例如

import "imports-loader?window=>this!moment";
import "script-loader!moment";

这些包含在各个加载器文档中,例如https://github.com/webpack-contrib/imports-loader