AngularJS最佳实践

翻译自:Best Practices

  • 命名要发布的代码

    不用担心内部代码的指令前缀,但是一旦你计划开源你的代码,其需要被命名。

    • ng-前缀预留给Angular内部使用
    • 有目的的命名(例如:i18n- 或者 geo-)比任意的命名(djs- 或者 igor-)好很多
    • 可以使用ui-alias移除第三方前缀。
  • 只为原子事件使用.$broadcast().$emit().$on()
    在整个应用程序中相关的事件(例如用户授权或者关闭应用)。如果你希望特定于模块、服务或小部件的事件,你应该考虑使用服务、指令控制器或者第三方库。

    • $scope.$watch() 应该能满足这些需求
    • 注入服务和直接调用方法同样有效
    • 指令间可以通过指令控制器相互交流
  • 让用户尽可能的使用表达式

    • ng-hrefng-src 支持 {{}}
    • 使用$attrs.$observe(),因为表达式是异步的,并且可能改变
  • 通过使用指令的Controller来扩展指令

    你可以把方法和属性放在指令的控制器中,通过其他的指令获取到控制器。你甚至可以通过这样来覆盖方法和属性。

  • 给控制器和指令添加销毁代码

    在指令和控制器销毁前会触发事件。这给了拆解你的插件和监听的机会,来更好的实现垃圾回收。

    • 注册$scope.$on('$destroy', ...)事件
  • 恰当地利用模块

    把你的代码分成相关的包,而不是横向切分你的模块,导致其不能被分解。这样的话,当你移除了一个模块,你的应用仍然可以继续工作。

    • 检出angular-app/angular-app 当作一个例子
    • 在多个.config()方法中定义路由
    • 模块有自己的依赖
    • 目录结构应该反应模块结构
  • 使用NPM和Bower

你可能感兴趣的:(AngularJS最佳实践)