【问题标题】:3rd Party Libraries in Angular CLI which are not on npmAngular CLI 中不在 npm 上的第 3 方库
【发布时间】:2016-11-16 04:24:17
【问题描述】:

我目前正在将一个应用从通用 Angular 2 转移到 Angular CLI

现在我正试图弄清楚如何将不在npmbower 上的第三方库(如orbitcontrols.js)导入我的应用程序.

我在https://github.com/angular/angular-cli/wiki/3rd-party-libs 上发现,导入npm 支持的库似乎并不难。

  • 其他库怎么样?

  • 有可能吗?

版本:

angular-cli 1.0.0-beta.9

【问题讨论】:

    标签: typescript angular npm angular-cli


    【解决方案1】:

    大多数情况下是的,但这也取决于库的用途。 Angular-cli 仍然存在与 3rd 方库集成的一些问题。在他们正确修复之前,我可以给你一个技巧。假设您想在代码中使用 _lodash。所以我会给你我的工作代码场景 -

    安装 lodash

    npm install lodash --save
    typings install lodash --ambient --save
    

    在此之前,请确保您在全局范围内安装类型

    npm install typings -g
    

    然后在你的 angular-cli-build.json 中,确保它保持这种方式

    module.exports = function(defaults) {
      return new Angular2App(defaults, {
        vendorNpmFiles: [
          ...
          'lodash/**/*.js'
        ]
      });
    };
    

    在你的 system-config.ts 中:

    /** Map relative paths to URLs. */
     const map: any = {
       'lodash': 'vendor/lodash/lodash.js'
     };
    
     /** User packages configuration. */
     const packages: any = {
       'lodash': {
         format: 'cjs'
       }
     };
    

    在你的 src/index.html 添加这一行(这是奇怪的修复)

    <script src="/vendor/lodash/lodash.js" type="text/javascript"></script>
    

    现在在你想要使用 lodash 的组件中,这样写

    declare var _:any;
    
    @Component({
    })
    export class YourComponent {
      ngOnInit() {
         console.log(_.chunk(['a', 'b', 'c', 'd'], 2));
      }
    }
    

    它对我有用:)。我通过 angular-cli 在我的 angular2 项目中使用了巨大的 3rd 方库。希望对你也有帮助

    编辑:

    如果您没有为您的第三方库获取任何 npm。创建一个assets 文件夹 在您的 src 文件夹下。然后您可以为jscssimages 添加单独的文件夹。 把你的第三方js放到js文件夹里面。 然后你必须像这样在index.html 中引用 js 文件:

    <script src="assets/js/your_js.js"></script>
    

    现在,当您执行ng buildng serve 时,它会自动使用您的assets/js 更新public 文件夹。希望您了解整个场景:)

    【讨论】:

    • 如果您遇到orbitcontrols.js 的任何问题,请告诉我,我可以帮助您。
    • 实际上我无法执行您描述的第一步,因为 orbitcontrols.js 不在 npm 上,所以我必须以其他方式围绕该步骤工作:-)
    • 没问题,如果它没有任何npm。为了您的方便,我发布了另一个答案
    • npmjs.com/package/orbit-controls 你在找这个吗?
    • 哦,实际上是的! thx ^^ 不知道它在 npm 上!好吧,解决了这个问题,但无论如何我都必须回答上面的问题,所以我如何导入不在 npm 上的库:-)
    【解决方案2】:

    我不熟悉 orbitcontrols.js,但我会假设它是一个全局对象。

    将该文件放在 CLI 创建的 public 目录中。我建议将类似的东西分组在那里,所以public/js/orbitcontrols.js

    然后您可以通过以下方式在 index.html 文件中引用该 js 文件:

    <script src="js/orbitcontrols.js"></script>
    

    【讨论】:

    • 好的,到目前为止一切都很好,但是你如何将它导入到 Angular 的打字稿文件中?这不会是一个简单的导入,即import { blabla } from 'orbitcontrols';,还是会这样?
    • 我将把这个答案留在这里,因为它很简单,但@pd-farhad 的答案更全面,我建议你使用 systemjs 来加载你的库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多