使用ejs的机车交路



我正在尝试node和一些用于node-atm的框架,特别是机车。然而,我似乎被困在使用机车的路线上。有几个问题我找不到答案,所以来了:

  1. 为什么开箱即用安装的机车使用index.html.ejs作为文件名?为什么不只是index.ejs?有什么好处?

  2. 我正在尝试向视图添加一个路由:searchName.html.ejs添加到视图文件夹中。为了实现这一点,我制作了一个工具控制器像这样:

    var locomotive = require('locomotive').Controller,
    toolController = new Controller();
    toolController.searchName = function() {
        this.render();
    }
    module.exports = toolController;
    

    我还在routes.js中添加了一条路线,如下所示:

    this.match('searchName', 'tool#searchName');
    

    然而,这并不起作用(但文档中说这应该起作用)。结果是404错误。那么我该如何让这条路线发挥作用呢?

  3. 假设我想创建一条到例如anExample.html的路线?我该怎么走关于那个?我注意到,在开箱即用的应用程序中机车,您不能输入localhost:3000/index.html。甚至不能输入localhost:3000/index这对我来说似乎非常不切实际,因为有很多用户会添加他们想要访问的特定页面。那么我该怎么做呢?

附言:我在stackoverflow上浏览了所有关于这件事的问题,并在网上搜索了一下,但我仍然无法弄清楚。enter code here

  1. 好处是,此命名方案允许您为单个管线指定几种不同的格式。因此,您可以使用search_name.html.ejssearch_name.xml.ejs,然后根据客户的期望使用任一视图进行响应。

  2. 您发布的示例代码有几个问题。您应该看到一个比404更具描述性的错误,所以我不确定那里发生了什么,但以下是在我的环境中对您的代码进行的修复。

    在控制器中:

    //tool_controller.js
    var locomotive = require('locomotive');
    var toolController = new locomotive.Controller();
    toolController.searchName = function() {
      this.render();
    };
    module.exports = toolController;
    

    在routes.js:

    //routes.js
    module.exports = function routes()
    {
      this.match('searchName', 'tool#searchName');
    }
    

    然后,您需要将视图更改为:views/tool/search_name.html.ejs。从文档中还不清楚,但机车会自动降低和强调按骆驼大小写的操作,如searchName。

    现在启动应用程序并浏览到http://localhost:3000/searchName

  3. 如果您只想提供一个静态html文件,最简单的方法就是将其放在public文件夹中。这个文件夹专门用于提供静态内容,如客户端js、css等。它也适用于提供静态HTML。

相关内容

  • 没有找到相关文章

最新更新