【问题标题】:Using underscore/lodash as template engine in Sails JS在 Sails JS 中使用 underscore/lodash 作为模板引擎
【发布时间】:2014-01-06 11:43:30
【问题描述】:

我有一个单页网络应用程序,它在客户端使用主干,在服务器上使用节点(Sails)。

我目前在客户端使用lodash.underscore作为模板引擎,在服务端使用kiwi。

我希望通过渐进增强来实现 pushstate。即客户端和服务器将共享相同的模板文件。

这意味着他们需要使用相同的模板引擎;我决定使用下划线/lodash。

在 Sails config\views.js 中,这意味着您可以使用下划线作为模板引擎。问题是我无法弄清楚如何做到这一点。我已经将它包含在我的 package.json 中并设置了

'engine': 'underscore'

然后在启动我的应用程序时出现错误 - “Function.app.engine 需要回调函数”

如果我将引擎设置为“kiwi”、“jade”、“ejs”等,那么它会起作用。

知道我做错了什么吗?

【问题讨论】:

    标签: javascript node.js underscore.js sails.js lodash


    【解决方案1】:

    我不确定我是否完全理解您的要求,但是,我在服务器端视图中使用了具有以下配置的下划线模板:

    config/views 中,我将引擎设置为 ejs:

    engine: 'ejs',
    

    在我的Gruntfile.js 中我已经设置:

    var templateFilesToInject = [
        'linker/**/*.ejs'
    ];
    

    【讨论】:

    • 服务器端视图位于 /views 中,客户端模板位于 /assets/templates 中。我想避免重复代码,所以希望从客户端模板构建服务器端视图。这将允许我启用 pushState。为此,我需要视图和模板使用相同的“语言”并使用相同的语法,而目前它们不是。我似乎在这两点上都有问题 - 从 /views 引用资产/模板并获得标准语法
    【解决方案2】:

    Consolidate.jsversion 0.3.1 开始使用 support Underscore as an engine,从 version 0.10.0 开始使用 Lodash。

    Sails.js supports all of the view engines compatible with Express via Consolidate,但第一个包含 Consolidate 作为直接依赖项的 Sails 版本是 only 0.12.0-rc2。我不确定 Sails 在此之前是如何管理其他模板引擎的,但 documentation suggests that Underscore has been supported as a view engine since 0.10.0.

    您应该验证您使用的 Sails 版本是否支持 Underscore 作为视图引擎,并在尝试使用之前确保您npm i --save underscore

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      相关资源
      最近更新 更多