Angular.js扩展$ inject所以它可以加载文件?

时间:2014-11-20 08:23:28

标签: javascript angularjs

我从头开始新的angular项目,我希望完全避免使用require.jsbrowserifywebpack。我将把所有代码放入单独的文件中 - 没有单片 controllers.js directives.js 文件......

剩下的选项很少:

  1. 使用<script>标签并始终将新文件放在底部(下方我可能会在某些时候弄乱文件的顺序)
  2. 使用 concatination 机制,即gulp-concatgrunt-concat
  3. 它们都很难看 - 首先是维护噩梦,第二个需要构建步骤和文件观察器设置......

    我可以使用的最接近的事情是require.js,但我真的很反感将角度与require结合后代码的外观:

    define([], function () {
      angular.module('app').controller('BlaBlaController', function () { ... });
    })
    

    因为angular正在为我处理所有的DI.js仅用于文件加载,这有点令人伤心,并且使得require.js因为这么小的任务而过度杀伤。

    我想要的是扩展$inject服务,以便它知道如何加载外部文件以及它应该是什么样子:

    • 创建di.config.js文件,我在其中指定各种&#34;注射剂的路径&#34; (很像require.conf.js
    • 创建一个简单的脚本加载器,它将知道如何递归加载模块
    • 现在为DI机制

    -

    if (injectableIsLoaded) {
      angular.module('app').controller('Controller', function (dep1) {});
    } else if (injectableHasPath) {
      diLoader.load(injectablePath).then(evalModule);
    } else {
      throw "No path for module";
    }
    

    有人知道这是否可行?

    我从中获胜 - 我不需要在奇怪的require.js调用中包装我的角度代码,不需要构建步骤,可以保留所有文件,并按需分开加载它们。 ..

0 个答案:

没有答案