我希望能够动态引用JavaScript和样式表,具体取决于用户在Express中使用的页面。我认为最好的方法(虽然我愿意接受建议)是将当前视图传递给布局页面。
例如;
给出网址http://example.com/trees
我希望在layout.jade中有一些逻辑可以说明:
script(src="/javascripts/{view}.js")
将呈现为:
<script src="/javascripts/trees.js"></script>
这样做的任何建议或最佳做法?
答案 0 :(得分:4)
req.route是匹配的路由,因此req.route.path等可用,或者当然可以解析req.url。使用express 2x,您可以使用“dynamic helpers”或res.local()
自动将这些值公开给视图答案 1 :(得分:0)
这样做没有最佳实践,因为Express不提供像url帮助器这样的Rails,所以我认为你的方法很好。
答案 2 :(得分:0)
简单的答案就是将所有的javascript放入一个文件中并完成它。同样适用于CSS。有关详细信息,请参阅Ruby on Rails asset pipeline。你可能会让你的生活变得比必要的复杂,并且通过在不同的页面上使用不同的javascripts来降低效率。
然而,既然你问过,javascripts的答案很简单。只需在视图中添加额外的<script>
标记,而不是布局。问题解决了。 CSS不能干净利落,因为<link>
标签需要位于<head>
内。在这种情况下,我将我需要的样式定义为字符串数组,并在我的布局模板中循环。所以在我的路线中我设置了一个局部变量,如
locals.css = ['/css/one.css', '/css/two.css']
然后只需在模板中循环显示该模板,并为每个模板生成一个<link>
标记。