Маршрут в локомотиве с использованием ejs

Я пробую узел и некоторые фреймворки для узла атм, в частности локомотив. Тем не менее, я, кажется, застрял на маршрутизации с использованием локомотива. Пара вопросов, на которые я не могу найти ответ, поэтому здесь идет:

  1. почему при установке локомотива в качестве имени файла используется index.html.ejs? Почему не просто index.ejs? В чем выгода?

  2. я пытаюсь добавить маршрут к представлению: 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. Так как мне заставить этот маршрут работать?

  3. Предположим, я хочу проложить маршрут к, например, anExample.html? Как мне это сделать? Я заметил, что в готовом приложении от locomotive вы не можете ввести localhost:3000/index.html . И даже localhost: 3000 / index. Это кажется мне очень непрактичным, так как многие пользователи добавляют определенную страницу, на которую они хотят перейти. Так как я могу заставить это работать?

PS: я рассмотрел все вопросы об этом в stackru и искал в Интернете, но я все еще не могу понять это.enter code here

1 ответ

Решение
  1. Преимущество заключается в том, что эта схема именования позволяет указывать несколько разных форматов для одного маршрута. Так что вы могли бы иметь search_name.html.ejs а также search_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;
    

    В маршрутах.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.

Другие вопросы по тегам