【问题标题】:Using Slim or Haml & Sass / SCSS with Node.js?在 Node.js 中使用 Slim 或 Haml & Sass / SCSS?
【发布时间】:2023-03-08 13:47:01
【问题描述】:

我有一个相当强大的项目,它的所有模板都用 Slim 和一点 Haml 实现。我正在考虑将项目转移到基于 Node.js 的结构(可能构建在 Tower.js 或类似的东西之上;可能是 Meteor),但是我想继续使用 Slim 或 Haml 作为模板,而不是转移到另一个模板引擎。

到目前为止,有没有人这样做或花时间弄清楚如何做到这一点,如果是,您的发现是什么?

【问题讨论】:

    标签: javascript node.js haml meteor slim-lang


    【解决方案1】:

    Tower.js 封装了 express.js 模板引擎系统,因此您应该可以通过在配置中添加以下内容来使用任何 express.js 模板引擎Tower.View.engine = "haml"

    Tower.js 使用 mint,它内置了 HAML,因此您只需要目录中的 haml module

    虽然苗条是有问题的。首先它不是直接在 mint.js 中,所以你需要注册一个新的模板引擎。你需要做的事情

    1. 创建一个mint.js可以使用的函数customAdapter,可以看mint.js源码。下面是一个haml适配器函数的例子:

      function(content, options, callback) {
        var result;
        result = require('hamljs').render(content, options || {});
        if (callback) {
          callback.call(this, null, result);
        }
        return result;
      }
      
    2. 您需要通过 require("mint").engines.slim = customAdapter 将适配器添加到 mint.js

    但是 Slim 没有 express.js 引擎,而且由于 Slim 包含 ruby​​ 代码 sn-ps,所以不太可能会有。
    如果你真的想这样做,那么你需要为模板文件创建自己的 javascript 解析器(可能使用类似 http://opalrb.org/ 的东西,尽管没有特定的 ruby​​ 库),然后创建一个 express.js 引擎(我不知道怎么做)。

    我怀疑这将是一个非常富有成效的练习。
    我建议你要么将你的 Slim 文件转换为 haml(或jade,或 express.js 可以使用的任何模板引擎),要么不要这样做。
    我也找不到任何方法将 Slim 自动转换为 haml 或任何其他模板引擎(可能是因为它包含 ruby​​ 代码),因此您必须完全手动进行转换。

    【讨论】:

    • 根据我从 Slim 家伙那里听到的消息,使用 Slim 实现它应该相对容易,但没有人通过它的机制解决它。此外,由于最近更新速度较慢,我们基本上已经放弃了对 Tower 的看法,因此您是否有任何见解将其转移到 Meteor vs Tower。
    • 对不起,我不熟悉 Meteor。 Tower.js 基本上只是非常常见的模块之间的粘合剂,它在内部使用 express.js 来呈现视图。 Meteor 似乎是一个更复杂的框架,并且混合了服务器端和客户端的功能。考虑到这一点,我想将现有应用程序移植到 Meteor 然后再移植到 Tower.js 会更加困难。模板语言也不那么容易放入 Meteor,尽管有些人已经为它创建了包(来自我对此事的快速搜索)
    猜你喜欢
    • 2015-10-21
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2010-12-01
    • 2012-04-12
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多