【问题标题】:Is it possible to use relative paths for directive templateUrls in AngularJS when bundling with Browserify?与 Browserify 捆绑时,是否可以在 AngularJS 中为指令 templateUrls 使用相对路径?
【发布时间】:2015-06-05 00:48:46
【问题描述】:

我正在使用 AngularJS 开发一个 Web 应用程序,并使用 Browserify 将我的 JS 文件捆绑到一个单独的包中以在页面中使用。目前我的结构是这样的:

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

因为捆绑的 javascript 文件最终位于 app 文件夹中,所以我的指令最终看起来像这样:

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

这一般来说效果很好,但是如果在更多开发人员参与后项目变得足够复杂,那么路径可能会变得相当长,并且在以这种方式定义指令时移动指令会有些困难(更改 templateUrl 路径是一个相对容易忘记的额外步骤。

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

编辑:如果有帮助,如果我能找到一种方法来获取捆绑在模块本身内的脚本的原始文件路径,我就可以完成这项工作,但我不知道如果 Browserify 支持。

【问题讨论】:

    标签: javascript angularjs browserify


    【解决方案1】:

    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')
    ]})
    

    【讨论】:

    • 它看起来很方便,但据我所知,它主要用于手动别名文件路径(例如,将 './components/module1' 映射为 'module1' 以便我可以访问该目录直接),这并不能真正帮助解决更复杂的文件结构和必须手动管理路径的潜在问题(我仍然必须手动为每个路径设置别名,所以我主要只是将混乱转移到其他地方)。我会多看一点,它可能会清理一些东西,但就目前而言,我不确定它是否会对我的具体情况有所帮助。
    猜你喜欢
    • 2014-11-08
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2012-02-09
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多