Маршрут в локомотиве с использованием ejs
Я пробую узел и некоторые фреймворки для узла атм, в частности локомотив. Тем не менее, я, кажется, застрял на маршрутизации с использованием локомотива. Пара вопросов, на которые я не могу найти ответ, поэтому здесь идет:
почему при установке локомотива в качестве имени файла используется index.html.ejs? Почему не просто index.ejs? В чем выгода?
я пытаюсь добавить маршрут к представлению: searchName.html.ejs, который я добавил в папку представлений. Чтобы добиться этого, я сделал toolController вроде этого:
var locomotive = require('locomotive').Controller, toolController = new Controller(); toolController.searchName = function() { this.render(); } module.exports = toolController;
Я также добавил маршрут в ways.js так:
this.match('searchName', 'tool#searchName');
Тем не менее, это не работает (и все же это то, что в документации должно работать). Результатом является ошибка 404. Так как мне заставить этот маршрут работать?
Предположим, я хочу проложить маршрут к, например, anExample.html? Как мне это сделать? Я заметил, что в готовом приложении от locomotive вы не можете ввести localhost:3000/index.html . И даже localhost: 3000 / index. Это кажется мне очень непрактичным, так как многие пользователи добавляют определенную страницу, на которую они хотят перейти. Так как я могу заставить это работать?
PS: я рассмотрел все вопросы об этом в stackru и искал в Интернете, но я все еще не могу понять это.enter code here
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;
В маршрутах.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.