【问题标题】:Using a node module in my Angularjs app在我的 Angularjs 应用程序中使用节点模块
【发布时间】:2017-01-08 00:08:39
【问题描述】:

我遇到了一些我想在我的 Angular 应用程序中使用的模块,但是我正处于如何在我的 Angular 应用程序中工作的十字路口,因为我需要在我的工厂文件中“require()”。

这是我感兴趣的节点模块:https://github.com/TimNZ/node-xero

在这个当前的项目中,我在 Yeoman 中使用 Gulp Angular 来生成我的样板文件,如果我需要修改任何 gulp 脚本,我很难弄清楚我应该如何完成这项工作。

我在想我可以“浏览”将使用 require() 的单个文件,但这是错误的方法吗?我应该浏览所有项目文件吗?这是标准做法吗?

感谢任何建议,目前让我停滞不前。

我想使用的与 Xero 相关的所有模块似乎都是节点模块。

【问题讨论】:

    标签: javascript angularjs node.js gulp browserify


    【解决方案1】:

    最简单的起点是使用 Browserify 构建一个使用您选择的全局的独立包。

    为此,您可以创建一个需要您要使用的节点模块的 JS 文件。您可以使用以下内容创建一个名为 bundle-index.js 的文件:

    exports.xero = require('node-xero');
    

    然后你可以运行这个命令来构建一个独立的模块:

    browserify --standalone the_global bundle-index.js > bundle.js
    

    其中the_global 是您认为适合包含导出的全局对象的名称。将 bundle.js 文件包含在 script 元素中,您可以像这样使用它:

    var privateApp = new window.the_global.xero.PrivateApplication({ ... });
    

    以这种方式做事将对您当前的项目造成最少的干扰。如果您只需要使用 Browserify 来获取不经常更改的第三方库,则可以从简单的手动过程开始构建独立包。

    请注意,您可以通过向bundle.js 添加额外的导出来导出其他所需的模块:

    exports.xero = require('node-xero');
    exports.someOtherModule = require('some-other-module');
    

    【讨论】:

      【解决方案2】:
      (function(){
      
         var xero = require('node-xero');
      
          angular
              .module('app')
              .factory('myFactory', myFactory);
      
          function myFactory(){
      
              var helper = {
                  myMethod: myMethod,
              };
      
              return helper;
      
              function myMethod(){
                  xero.doStuff();
              }
      
          }
      })();
      

      【讨论】:

      • 作为浏览器特定的应用程序,“require()”不可用。
      猜你喜欢
      • 2018-04-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多