2017-10-20 165 views
1

我正尝试使用第三方模块作为我的角度应用程序中的节点模块。我刚开始使用angular,但我还没有完全理解模块化行为。 我正在通过脚本标记导入角模块(路由器等),并将它们注入到我的主应用程序模块中,但我不知道如何注入节点模块。在Angularjs中使用节点模块

Google让我更加困惑于CommonJS,AMD等词语,因为我刚开始学习模块化方法。 有人可以指导我如何在我的应用程序模块中注入节点模块?

我正在使用AngularJS v1.6.4。我可以选择使用browserify和webpack。我有他们两个。

+0

您首先需要说明您的问题,说明您是使用AngularJS(1.x)还是Angular(2.x或更多),并告诉我们如何构建您的应用程序。 –

+0

@JB Nizet我添加了这个细节 –

回答

0

在您使用npm安装模块之后,您必须将其包含在脚本标记中。像这样

<script src="node_modules/angular-messages/angular-messages.min.js"></script>

(I使用角度的消息作为一个例子)

这通常index.html中与所有其他脚本标记完成的,一起。路线必须是正确的,当然。它将从服务器的角度来看,开发者工具会告诉你它是否找不到该文件。您必须检查模块文件夹和/或读取模块的自述文件以查找要使用的文件。您想要的大多数模块的实际代码是一个.js文件。

您还可以缩短路径。如果您使用的表达会这样

app.use('/angular-messages', express.static(path.join(__dirname, 'node_modules/angular-messages')));

来完成,因为快递设置路由角的消息node_modules script标签将变为

​​

/角度消息

要使模块在AngularJS中工作,您必须将它作为依赖项添加到应用程序中。例如:

angular.module('myapp', ['ngRoute', 'ngMessages']).config(config).run(setupAuth)

模块的自述会告诉你模块的名称。在这种情况下,它被命名为ngMessages,因此被添加为依赖项。这通常在引导AngularJS应用程序的文件(app.js或类似的东西)中完成。您可以阅读关于模块功能如何工作here。第二个参数通常是一个包含依赖项名称的数组。

应该指出,只有AngularJS模块被添加到这个数组中。如果您的模块不是AngularJS模块,例如validator.js,您必须找到其他方式来使用它。当一个脚本包含在脚本标签

<script src="node_modules/validator/validator.min.js"></script>

它的代码将在全球窗口对象是可用的。要在AngularJS中访问窗口,您可以使用$ window服务。例如:

let isItAlpha = $window.validator.isAlpha('test123'));

文件validator.min.js可以访问的对象称为验证,其中包含一个名为是字母功能。我可以通过$ window访问它,因为窗口对象包含从validator.min.js中读取的代码。这可能不是使用非AngularJS模块的最纯粹的方式,但它可行。许多非AngularJS模块也将AngularJS包装器作为单独的模块。在尝试使用主版本之前,您可以尝试找到AngularJS版本。

在使用browserify和webpack之前,我会用它来工作。