Javascript AngularJS从文件夹加载控制器
我是AngularJS新手,对如何从结构化文件夹加载控制器和其他js有疑问 例如,我有一个结构:Javascript AngularJS从文件夹加载控制器,javascript,angularjs,Javascript,Angularjs,我是AngularJS新手,对如何从结构化文件夹加载控制器和其他js有疑问 例如,我有一个结构: app/ -common -users --userController.js --userService.js -orders -app.js 如何从文件夹用户加载控制器和服务 还有一个小问题:什么是squre app.config(['someThing'], function($routeProvider) 你可以把代码放在你想放的地方。如果你把它们放到angular模块中,angular
app/
-common
-users
--userController.js
--userService.js
-orders
-app.js
如何从文件夹用户加载控制器和服务
还有一个小问题:什么是squre
app.config(['someThing'], function($routeProvider)
你可以把代码放在你想放的地方。如果你把它们放到angular模块中,angular就会找到它。因此,如果你在
/app/common/services/foo.js
中有一项服务,比如:
angular.module('app').service('foo', function() { ... });
您可以在userController
中执行此操作:
angular.module('app').controller('UserController', function($scope, foo) { ... });
在这里,您可以看到我如何在控制器中注入foo
。Angular依赖项注入
系统足够智能,无论您将代码放在何处都可以找到它们
您还可以创建不同于app
的模块,您可以有:
angular.module('other').service('bar', function() { ... });
在这里定义app
模块,如下所示:
angular.module('app', []);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function($scope, foo) { ... }]);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function(f, g) { ... }]);
您只需要将新模块作为依赖项添加到那里,这就是[]
的用途:
angular.module('app', ['other']);
现在,您也可以在控制器中使用服务条:
另一方面,您所讨论的语法是数组表示法,类似于:
angular.module('app', []);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function($scope, foo) { ... }]);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function(f, g) { ... }]);
如果在缩小代码时损坏了代码,则需要这样做,因为在缩小的代码中,可以得到如下内容:
angular.module('app', []);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function($scope, foo) { ... }]);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function(f, g) { ... }]);
如您所见,函数参数现在是f
和g
,Angular不知道根据这些名称注入什么,因此它查看我们提供的字符串,因此它将知道f
是$scope
和g
是foo
不需要直接使用此注释,有几种工具可以根据您的需要进行此操作
干杯
编辑:您需要将每个javascript文件添加到一个
中,否则将无法加载并且无法找到它
一个接一个地添加文件是一件痛苦的事情,因为你可以有5个,也可以有200个
最好对它们进行concat,为此我建议:grunt-concat-sourcemap
,因为它将生成一个sourcemap,所以整个应用程序将有一个文件,但在开发工具中,您将在单独的文件中看到它们
我建议您检查linemanjs,这是一个开发javascript应用程序的好工具,它可以为您查看文件、源地图、缩小、数组表示法等…您必须链接主HTML页面中的所有文件,并确保它们已加载。正如上面德怀特所指出的
另一种方法是使用Grunt.js之类的东西“构建”应用程序。这将包括将所有controller.js文件合并为一个文件,然后将其加载到HTML页面中。通过这种方式,所有文件都将单独用于开发,但会被编造出来用于部署 我想你错过了自动加载其他模块的意图。是的,Angular将能够加载其他模块,但它不知道在服务器上的何处可以找到它们!您应该将每个脚本文件放在页面上的
标记中以加载它们,或者将所有脚本连接到一个大脚本中。Grunt之类的框架或工具将帮助您实现这一点。您的评论就是im搜索的内容。请提供更多关于如何使用Grunt解决此问题的详细信息。