我一直在努力寻找创建模块化,可扩展角度应用程序的最佳方法.我非常喜欢angular-boilerplate,angular-app等项目的结构,其中所有相关文件按部分和指令的特征组合在一起.
project
|-- partial
| |-- partial.js
| |-- partial.html
| |-- partial.css
| |-- partial.spec.js
Run Code Online (Sandbox Code Playgroud)
但是,在所有这些示例中,模板URL相对于基本URL加载,而不是相对于当前文件:
angular.module('account', [])
.config(function($stateProvider) {
$stateProvider.state('account', {
url: '/account',
templateUrl: 'main/account/account.tpl.html', // this is not very modular
controller: 'AccountCtrl',
});
})
Run Code Online (Sandbox Code Playgroud)
这不是非常模块化的,并且可能难以在大型项目中维护.templateUrl每次移动任何这些模块时,我都需要记住改变路径.如果有一些方法可以相对于当前文件加载模板,那将是很好的,如:
templateUrl: './account.tpl.html'
Run Code Online (Sandbox Code Playgroud)
有没有办法在角度做这样的事情?
angularjs angularjs-directive angular-template angular-ui-router
在不暴露全局变量的情况下在Angular中使用第三方库的最佳方法是什么?
例如,如果我使用underscore.js,我想只将_注入使用它的控制器.
angular.module('module').controller(function(_) {
// _ is injected only into this scope
};
Run Code Online (Sandbox Code Playgroud)
为了达到这个效果,我看到有些人用脚本标签全局加载下划线,然后创建这样的服务:
myModule.factory('_', function ($window) {
return $window._;
});
Run Code Online (Sandbox Code Playgroud)
但是,这仍然用_污染全球范围.
是否存在注册和注入第三方库而不会导致此问题的"Angular方式"?