angular - 将第 3 方 JS 插件安装到 Angular 7 中
问题描述
我正在尝试将 read-excel-file JS 插件导入 Angular 7 项目。我尝试了网站上告诉的所有方法,但失败了。
任何人都可以建议更好的过程。
declare var readXlsxFile: any;
在 angular.json
"scripts": [
"node_modules/read-excel-file/commonjs/readXlsxFileBrowser.js"
]
或者
"scripts": [
"node_modules/read-excel-file/bundle/read-excel-file.min.js"
]
但没有任何效果。我能够获得 readXlsxFile 函数及其执行,但在代码内部,它调用另一个模块。如何也加载那些依赖模块?
你能否解释一下这个问题背后的概念。
解决方案
包含 3rd 方库时,有两部分...您要执行的 javascript 代码,以及为 IDE 提供强类型优势的定义文件。
显然,如果应用程序要运行,第一个必须存在。<script src="thirdLib.js">
最简单的方法是在托管 Angular 2 应用程序的 html 页面中包含带有标签的 3rd 方库。这不会给你定义,所以你不会有 IDE 的优点,但应用程序会运行。(要阻止 IDE 抱怨它不知道变量“thirdLib”,请添加declare var thirdLib:any
到您的 ts 文件中。因为它是类型any
的 IDE 不会为 thirdLib 提供代码完成,但它也不会抛出 IDE 错误。 )
要获得执行代码和定义,如果 lib 是用 Typescript 编写的,您可以使用import {thirdLib} from 'thirdLibfolder/thirdLib'
. lib 的 ts 文件本质上具有执行代码和打字稿定义。
如果 lib 不是用 Typescript 编写的,但有好心人为它编写了 thirdLib.d.ts 定义文件,您可以/// <reference path="thirdLibfolder/thirdLib.d.ts" />
在 ts 文件中引用 d.ts 文件。然后仍然包含实际执行的 javascript 和上面提到的脚本参考。
这些文件的位置,以及您是否在参考中包含扩展,都特定于您的项目设置以及您正在使用的捆绑器和构建工具。Webpack 将搜索node_modules
文件夹中引用的库import {...
,并将接受带.ts
扩展名和不带扩展名的引用。.ts
如果您包含扩展名,Meteor 将引发错误。
额外的链接。 https://github.com/angular/angular-cli/wiki/3rd-party-libs
推荐阅读
- c# - AutoCAD 使用 ObjectARX 检查活动(等待)命令是否完成,然后使用 VB 或 C# 运行下一个命令
- excel - vba删除做而
- bash - Jmeter OS 进程采样器未在 bash 模式下执行
- r - 进行回归时如何存储 beta?
- cardano - 如何在 Cardano 节点中找到当前的 a0 参数
- sql - 如何在 SQL Server 中将 NVarchar 日期时间转换为日期时间格式?
- android - 反应原生的透明日期时间选择器
- c++ - 无法将二维字符数组传递给函数(C++)
- javascript - “owl-carousel-o”不适用于角度 11 中的模型
- javascript - 在 Angular 10 上安装 draw2d 最新版本