我正在为节点atm尝试节点和一些框架,特别是机车。但是,我似乎停留在使用机车的路线上。几个问题我找不到答案,所以这里有:
为什么机车开箱即用安装使用index.html.ejs作为 文件名?为什么不只是index.ejs?有什么好处?
我正在尝试向视图添加路由:searchName.html.ejs i 添加在views文件夹中。为了实现这一点,我做了一个toolController 像这样:
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这对我来说似乎非常不切实际 有很多用户会添加他们想要访问的特定页面。 那我该怎么做呢?
PS:我在stackoverflow上经历了有关这方面的所有问题并在网上搜索过,但我仍然无法解决这个问题。enter code here
答案 0 :(得分:1)
这样做的好处是,此命名方案允许您为单个路径指定多种不同的格式。因此,您可以拥有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
。从文档中可以清楚地看出,但是机车会自动降低并强调像cameName这样的骆驼行动。
现在启动应用并浏览到http://localhost:3000/searchName
如果您只想提供静态html文件,最简单的方法就是将其放在public
文件夹中。此文件夹专门用于提供静态内容,如客户端js,css等。它也适用于提供静态HTML。