你是否遵循AngularJS的最佳实践?– 如何使用angular-hint

最近我正在写一本名为”AngularJS参考书”的书,但由于纸面和时间的限制,有很多内容没有写入。

因此,我计划在这里随机介绍一些没有写入书籍的内容。

这次我要介绍一个叫angular-hint的工具。

    https://github.com/angular/angular-hint

这是Angular团队中的一名成员正在开发的工具,当将其集成到使用AngularJS开发的应用程序中并执行时,它会帮助检测错误,并检查是否符合最佳实践。

然而,请注意,由于说明文中标记为WIP(工作进行中)的原因,似乎仍处于开发阶段。
请注意,如果集成了angular-hint,应用程序可能会变得无法运行。

Angular-hint的使用方法

在使用angular-hint之前,您可以从GitHub获取源代码并进行构建,或者使用npm获取。在这里,我们将使用npm。

$ npm install angular-hint

在从npm获取的目录中,有一个名为 node_modules/dist/hint.js 的文件,请复制并使用它。

在使用AngularJS构建的应用程序中,我将文件hint.js加载在加载angular.js之后。

<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript" src="hint.js"></script>

然后,给具有ng-app属性的元素添加ng-hint属性。

<html ng-app="yourApp" ng-hint>

只需运行应用程序,就能在控制台上显示按类别和错误级别分组的指示内容。

ng-hint.png

angular-hint的提示内容。

在Angular中,指摘的内容可以分为6个类别:模块(Modules)、控制器(Controllers)、指令(Directives)、DOM、事件(Events)、插值(Interpolation)。该指摘还有三个级别:错误、警告、建议。需要注意的是,angular-hint会根据不同的类别拆分为不同的存储库,您也可以选择不检查不需要的类别。但在本文中将不详细介绍这部分内容。

指责的内容包括以下几点。

    • Modules

[エラー] ng-appを付与した要素が入れ子になっているとエラー
[警告] angular.moduleで同じ名前のモジュールを複数作っていると警告
[警告] angular.moduleでモジュールを作ったのに、どこからも使われていないと警告
[提案] モジュールの名前にプリフィックスが付いていなかったり、キャメルケースになっていないときに警告
[提案] ng-viewディレクティブを使っているのにngRouteモジュールをロードしてない時に警告

Controllers

[警告/エラー] コントローラをグローバル関数として定義していると警告(AngularJS 1.3ではエラー)
[警告] コントローラの名前の先頭が大文字になっていないと警告
[警告] コントローラの名前の後ろにControllerが付いていないと警告

Directives

[エラー] ディレクティブの名前や属性の名前を間違えているとエラー
[エラー] 属性を指定する必要があるディレクティブで、属性が省略されているとエラー
[エラー] restrictの指定を間違えているとエラー
[エラー] deprecatedなオプション(replace)やディレクティブ(ng-bind-html-unsafe)を使っているとエラー
[エラー] ng-repeat内でオプションの順番などが間違っているとエラー
[提案] onclickやonfocusなどのネイティブなイベントを利用していると警告
[提案] ディレクティブ名にプリフィックスをつけていないと警告

DOM

[警告] コントローラの中からDOMを直接操作していると警告

Events

[エラー] ngClickやngFocusなどのイベント系ディレクティブの中で、$scopeに存在しない変数やメソッドにアクセスしていたらエラー

Interpolation

[エラー] エクスプレッションで {{hoge.foo.bar}} のようにアクセスしているとき、hogeやfooがundefinedだったらエラー

如果错误地输入了指令名称,它会提示类似的名称,例如”找到错误的属性 “ng-reapet”,试试 “ng-repeat”.” 这真聪明啊。
我第一次知道指令中的replace属性已经不赞成使用了。
此外,它似乎还非常努力地分析是否在控制器中进行了DOM操作。

虽然目前可以进行的指正类型还很少,但Angular团队能够提供最佳实践非常令人感激。期待未来的发展。

广告
将在 10 秒后关闭
bannerAds