include the library 到 angular 4.0 并在组件内使用它的正确工作流程是什么?
我的步骤:
yarn add mathjs
然后应该有一种方法可以在构建生命周期之一中注入(inject) js 库,以便 angular4 组件可以使用它。 JHipster 使用 Webpack 和 Yarn。
然后我尝试添加到 Component ( docs ):
import { mathjs } from "./mathjs";
和
var math = require('mathjs');
那些没有用。我错过了什么?
更新:
似乎 mathjs 使用旧方法建议
var math = require('mathjs')
。也许它在某种程度上类似于 JQuery question ......UPDATE2
最佳答案
这是一个很好的问题,我很高兴你提出这个问题,因为我希望我第一次遇到这个小问题时就知道我要写的东西。这是一个 typescript /javascript 和 webpack 问题,然后才是 Angular 问题。我绝对计划尽快写一篇关于 my blog 的文章。
你的场景:
你跑
npm install mathjs
import {mathjs} from "../../node_modules/mathjs/dist/math";
"set --allowJS".
你这样做:Set --allowJS in config (tsconfig.json){ "compilerOptions": { "allowJs": true, ...
解决方案:为目标库 (@types/mathjs) 安装一个打字文件
https://microsoft.github.io/TypeSearch/
npm install --save @types/mathjs
import * as mjs from "mathjs"
像这样使用它:
console.log("e was: " + mjs.e);
我的 github 上有 math.js 库的完整解决方案
https://github.com/res63661/importOldJSDemoWithTypings/
更多:
举个例子,看看你自己的 angular 项目。在使用 ng new 创建新项目后,每次运行 npm install 时,CLI 都会创建 node_modules 文件夹。深入这里并注意许多 .js 文件的 d.ts 文件。
当打乱打字或定义您自己的(.d.ts 文件)时,请务必在构建之间重新启动服务器,因为当前打字似乎并未即时更新
进一步阅读:
最后:
如果您处于紧要关头并且这对您不起作用,我确实成功地通过将其包装在主导出类型中为不同的(小得多)模块创建了自定义包装器
export var moduleNamer = (function(){
//module implementation
}());
然后将 .js 文件转储到我的组件本地,然后按如下方式引用它:
//reference like this from your component:
import {moduleNamer} from "./source"; //from source.js
- 富有的
关于javascript - 如何包含使用旧的导入方法到 Angular4.x 的 3rd 方库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45549698/