Node.js 自动将资产包括到模板中

Node.js 自动将资产包括到模板中,node.js,dust.js,Node.js,Dust.js,我正在使用Node.JS和Express 我的模板层次结构具有: 1布局模板-基础模板 1页模板-这是将呈现的模板 可选的部分数-页面模板可能包含这些部分 布局。灰尘(布局模板): {+content}{/content} 主页.dust(页面模板): {>layout/} {sidebar/} {>widget/} {/content} 当用户访问网站主页时,home.dust将被呈现,用户将看到一个带有侧边栏和一些小部件的页面。sidebar.dust和widget.dust的内容

我正在使用Node.JS和Express

我的模板层次结构具有:

  • 1布局模板-基础模板
  • 1页模板-这是将呈现的模板
  • 可选的部分数-页面模板可能包含这些部分
布局。灰尘(布局模板):


{+content}{/content}
主页.dust(页面模板):

{>layout/}
{sidebar/}
{>widget/}
{/content}
当用户访问网站主页时,home.dust将被呈现,用户将看到一个带有侧边栏和一些小部件的页面。sidebar.dust和widget.dust的内容无关

正如您在layout.dust中所看到的,head部分包含了4组JavaScript和CSS,每个模板和部分对应一组。我的问题是找到一种方法自动将每个资源包含到布局中(无需硬编码)。理想情况下,我希望能够做到这一点:

{#scripts}
    <script src="{.}"></script>
{/scripts}
{#脚本}
{/scripts}
不同的页面可能需要不同的资产

  • 如何将每个脚本源路径推送到layout.dust的上下文中
  • 其他开发人员做什么,他们只是硬编码吗

我会将所有脚本添加到版面的头部,而不会从该版面扩展的页面中推送任何脚本。我不确定您对javascript精简的了解程度,但通常的做法是将所有(或大部分)javascript资产捆绑到一个文件中,并通过一个HTTP请求将它们提供给用户。这大大加快了你的页面速度;看看谷歌对此有何评论

这并不难,因为有一些工具可以自动为您执行此操作。你可以找一个资产管理人或其他人

资产经理:

npm上有一些。我发现一个打电话,另一个打电话

咕噜声:

使用
contrib-uglify
contrib-concat
处理缩小。还有很多你应该觉得有用的东西。您也可以对所有CSS执行完全相同的操作

显然,在开发过程中,您并不想尝试调试缩小的代码,因此可以执行以下操作:

{?production}
    <script src="production-minified-script.js"></script>
{:else}
    {#scripts}
        <script src="{.}"></script>
    {/scripts}
{/production}

为了缩小和连接,我基于uglify js和clean css构建了自己的定制框架。该框架允许我在一条HTTP消息中动态连接多个脚本,我真正的脚本标记看起来更像这样:
我不确定添加像
{+otherScripts}{/otherScripts}
这样的块会有什么帮助,我仍然不确定如何将URL推送到上下文中。这里包含多个部分,每个部分都需要将自己的脚本添加到上下文中。
{#scripts}
    <script src="{.}"></script>
{/scripts}
{?production}
    <script src="production-minified-script.js"></script>
{:else}
    {#scripts}
        <script src="{.}"></script>
    {/scripts}
{/production}
{+otherScripts}{/otherScripts}