Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在生成期间替换变量引用的Javascript预处理器_Javascript_Gruntjs_Yeoman_Grunt Usemin - Fatal编程技术网

用于在生成期间替换变量引用的Javascript预处理器

用于在生成期间替换变量引用的Javascript预处理器,javascript,gruntjs,yeoman,grunt-usemin,Javascript,Gruntjs,Yeoman,Grunt Usemin,是否有一种方法可以在构建过程中使用预处理器替换javascript文件中的变量。我使用grunt、usemin、uglifyjs(yeoman堆栈的一部分) 我目前从全局javascript对象引用url。比如说, my.url = { book: { get : '/my/book/{id}, new: '/my/book' } } 在我的程序中,我可以将url称为my.url.book.get,等等。目的是 不要让url字符串散布

是否有一种方法可以在构建过程中使用预处理器替换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堆栈一起工作。

您可以使用它来实现,它允许在文本文件中进行各种字符串替换。我使用它来同步
bower.json
package.json
等中的版本号,但显然您也可以将其用于源文件值替换

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

试试@Builder

小例子

config.js中

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


您可以通过C预处理器毫无问题地运行大多数js。有点黑,但它能用。谢谢你的提示。我从未使用过它,如果它基于节点/grunt,我可以轻松地将其与我的工作流集成。无论如何,如果没有其他方法,我会研究它。为什么不简单地提供一个“facade”模块来保存像
getBook()
这样的方法呢。这不仅可以提高可读性,还可以提高可维护性。如果你想在这里发布你自己的项目,我强烈建议你阅读。
@include once "config.js"
let url = "@{apiEndpoint}"