4

有没有办法在构建过程中使用预处理器替换 javascript 文件中的变量。我使用 grunt、usemin、uglifyjs(yeoman 堆栈的一部分)。

url我目前从一个全局 javascript 对象中引用。例如,

 my.url = {
     book: {
        get : '/my/book/{id},
        new: '/my/book'

     }
 }

在我的程序中,我可以参考urlasmy.url.book.get等。目的是

  • 不希望 url 字符串散布在整个程序中,因为开发过程中的任何更改都会使其难以重构。
  • url 可以基于服务器 API 生成,并且不想在客户端重复。

现在,一旦我对开发感到满意,我喜欢预处理所有 javascript 文件以将所有这些引用替换为实际的 url 字符串。目的是避免加载包含所有 url 的额外文件(可能用户只需要很少的 url)。

是否有任何类似于 html 模板包的工具来处理 javascript 并替换所有变量。我更喜欢它与 grunt/yeoman 堆栈一起使用。

4

2 回答 2

0

你可以用grunt-replace做到这一点,它允许在文本文件中进行各种字符串替换。我用它来同步 等中的版本号bower.jsonpackage.json但显然你也可以将它用于源文件值替换。

也就是说,在您的情况下,我肯定会选择使用 env 变量的更动态的解决方案,例如grunt-env

于 2013-12-10T12:46:27.720 回答
0

试试@Builder https://github.com/electricimp/Builder

小例子

config.js中:

@set apiEndpoint "https://somesite.com/api/v1"

然后:

@include once "config.js"
let url = "@{apiEndpoint}"
于 2016-04-25T09:25:01.893 回答