Использование HTML в Express вместо Jade

Как я избавлюсь от Jade при использовании Express с Node.JS? Я хочу просто использовать простой html. В других статьях я видел, что люди рекомендовали app.register (), которые теперь устарели в последней версии.

Solutions Collecting From Web of "Использование HTML в Express вместо Jade"

Вы можете сделать это следующим образом:

  1. Установите ejs:

    npm install ejs 
  2. Установите свой движок шаблона в app.js как ejs

     // app.js app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); 
  3. Теперь в файле маршрута вы можете назначить переменные шаблона

     // ./routes/index.js exports.index = function(req, res){ res.render('index', { title: 'ejs' });}; 
  4. Затем вы можете создать свой html-представление в каталоге / views.

Jade также принимает вход html.
Просто добавьте точку в конец строки, чтобы начать отправку чистого html.
Если это трюк для вас, попробуйте:

 doctype html html. // THAT DOT  
Hello, yes this is dog

PS – Не нужно закрывать HTML – это сделано автоматически с помощью Jade.

Начиная с express 3, вы можете просто использовать response.sendFile

 app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); });) 

Из официальной express-ссылки api :

res.sendfile(path, [options], [fn]])

Перенесите файл по заданному пути.

Автоматически по умолчанию задает поле заголовка ответа Content-Type на основе расширения имени файла. Обратный вызов fn(err) вызывается, когда передача завершена или возникает ошибка.

Предупреждение

res.sendFile предоставляет res.sendFile клиент на стороне кэша HTTP-заголовков, но не res.sendFile содержимое файла на стороне сервера. Приведенный выше код попадет на диск по каждому запросу .

На мой взгляд, использование чего-то такого же размера, как ejs, просто для чтения html-файлов, немного тяжело. Я просто написал свой собственный механизм шаблонов для html-файлов, который замечательно прост. Файл выглядит следующим образом:

 var fs = require('fs'); module.exports = function(path, options, fn){ var cacheLocation = path + ':html'; if(typeof module.exports.cache[cacheLocation] === "string"){ return fn(null, module.exports.cache[cacheLocation]); } fs.readFile(path, 'utf8', function(err, data){ if(err) { return fn(err); } return fn(null, module.exports.cache[cacheLocation] = data); }); } module.exports.cache = {}; 

Я назвал мой htmlEngine, и способ, которым вы его используете, – просто сказать:

 app.engine('html', require('./htmlEngine')); app.set('view engine', 'html'); 

app.register() не был обесценен, он только что был переименован в app.engine() поскольку Express 3 изменяет способ обработки движков шаблонов .

Экспресс совместимость с шаблонами 2.x требует, чтобы следующий модуль экспортировался:

 exports.compile = function(templateString, options) { return a Function; }; 

Экспресс-шаблоны 3.x должны экспортировать следующее:

 exports.__express = function(filename, options, callback) { callback(err, string); }; 

Если механизм шаблонов не раскрывает этот метод, вам не повезло, метод app.engine() позволяет сопоставить любую функцию с расширением. Предположим, у вас была библиотека меток и вы хотели отобразить файлы .md, но эта библиотека не поддерживала Express, ваш app.engine() может выглядеть примерно так:

 var markdown = require('some-markdown-library'); var fs = require('fs'); app.engine('md', function(path, options, fn){ fs.readFile(path, 'utf8', function(err, str){ if (err) return fn(err); str = markdown.parse(str).toString(); fn(null, str); }); }); 

Если вы ищете механизм шаблонов, который позволяет использовать «простой» HTML, я рекомендую doT, потому что он очень быстрый .

Разумеется, имейте в виду, что модель просмотра Express 3 оставляет квитирование просмотра до вас (или вашего шаблонизатора). В производственной среде вы, вероятно, захотите кэшировать свои представления в памяти, чтобы вы не делали ввода / вывода на диске при каждом запросе.

Вы можете использовать EJS с выражением, какие шаблоны являются HTML, но поддерживают переменные. Вот хороший учебник по использованию EJS в express.

http://robdodson.me/blog/2012/05/31/how-to-use-ejs-in-express/

Чтобы заставить движок рендеринга принимать html вместо jade, вы можете выполнить следующие шаги;

  1. Установите консоли и запустите в свой каталог.

      npm install consolidate npm install swig 
  2. добавьте следующие строки в файл app.js

     var cons = require('consolidate'); // view engine setup app.engine('html', cons.swig) app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'html'); 
  3. добавьте свои шаблоны просмотров как .html внутри папки «views». Перезапустите сервер узла и запустите приложение в браузере.

Хотя это сделает html без каких-либо проблем, я бы рекомендовал вам использовать JADE, изучив его. Джейд – удивительный механизм шаблонов, и изучение этого поможет вам достичь лучшего дизайна и масштабируемости.

Похоже, вы хотите обслуживать статические файлы. И есть страница для этого http://expressjs.com/en/starter/static-files.html

Причудливо, что никто не связан с документацией.

поскольку Jade поддерживает HTML, если вы просто хотите иметь .html ext, вы можете сделать это

 // app.js app.engine('html', require('jade').renderFile); app.set('view engine', 'html'); 

то вы просто меняете файл в представлениях с jade на html.

Вы также можете напрямую включить свой html-файл в свой нефритовый файл

 include ../../public/index.html 

Оригинальный ответ: Экспресс-генератор без нефрита

Учитывая, что ваши маршруты уже определены или не знают, как это сделать.

 app.get('*', function(req, res){ res.sendfile('path/to/your/html/file.html'); }); 

ПРИМЕЧАНИЕ: этот маршрут должен быть размещен после всех остальных, поскольку * принимает все.

Если вы хотите использовать простой html в nodeJS, без использования jade .. или что-то еще:

 var html = '
' + 'hello' + '
';

Personnaly, я все в порядке с этим.

Преимуществом является простота при управлении. Вы можете использовать некоторые трюки, такие как '

' + (name || '') + '

' , тройной .. и т. Д.

Если вы хотите иметь отступы в браузере, вы можете сделать:

 + 'ok \ my friend \ sldkfjlsdkjf'; 

и используйте \ t или \ n по желанию. Но я предпочитаю без, плюс это быстрее.