2015-10-15 147 views
0

很像这样stylus当路由被触发时,中间件会自动为一个模板(在我的情况下是玉)编译需要的CSS,有没有办法在路由之外自动执行 - >中间件流?是否有可能通过res.render或app.render(不是路由)自动编译触笔?

我有一个构建系统,我通过app.render呈现一些HTML文件,然后将它们保存到文件系统(许多人对电子邮件模板做类似)。我想确保当我app.render("foo.jade", func...时,foo.jade所需的任何.css文件都会从styl对应项中自动编译。如果我有一条呈现foo.jade的路线,这种情况完全自动发生,但在这种情况下,没有路线。据我所知,我可以使用stylus' api并呼叫stylus.render,但这意味着我必须“手动”指定并渲染模板所需的每个styl/css文件。

回答

0

我想确保当我app.render(“foo.jade”,FUNC ......,任何由foo.jade所需的.css文件中会自动从自己的同行STYL

编译

如果你想做到这一点的时间提前,因为当foo.jade呈现,而不是在请求GET /foo.css到,没有出现几乎可以肯定没有什么是要分析你的HTML的方式输出到文件系统和动态渲染所有引用的CSS,至少不完全符合您的规范,但是,确实存在tools来读取HTML文件并将其内嵌引用的CSS,因此您可以通过这些运行你的HTML。

您可能想看看juice,但由于它是面向电子邮件并将CSS内联到HTML本身,因此可能无法满足您的需求(这可能会在HTML旁边生成.css文件)。

我的建议是自己解析链接CSS URL的HTML,并适当地将相应的触控笔呈现到磁盘。使用一致的模式,你应该能够用一个或几个函数来处理所有的模板。

但是,如果您希望在请求出现GET /foo.css请求时将触控笔呈现为CSS,请确定现有的中间件可以这么做,或者您可以自己扮演角色。不,你不需要每条CSS路径的路由,只需要一些URL模式/参数和好的旧编程。

+0

对不起,我应该更清楚,我的电子邮件不是。我只是说我正在使用app.render的方式“一些”人做电子邮件。可能不应该提到电子邮件。而我想要做的就像你说的那样,“提前,就像在'foo.jade'呈现时' – k00k

+0

我最终使用'stylus''内置[.render](https:// learnboost .github.io/stylus/docs/js.html)函数,只需遍历'.styl'文件的目录,并在服务器启动时将它们写入我的'public/css'文件夹。感谢您的确认。 – k00k

相关问题