Javascript 如何将html(jade模板)更改为在生产中使用*.min js和css?

Javascript 如何将html(jade模板)更改为在生产中使用*.min js和css?,javascript,css,pug,gruntjs,minify,Javascript,Css,Pug,Gruntjs,Minify,我正在使用Grunt将jade模板编译为html、uglify/concat js和minimize/concat css 在开发过程中,我使用connect和watch的组合为前端服务,并自动获取更改。在本文中,我还使用了“源”js和css(而不是uglified/concatted/minified版本) 现在,当我生成产品html、js和css时,我想知道最好的解决方案是改变*.min js和css的内含物 要在我的html中更具体,例如包括: a、 css b、 css c、 css a

我正在使用Grunt将jade模板编译为html、uglify/concat js和minimize/concat css

在开发过程中,我使用connect和watch的组合为前端服务,并自动获取更改。在本文中,我还使用了“源”js和css(而不是uglified/concatted/minified版本)

现在,当我生成产品html、js和css时,我想知道最好的解决方案是改变*.min js和css的内含物

要在我的html中更具体,例如包括: a、 css b、 css c、 css a、 js b、 js

对于开发来说,这很好,但在生成我想要的生产版本时:

common-min.css common-min.js


当然,我不想手动更改Jade模板,所以我正在寻找一种更好的方法,可能是使用一些Grunt插件。

您可以将数据传递到模板中,指示您所处的环境,然后在此基础上切换所包含的内容

// In your route:
res.render("index", { env: "development" }); // maybe use NODE_ENV in here?

// Then in your jade template:
head
  if env == 'development'
    link(href="a.css", rel="stylesheet", type="text/css")
    link(href="b.css", rel="stylesheet", type="text/css")
  else
    link(href="min.css", rel="stylesheet", type="text/css")
查看Jade文档并搜索“条件”:

@Marcel 您正在寻找的是jade构建块处理器(或者更常见的是HTML构建块处理器)。不幸的是,对于jade来说,似乎只有一个gulp插件,而不是grunt插件

这个例子可能适合你的需要

// build:js app.min.js
script(src='app.js')
// /build
@杰克雷拉
对于每个版本,生产构建通常运行一次。因此,使用构建服务器、任务管理器或依赖关系管理器更有效;在服务器的请求处理程序中动态生成HTML页面的生产版本的效率较低。不要将
env
res.render()
一起使用-当整个服务器构建用于生产时,不需要用于构建生产页面的逻辑。这种生产逻辑还使请求处理程序的模块化程度降低,因为它与HTML页面耦合。只有构建服务器(专门用于构建的服务器)应该包含构建逻辑。而且,虽然可以缓存动态生成的页面,以避免在呈现HTML页面的生产版本时重复计算,但这是可以避免的内存开销。

虽然技术上是正确的,但这不是正确的方法。取而代之的是,使用voila或mincer或connect assets等工具。@MartinWawrusch为什么不提供另一个答案?我想看看其他解决方案的一些例子。至于“正确”的方法,那么。。。那是意见的问题作为众多示例之一:-负责缩小、md5文件名、cdn支持,并且不需要在jade中包含if-else块。关于正确的方法:在Rails3普及资产管理器之后,资产管理器几乎是行业标准。无论如何,还有比这更重要的事情;-)