【发布时间】:2013-12-08 21:27:46
【问题描述】:
有没有办法在构建过程中使用预处理器替换 javascript 文件中的变量。我使用 grunt、usemin、uglifyjs(yeoman 堆栈的一部分)。
我目前从全局 javascript 对象中引用 url。例如,
my.url = {
book: {
get : '/my/book/{id},
new: '/my/book'
}
}
在我的程序中,我可能会将url 称为my.url.book.get 等。意图是
- 不希望 url 字符串散布在整个程序中,因为开发过程中的任何更改都会使其难以重构。
- url可以根据服务端API生成,不希望在客户端重复。
现在,一旦我对开发感到满意,我喜欢预处理所有 javascript 文件,以将所有这些引用替换为实际的 url 字符串。目的是避免加载包含所有 url 的额外文件(可能用户只需要很少的 url)。
有没有类似html模板包的工具来处理javascript并替换所有变量。我更喜欢它与 grunt/yeoman 堆栈一起使用。
【问题讨论】:
-
您可以毫无问题地通过 C 预处理器运行大多数 js。有点hacky,但它有效。
-
感谢您的提示。我从未使用过它,如果它是基于节点/grunt 的,我可以轻松地将它与我的工作流程集成。无论如何,如果没有其他办法,我会调查一下。
-
你为什么不简单地提供一个“外观”模块来保存像
getBook()这样的方法。这不仅会提高可读性,还会提高可维护性。
标签: javascript gruntjs yeoman grunt-usemin