Подтвердить что ты не робот

Как использовать 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.

4b9b3361

Ответ 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' });
});