2015-03-31 10 views
2

我正在使用AngularJS处理Web应用程序,使用Browserify将我的JS文件捆绑到一个包中以便在页面中使用。目前,我的结构是这样的:与Browserify绑定时,是否可以在AngularJS中使用相对路径作为指令templateUrls?

app 
|-index.html 
|-index.js 
|-bundle.js 
|-components 
    |-module1 
    |-index.js 
    |-module1.directive.js 
    |-module1.html 

由于捆绑的JavaScript文件中的应用程序文件夹中结束了,我的指令最终看起来像这样:

module.exports = angular.module('module1.directive', []) 
    .directive('moduleDirective', function() { 
     return { 
      restrict: 'E', 
      templateUrl: './components/module1/module1.html' 
     ); 
    }); 

这工作一般做得不够好,但如果在更多的开发人员参与后项目变得足够复杂,则路径可能会变得相当长,并且在以这种方式定义指令时难度更大(更改templateUrl路径是一个相对容易忽略的额外步骤)。

我想知道的是,有没有办法让我在templateUrl中使用相对路径,以便在将文件捆绑在一起时,Browserify能够正确解析它?

编辑:如果有帮助,我可以做这个工作,如果我能找到一种方法来获取脚本的原始文件路径,但是我不知道是否Browserify支持。

回答

0

pathmodify插件可以解决您的问题吗?更多信息可以在GitHub上找到(https://github.com/jmm/pathmodify

var pathmodify = require('pathmodify'); 
browserify() 
    .plugin(pathmodify(), {mods: [ 
     // Make code like `require('app/something')` act like 
     // `require('/somedir/src/something')` 
     pathmodify.mod.dir('app', '/somedir/src') 
]}) 
+0

它看起来方便,但据我可以告诉它的主要意思为手动别名文件路径(例如,映射“./components/module1' 为”模块1 ',以便我可以直接访问该目录),这并不能真正帮助解决更复杂的文件结构的潜在问题,并且不得不手动管理路径(我仍然必须手动为每个路径别名,所以我主要只是将其他地方的混乱)。我会再看看它,它可能会清理一些东西,但就目前情况而言,我不确定这会对我的具体情况有所帮助。 – 2015-03-31 16:25:54

相关问题