【问题标题】:Node.js without a template engine没有模板引擎的 Node.js
【发布时间】:2012-04-10 09:18:00
【问题描述】:

我是 Node.js 的新手,正在努力学习。据我了解,使用模板引擎(例如 Jade)是很常见的,即使对于 CSS(例如 Stylus)也是如此。老实说,我看到的所有教程在布局方面都涉及模板引擎。

问题是我不想使用模板引擎,因为我认为它不必要地复杂。

Here 是指向 Node 样板的链接(不幸的是,由于某种原因它不起作用),但选项 1 不应使用任何模板引擎进行布局。

那么,将 Node.js 和 Mongodb 与“普通”HTML(5) 结合起来的最简单方法是什么?例如,是否可以将 HMTL5 样板与 Node 一起使用?

【问题讨论】:

    标签: node.js mongodb express template-engine


    【解决方案1】:

    如果您使用的是静态 html,那么您不需要在服务器端进行模板化。 您可以使用Express/Connect static middleware 轻松提供您的 html 文件,例如:

    app.use(express.static(__dirname + '/public'));
    

    然后将index.html 放入您的公共文件夹。

    我还认为你可以将整个 h5bp 复制并粘贴到你的公用文件夹中,它应该可以工作。

    【讨论】:

      【解决方案2】:

      这是我对此的看法。

      如果您只提供 static html,很明显您不需要任何模板引擎,因为您可以在响应中缓冲 html,或者使用 Connect 静态中间件。

      但是,当您必须处理 动态 内容时,事情会变得有趣。

      这是模板引擎擅长的地方,因为它们提供了将数据与 html 集成的方法。如果要替换模板引擎,则需要一个可以进行 HTML 和 DOM 操作的库。我可以想到两种选择:

      • jsdom 以及基于它构建的库(例如 fill.js)。
        使用 jsdom,您可以使用服务器端 jQuery 来构建您的视图,甚至可以使用 YUI
        但是它有一些缺点:
        • 又慢又麻烦
        • 在 Windows 上安装很痛苦,因为它依赖于原生模块
        • 我无法让它解析 html 片段或不完整的 html(也许有人知道解决此问题的方法)

      • 第二种选择是使用一些处理 html 的轻量级库,而不需要完整的 DOM。到目前为止,我已经找到了两个擅长于此的库:
        • cheerio - 一个依赖于类 jQuery 选择器的小型库
        • plates - 将数据绑定到标记的库

      在我看来,两者都非常简洁,并且是摆脱模板的良好起点:)
      可能还有其他我不知道的,但你明白了。

      【讨论】:

        【解决方案3】:

        使用 express,您只需在响应中发送 html5:

        app.get('/', function(req, res){
          res.send('<header>Hello World</header>');
        });
        

        但是,我想说在大多数情况下,模板引擎不会增加复杂性。如果您要呈现动态内容,关注点分离会使事情变得更简单。

        【讨论】:

        • 所以我需要在响应中嵌入所有的 html5 吗?这是唯一的方法吗?我希望可以将服务器代码与客户端代码分开。
        • 这就是模板引擎的用途 ;)
        【解决方案4】:

        第一次回答我自己的问题。我只是想分享一下我找到了一个从 html 到 jam(模板引擎)的转换器。这绝对是一件好事,至少对我来说消除了很多复杂性,即使它仍然涉及模板引擎。

        http://html2jade.aaron-powell.com/

        【讨论】:

        • 看一下jade文档:jade-lang.com语法不用多久就学会了。
        • 对于像我这样遇到这种情况的新手:Jade 已重命名为“pug”:npmjs.com/package/pug
        猜你喜欢
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-14
        相关资源
        最近更新 更多