在Angular2 CLI中使用外部JavaScript AMD模块

7
当我使用Angular2的预发布版本时,我必须使用systemjs来使用外部JavaScript库,即基于AMD模块的ESRI ArcGIS JavaScript API(虽然有typings)。现在我想迁移到Angular2 CLI,但是我不知道如何在Angular2从systemjs移动到webpack后导入像arcgis这样的外部库,也没有webpack.config文件可以修改。外部库存储在:https://js.arcgis.com/3.19/。例如,在我的angular组件中,我需要以某种方式导入它们,例如:
import map from 'esri/map';

如何导入 'https://js.arcgis.com/3.19/esri/map.js'?

有没有什么想法可以实现这个目标?

编辑:如果我把这个链接添加到 angular-cli.json 中会怎样呢?

"scripts": [
          "../node_modules/jquery/dist/jquery.js",
           ....
          "https://js.arcgis.com/3.19/esri/map.js"
      ],

将其作为 import {map} from 'esri/map'; 导入。

我遇到了一个 webpackMissingModule: C:\Users\xy\project\src\https:\js.arcgis.com\3.19\esri\map.j‌​s 的错误提示。

3个回答

1

这是一个关于如何在angular-cli.json中引入外部库的示例。抱歉数据比较冗长,但这是一个提示,你可以看到我在stylesscriptsaddons数组中添加了脚本和CSS。

{
  "project": {
    "version": "1.0.0-beta.19-3",
    "name": "adm"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.json",
      "prefix": "app",
      "mobile": false,
      "styles": [
        "assets/lib/bootstrap/css/bootstrap.css",
        "../node_modules/font-awesome/css/font-awesome.css",
        "assets/lib/metismenu/metisMenu.css",
        "assets/lib/animate.css/animate.css",
        "assets/css/customradiocss.css",
        "rainbow/blackboard.css"
      ],
      "scripts": [
          "assets/lib/jquery/jquery.js",
          "assets/lib/bootstrap/js/bootstrap.js",
          "assets/lib/metismenu/metisMenu.js",
          "assets/lib/screenfull/screenfull.js",
          "assets/js/core.js",
          "assets/js/app.js",
          "assets/js/easyResponsiveTabs.js",
          "rainbow/rainbow-custom.min.js"
      ],
      "environments": {
        "source": "environments/environment.ts",
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "addons": ["../node_modules/font-awesome/fonts/*.+(otf|eot|svg|ttf|woff|woff2)"],
  "packages": [],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "prefixInterfaces": false,
    "inline": {
      "style": false,
      "template": false
    },
    "spec": {
      "class": false,
      "component": true,
      "directive": true,
      "module": false,
      "pipe": true,
      "service": true
    }
  }
}

这似乎不起作用。如果我添加你提到的配置链接,并使用 import {map} from 'esri/map',我会得到一个 webpackMissingModule: C:\Users\xy\project\src\https:\js.arcgis.com\3.19\esri\map.js 错误。 - netik

1

你可以通过以下两种方式之一完成此操作:

  1. 在index.html中导入脚本,然后在组件中将API入口声明为常量:

    const argGIS: any;

然后像其他任何地方一样使用它。您将没有智能感知支持,但它会起作用。

  1. 使用npm模块,看起来已经存在了一个。使用以下命令安装它:

    npm install arcgis --save

将其添加到angular-cli.json中的“scripts”中。

"../node_modules/arcgis/file.js"

请查看 index.d.ts 文件以找到需要导入的内容,并在组件中使用以下代码进行导入:
import {Something} from 'arcgis';

0
一个选择是将其导入主索引HTML文件中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接