Javascript 需要带有Browserify的控制器、工厂、服务和指令文件

Javascript 需要带有Browserify的控制器、工厂、服务和指令文件,javascript,angularjs,node.js,gulp,browserify,Javascript,Angularjs,Node.js,Gulp,Browserify,在我的gulp browserify设置中,我正在编写一个新的AngularJS应用程序。因为我知道这将是一个非常大的应用程序,我希望我的基础结构尽可能干净和清晰 在browserify的主条目javascript文件中,我设置了主角度模块,并在我的app.config事件中使用ui router定义了路线 现在,我不希望应用程序中的每个控制器/工厂/指令都有一个require()语句 我希望我可以要求目录中的所有文件如下: require('./dashboard/*.js'); requir

在我的gulp browserify设置中,我正在编写一个新的AngularJS应用程序。因为我知道这将是一个非常大的应用程序,我希望我的基础结构尽可能干净和清晰

在browserify的主条目javascript文件中,我设置了主角度模块,并在我的app.config事件中使用ui router定义了路线

现在,我不希望应用程序中的每个控制器/工厂/指令都有一个
require()
语句

我希望我可以要求目录中的所有文件如下:

require('./dashboard/*.js');
require('./users/*.js');
require('./settings/*.js')
但显然你不能


在我的应用程序的主入口点中要求所有我的应用程序文件的最干净的方法是什么?

我建议查看中描述的方法

它的主要思想放在每个文件夹中,比如
controller
service
它们自己的
index.js
。 在这种情况下,在你的
app.js
中应该有某种要求:

var angular = require('angular');
var app = angular.module('todoApp', []);

// one require statement per sub directory instead of one per file
require('./service');
require('./controller');
controller
文件夹中的
index.js
看起来像

var app = require('angular').module('todoApp');

app.controller('EditTodoCtrl', require('./edit_todo'));
app.controller('FooterCtrl', require('./footer'));
app.controller('TodoCtrl', require('./todo'));
app.controller('TodoListCtrl', require('./todo_list'));
app.controller('ImprintCtrl', require('./imprint'));
以及
controller
declaration-
todo.js

module.exports = function($scope, TodoService) {
    // ...
};

有关更多详细信息,请查看原始版本。

经过进一步研究,我发现一个模块完全符合我的要求:

1)使用NPM安装Bulkify

npm install bulkify
2)在浏览任务中需要Bulkify:

var bulkify      = require('bulkify');
var bundle = function() {
    return b.transform(bulkify)
        .bundle()
};
require('bulk-require')(__dirname, ['./*/*.js']);
3)在browserify.bundle()之前添加bulkify转换:

var bulkify      = require('bulkify');
var bundle = function() {
    return b.transform(bulkify)
        .bundle()
};
require('bulk-require')(__dirname, ['./*/*.js']);
4)在javascript文件中使用批量函数:

var bulkify      = require('bulkify');
var bundle = function() {
    return b.transform(bulkify)
        .bundle()
};
require('bulk-require')(__dirname, ['./*/*.js']);

这需要curren文件的任何子文件夹中的每个javascript文件。

这是可以管理的,但由于应用程序太大,我不使用该文件夹结构。相反,我有应用程序功能的文件夹。更多信息。现在,您实际上是在移动require语句,而不是删除它们。无论您使用的是什么文件夹结构,正如您所提到的,idea,将
require
重新分发到某些特定的部分。如果您添加了一些新对象,您应该更新刚刚连接到此部分的
index.js
。在其他情况下,但我不知道它是否与browserify兼容。您可以尝试使用npm模块,或者类似的模块。我的具体目标是消除我的应用程序文件中的每个require语句。最后,我找到了一个模块,它完成了我需要的功能:bulkify。谢谢你的时间!