angular - prod和dev中的不同目录结构 - 如何管理templateUrl

时间:2015-03-26 12:59:52

标签: javascript angularjs directive

我正在使用gulp来缩小并将我的html视图从dev复制到prod目录。我遇到的问题是,我需要在我的自定义指令的templateUrl参数中考虑更改目录结构。

例如,如果dev和prod看起来像:

  

dev - > js - >观点 - > view.html

  

prod - > js - >观点 - > view.html

我的指令看起来像:

directive = {
    templateUrl = 'dev/js/views/view.html'
}

当然,这在dev中运行良好,但是当我构建我的生产应用程序时,它不起作用......

有没有一种标准方法可以解决这个问题?我是否只需要放弃拥有两个不同的视图目录(一个用于dev,一个用于prod)?

提前致谢。

3 个答案:

答案 0 :(得分:0)

您可以在构建时使用令牌替换您的URL(或其他值)。看一下gulp-token-replace节点模块。

基本上你最终会得到的是

directive = {
    templateUrl = {{url}}
}

在您的gulp配置中,您可以根据正在进行的构建类型更改url

Here是一篇很好的文章,展示了它如何完成gulp和其他系统。

答案 1 :(得分:0)

<base href="/dev/">

为你工作?你能让服务器发出这个吗?所以当它从一个ENV'升到另一个ENV时它才起作用。

另外,你的网络服务器/平台也许可以为你做这个,ASP.NET就是“〜”

另外,请查看Stating directive templateUrl relative to root

史蒂夫

答案 2 :(得分:0)

定义常量

app.constant('APP_CONFIG', {
   'ENVIRONMENT': 'dev/prod'
});

<强>指令

(在指令中注入APP_CONFIG)

directive: {
   templateUrl: function () {
      return APP_CONFIG.ENVIRONMENT === 'dev' ? '/dev/path' : 'prod/path'
   }
}