我正在使用Angular
进行前端使用,我正在尝试将每个模块的应用程序分开。
对于组织,我希望每个文件单独一个模块,所有控制器都是文件结构示例:
- module1 (paste)
- controllers (paste)
- controller1.js
- controller2.js
- module.js
module1.js
需要controller1.js
和controller2.js
,主javascript文件需要所有模块文件。
对于控制器,我module.exports
只有控制器的内容,例如:
// controller1.js
module.exports = ["$scope", function(scope) {
// some code here
}];
在我的模块文件中,我这样要求:
//module1.js
var app = angular.module("module1", []);
app.service("service1", function() {});
app.controller("controller1", require("./controllers/controller1.js");
module.exports = app;
直到这一刻,是好的。
但是当我尝试使用module1.js
到module2.js
使用service1
时,这是返回service1
未定义。
//module2.js
require('../module1/module.js');
var app = angular.module("module2", ['module1']);
app.controller('controller2-1', ["$scope", "service1", function(scope, service1) {
// some code
});
每个文件分隔模块的正确方法是什么,需要Browserify
?
答案 0 :(得分:1)
试试这个:
//child module
var angular = require('angular');
var moduleName = 'moduleChild';
var moduleDependencies = [...];
app.module(moduleName, moduleDependencies)
.controller('foobarctrl', [function(){}]);
module.exports = moduleName;
//parent module
var angular = require('angular');
var moduleChild = require('/path/to/file');
var moduleName = 'moduleChild';
var moduleDependencies = [moduleChild];
app.module(moduleName, moduleDependencies)
.controller('foobarbazctrl', [function(){}]);
module.exports = moduleName;
这种方式是使用browserify最清晰的方式之一,导出module1对象是没有用的,因为你不想重复使用它,你只需要那里的名字。