Javascript 角度+;粗制滥造

Javascript 角度+;粗制滥造,javascript,angularjs,browserify,Javascript,Angularjs,Browserify,我目前正在试验Browserify+Angular,我遇到了一个奇怪的问题。我在控制器的子目录中创建了一个名为controllers/start controller.js的文件` 在我的app.js文件中,我有一个引用控制器的局部变量: var controllers=require('./controllers/') controllers/中有一个index.js文件,该文件引用启动控制器: require('./启动控制器') 然后回到我的app.js中,要调用控制器,我有以下命令: a

我目前正在试验Browserify+Angular,我遇到了一个奇怪的问题。我在控制器的子目录中创建了一个名为
controllers/start controller.js
的文件`

在我的app.js文件中,我有一个引用控制器的局部变量:

var controllers=require('./controllers/')

controllers/
中有一个index.js文件,该文件引用启动控制器:

require('./启动控制器')

然后回到我的app.js中,要调用控制器,我有以下命令:

app.controller('StartController',['$scope',controllers.StartController])

问题:

在当前设置下,无法识别StartController,并且无法进行角度投掷。但是,如果我将局部变量更改为直接包含启动控制器:

var控制器=需要('./控制器/启动控制器')


这很好,但这不是我真正想要的。我希望能够在controllers/index.js中引用控制器。app.controller在调用StartController时是否缺少某些内容,这就是它无法识别它的原因吗?

不确定
索引
启动控制器
文件的内容,但看起来您需要在索引文件中导出
StartController

尝试在您的
controllers/index.js

exports.StartController = require('./start-controller');
James Halliday(substack,browserify的创建者)一直在努力编写browserify手册:

这个资源非常好。它深入探讨了如何工作和解决依赖关系。这是迄今为止我在这个问题上见过的最好的资源。也许,如果你(或其他有类似问题的人)读一读,答案可能会跳到你身上

我知道这不是对你问题的直接回答,但我只是最近才发现这个资源,我希望我能早点知道它的存在


关于browserify的介绍,我建议观看以下tagtree视频:

Angular令人敬畏的地方在于它的模块化设计。模块性也有助于对每个模块进行单元测试

在index.js文件中,您可以建立一个角度模块:

module.exports = angular.module('app.controllers', [
  require('./start-controller').name
]);
然后在start-controller.js文件中:

  module.exports = angular.module('app.controllers.startController', [])

  .controller('StartCtrl', ['$scope',

    function($scope, ) {

    }
  ]);
现在,当您只想测试启动控制器时,您已经将其隔离在angular内部

此时,如果您想将此模块添加到更大的应用程序中,例如您的根应用程序,您需要在顶层执行完全相同的过程:

 module.exports = angular.module('app', [
    'ui.router', // Third party library that we've pulled in with an earlier require()
    require('./controllers').name
  ]);
然后在index.html文件中:

<html lang="en" ng-app="app" class="no-js">


所说的“无法识别StartController”是否意味着
控制器。StartController
未定义?你能举个小例子吗?我无法复制我这边的任何问题。我相信@RickvanMook的答案是正确的解决方案,但是发布
index.js
会更有帮助。虽然这是一个很好的参考,非常有用,但它没有回答问题。