我正在尝试node和一些用于node-atm的框架,特别是机车。然而,我似乎被困在使用机车的路线上。有几个问题我找不到答案,所以来了:
-
为什么开箱即用安装的机车使用index.html.ejs作为文件名?为什么不只是index.ejs?有什么好处?
-
我正在尝试向视图添加一个路由: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错误。那么我该如何让这条路线发挥作用呢?
-
假设我想创建一条到例如anExample.html的路线?我该怎么走关于那个?我注意到,在开箱即用的应用程序中机车,您不能输入localhost:3000/index.html。甚至不能输入localhost:3000/index这对我来说似乎非常不切实际,因为有很多用户会添加他们想要访问的特定页面。那么我该怎么做呢?
附言:我在stackoverflow上浏览了所有关于这件事的问题,并在网上搜索了一下,但我仍然无法弄清楚。enter code here
-
好处是,此命名方案允许您为单个管线指定几种不同的格式。因此,您可以使用
search_name.html.ejs
和search_name.xml.ejs
,然后根据客户的期望使用任一视图进行响应。 -
您发布的示例代码有几个问题。您应该看到一个比
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
-
如果您只想提供一个静态html文件,最简单的方法就是将其放在
public
文件夹中。这个文件夹专门用于提供静态内容,如客户端js、css等。它也适用于提供静态HTML。