gpt4 book ai didi

angularjs - angular.js - 定义实用程序库的最佳实践

转载 作者:行者123 更新时间:2023-12-03 22:26:14 25 4
gpt4 key购买 nike

我正在使用 Angular 迈出第一步,我需要定义一个实用程序帮助库,其中包含几个函数方法,例如
dataHelper.parse , dataHelper.sanitize , ETC

以 Angular 组织它的推荐方法是什么?

最佳答案

对于实用方法,我会将它们组织在 Angular 框架之外的库中,但对 angular.extend 的依赖性很小。如果您希望您的库完全独立于 Angular,您可以替换为 extend用你自己的实现。

将您的实用程序 API 封装在 JavaScript 封装中,并将您的库作为 window 的属性公开(在下面的示例中,我将我的库命名为 myLibrary,但您可以自由选择您喜欢的任何名称)。通过将您的库附加为 window 的属性,您将可以无条件引用“myLibrary”。如果您好奇,这正是 angular 库的公开方式。

 (function (window, document) {
'use strict';

// attach myLibrary as a property of window
var myLibrary = window.myLibrary || (window.myLibrary = {});

// BEGIN API
function helloWorld() {
alert('hello world!');
}

function utilityMethod1() {
alert('Utility Method 1');
}

function utilityMethod2() {
alert('Utility Method 2');
}
// END API

// publish external API by extending myLibrary
function publishExternalAPI(myLibrary) {
angular.extend(myLibrary, {
'helloWorld': helloWorld,
'utilityMethod1': utilityMethod1,
'utilityMethod2': utilityMethod2
});
}


publishExternalAPI(myLibrary);

})(window, document);

用法

添加脚本后,您可以从任何地方使用您的库 - 服务、工厂、提供程序、 Controller 、指令等。
<script type='text/javascript' src='angular.js'></script>
<script type='text/javascript' src='myLibrary.js'></script>

<script>
myLibrary.helloWorld();
myLibrary.utilityMethod1();
myLibrary.utilityMethod2();
</script>

实用程序库与 Angular 服务

我更喜欢实用程序函数驻留在自己的库中而不是 Angular 服务中的原因是因为我认为它们与 Angular 生态系统是分开的。这些实用功能几乎是独立的,并且与模块无关,而 Angular 服务/工厂与 Angular 的其他部分(包括 Controller 和指令)密切合作,并且与模块密切相关。

扩展 Angular

如果你真的想要,你甚至可以扩展 Angular 库本身。只需替换 myLibraryangular在脚本中(注意:这可能是不可取的,因为它会使您的脚本依赖于 Angular 实现)。

关于angularjs - angular.js - 定义实用程序库的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24604103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com