Как использовать HTML в качестве механизма просмотра в Express?
Я попробовал это простое изменение из семени и создал соответствующие .html файлы (например, index.html).
//app.set('view engine', 'jade');
app.set('view engine', 'html');
и этот файл остался прежним:
exports.index = function(req, res){
res.render('index');
};
но во время работы я получаю
500 Ошибка: не удается найти модуль 'html'
Я единственный вариант использовать 'ejs'? Мое намерение состояло в том, чтобы использовать простой HTML в сочетании с AngularJS.
Ответы
Ответ 1
Ответы на другую ссылку будут работать, но для обслуживания HTML, нет необходимости использовать механизм просмотра вообще, если вы не хотите настраивать фанк-маршрутизацию. Вместо этого просто используйте статическое промежуточное ПО:
app.use(express.static(__dirname + '/public'));
Ответ 2
Чтобы заставить движок рендеринга принимать html вместо jade, вы можете выполнить следующие шаги:
-
Установите consolidate и swig в свой каталог.
npm install consolidate
npm install swig
-
добавить следующие строки в файл 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');
-
добавьте свои шаблоны просмотров как .html внутри папки "views". Перезагрузите сервер node и запустите приложение в браузере.
Хотя это сделает html без каких-либо проблем, я бы рекомендовал вам использовать JADE, изучив его. Джейд - удивительный механизм шаблонов, и изучение этого поможет вам достичь лучшего дизайна и масштабируемости.
Ответ 3
В вашем apps.js просто добавьте
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
Теперь вы можете использовать ejs view engine, сохраняя ваши файлы просмотра в формате .html
источник: http://www.makebetterthings.com/node-js/how-to-use-html-with-express-node-js/
Вам необходимо установить эти два пакета:
'npm install ejs --save'
'npm install path --save'
А затем импортируйте необходимые пакеты:
'var path = require('path');'
Таким образом, вы можете сохранить ваши представления как .html вместо .ejs.
Очень полезно при работе с IDE, которые поддерживают HTML, но не распознают ejs.
Ответ 4
попробуйте это для конфигурации сервера
app.configure(function() {
app.use(express.static(__dirname + '/public')); // set the static files location
app.use(express.logger('dev')); // log every request to the console
app.use(express.bodyParser()); // pull information from html in POST
app.use(express.methodOverride()); // simulate DELETE and PUT
app.use(express.favicon(__dirname + '/public/img/favicon.ico'));
});
то ваши функции обратного вызова для маршрутов будут выглядеть так:
function(req, res) {
res.sendfile('./public/index.html');
};
Ответ 5
Нет необходимости в механизме просмотра, если вы хотите использовать angular с простым простым html файлом. Вот как это сделать:
В файле route.js
:
router.get('/', (req, res) => {
res.sendFile('index.html', {
root: 'yourPathToIndexDirectory'
});
});
Ответ 6
Ответ очень прост.
Вы должны использовать app.engine('html') для рендеринга *.html Pages.
попробуйте это. Он должен решить проблему.
app.set('views', path.join(__dirname, 'views'));
**// Set EJS View Engine**
app.set('view engine','ejs');
**// Set HTML engine**
app.engine('html', require('ejs').renderFile);
.html файл будет работать
Ответ 7
HTML файлы могут отображаться с помощью движка ejs:
app.set('view engine', 'ejs');
И убедитесь, что ваши файлы под "/views" названы с ".ejs".
Например, "index.ejs".
Ответ 8
Я рекомендую использовать https://www.npmjs.com/package/express-es6-template-engine - чрезвычайно легкий и невероятно быстрый шаблонизатор. Название немного вводит в заблуждение, поскольку оно может работать и без expressjs.
Основы, необходимые для интеграции express-es6-template-engine
в ваше приложение, довольно просты и довольно просты в реализации:
const express = require('express'),
es6Renderer = require('express-es6-template-engine'),
app = express();
app.engine('html', es6Renderer);
app.set('views', 'views');
app.set('view engine', 'html');
app.get('/', function(req, res) {
res.render('index', {locals: {title: 'Welcome!'}});
});
app.listen(3000);
Ответ 9
HTML не является механизмом просмотра, но ejs предлагает возможность писать HTML-код в нем
Ответ 10
на сервер html-страницы через маршрутизацию, я это сделал.
var hbs = require('express-hbs');
app.engine('hbs', hbs.express4({
partialsDir: __dirname + '/views/partials'
}));
app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');
и переименовал мои .html файлы в файлы .hbs - поддержка дескрипторов в форматах html
Ответ 11
Чтобы заставить движок рендеринга принимать html вместо jade, вы можете выполнить следующие шаги:
Install consolidate and swig to your directory.
npm install consolidate
npm install swig
add following lines to your app.js file
var cons = require('consolidate');
// view engine setup
app.engine('html', cons.swig)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
add your view templates as .html inside "views" folder. Restart you node server and start the app in the browser.
Это должно работать
Ответ 12
Попробуйте это простое решение, оно работает для меня
app.get('/', function(req, res){
res.render('index.html')
});
Ответ 13
Закомментируйте промежуточное ПО для html, т.е.
//app.set('view engine', 'html');
Вместо этого используйте:
app.get("/",(req,res)=>{
res.sendFile("index.html");
});
Ответ 14
Установить шаблон ejs
npm install ejs --save
См. Ejs в app.js
app.set('views', path.join(__dirname, 'views'));'
app.set('view engine', 'ejs');
Создайте шаблон ejs в представлениях, таких как views/indes.ejs & использовать ejs tempalte в роутере
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});