【问题标题】:AngularJS, Browserify and module loadingAngularJS、Browserify 和模块加载
【发布时间】:2015-07-15 23:30:43
【问题描述】:

好吧,我不知道。我现在在互联网上搜索了 3 天,但找不到任何关于如何将 Browserify 与 AngularJS 和 Gulp 结合使用的示例。是的,有一些例子,但它们都显示了简单的“hello world”应用程序结构,最终没人会使用。他们都在 app.js 主文件中编写了他们的小控制器。没有模块化设置。还有我发现的模块化设置,嗯..它们将所有文件手动包含在 index.html 文件中..叹气(对不起我的语气)。

我试图实现的是自动加载我所有的应用程序文件,但它不起作用。我需要做什么才能包含我的控制器文件?这不就是browserify的用途吗?为什么它不起作用?

第一个答案可能是:您需要require() 文件。但是怎么做?我尝试了require('myApp.mainController');require('src/features/main/main-controller.js'),结果是:

错误:未找到模块。

如果有人能指出我正确的方向,请帮助我! :)。 提前致谢!必要的信息在该行下方。


项目结构

|project
|-builds
| |-development
| |-production
|-src
| |-components
| |-features
| | |-main
| | | |-main-ctrl.js
| | | |-main.html
| | |-dashboard
| | | |-dashboard-ctrl.js
| | | |-dashboard.html
| |-app.js
| |-app.scss
| |-index.html

app.js

require('angular');
require('angular-ui-router');

var app = angular.module('myApp', [
  'ui.router',
  'myApp.mainController'
]).config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
  $urlRouterProvider.otherwise('/');

  $stateProvider
    .state('main', {
      url: '/',
      templateUrl: 'src/features/main/main.html',
      controller: 'mainController'
    })
    .state('dashboard', {
      url: '/dashboard',
      templateUrl: 'src/features/dashboard/dashboard.html',
      controller: 'dashboardController'
    })
}]);

main-ctrl.js

angular.module('myApp.mainController', [])

  .controller('mainController', ['$scope', 'Main', function($scope, Main) {
    $scope.message = Main.message;
}]);

gulpfile.js

gulp.task('js', function() {
  return browserify({
    entries: 'src/app.js',
    debug: true
  })
    .bundle()
    .pipe(gulp.dest('builds/development'))
    .pipe(connect.reload());

});

【问题讨论】:

  • 首先要了解的是,您不能将 browserify (CommonJS) 模块的名称与 Angular 模块混淆。它们不是同一件事。您最终可能会得到一些与 Angular 模块同名的 CommonJS 模块,但它们仍然是不同的东西。当你将 browserify 与 Angular 一起使用时,你最终会得到 3 层依赖管理:CommonJS 模块、Angular 的模块,然后是 Angular 的依赖注入。这篇文章通过模块化设置逐步解释事情做得很好:blog.codecentric.de/en/2014/08/angularjs-browserify
  • 感谢您指出我。我现在要读这个。
  • 好的,对我来说它现在可以工作了。我在我创建的每个“模块”中都放了一个 index.js 文件。该文件显然被视为一个模块。从这里我“需要”控制器、工厂/服务并将它们添加到我的 Angular 应用程序中。
  • @Nique 您应该发布您的解决方案作为答案,以便其他人轻松找到可能遇到类似问题的人。然后你也可以接受它作为正确答案。
  • @Chic 好了 :)

标签: javascript angularjs gulp browserify


【解决方案1】:

这就是我解决这个问题的方法。

  • 我在我创建的每个“模块”中都放置了一个 index.js 文件。该文件显然被视为一个模块。
  • 从这里我 require 控制器、工厂/服务并将它们添加到我的 AngularJS 应用程序中。

【讨论】:

  • 您好,对于丢失的群众,如果他们存在的话,您能否举个例子。我在解决 browserify 时遇到了同样的问题,但我不明白你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
  • 2016-02-24
  • 2016-05-02
  • 2013-08-28
  • 2015-02-09
  • 2012-10-10
相关资源
最近更新 更多