如何使用Angular2 + WebPack导入远程AMD模块?

时间:2016-10-05 16:07:01

标签: javascript typescript webpack

在我的Angular2 + TypeScript + WebPack项目中,我想使用/从以下网址导入Esri ArcGIS JavaScript API:

https://js.arcgis.com/4.1/

以便import Map from 'esri/Map';导入以下模块

https://js.arcgis.com/4.1/esri/Map.js

我看到人们通常使用systemjs来加载这些模块,但是,我宁愿不使用systemjs。有没有办法只使用webpack?

webpack.config:

var webpack = require("webpack");

module.exports = {
    entry: {
        'polyfills': './app/polyfills.js',
        'vendor': './app/vendor.js',
        'app': './app/boot.js'
    },
    output: {
        path: __dirname,
        filename: "./prod/[name].js"
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin({
            name: ['app', 'vendor', 'polyfills']
        }),
        new webpack.optimize.UglifyJsPlugin({
            beautify: false,
            mangle: {screw_ie8: true, keep_fnames: true},
            compress: {screw_ie8: true},
            comments: false
        })
    ]
};

2 个答案:

答案 0 :(得分:0)

  

webpack是一个模块捆绑器而不是javascript加载器。它从本地磁盘打包文件,并且不从Web加载文件(除了它自己的块)。使用javascript加载程序,即script.js

https://github.com/webpack/webpack/issues/150#issuecomment-32756166

还值得注意的是,您无法从外部源加载模块,然后使用es6语法导入,因为远程模块需要通过Webpack。您必须确保获取UMD /全局脚本。

答案 1 :(得分:0)

我跟着this sample并且能够加载dojo,webpack,typescript和angular 2。

请耐心等待,仍然是进口的地狱,例如:

import * as Map from 'esri/Map';
import * as Point from 'esri/geometry/Point';
import * as Circle from 'esri/geometry/Circle';