2013-07-28 2 views
85

Я пробовал это простое изменение из семени и создал соответствующие .html-файлы (например, index.html).Как использовать HTML в качестве механизма просмотра в Express?

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

и этот файл остался прежним:

exports.index = function(req, res){ 
    res.render('index'); 
}; 

, но во время работы я получаю

500 Ошибка: Не удается найти модуль 'HTML'

Это мой единственный вариант использования " EJS? Мое намерение состояло в том, чтобы использовать простой HTML в сочетании с AngularJS.

+7

Смотрите эту тему для ответа: Http: // StackOverflow. com/questions/4529586/render-basic-html-view-in-node-js-express Надеюсь, это поможет, – roland

+0

app.engine ('html', require ('ejs'). RenderFile); –

ответ

60

Ответы на другую ссылку будут работать, но для обслуживания HTML, нет необходимости использовать механизм просмотра вообще, если вы не хотите настраивать фанки-маршрутизацию. Вместо этого, просто использовать статическую промежуточное программное обеспечение:

app.use(express.static(__dirname + '/public')); 
+0

Я пошел дальше и прокомментировал ссылку на app.set ('view engine', html). Затем я получил сообщение об ошибке: «Не указано ни одного двигателя по умолчанию и не было добавлено расширение», что ожидается. Но когда я изменил res.render («index») на res.render («index.html»), я получил следующую ошибку: TypeError: Property 'engine' объекта # не является функцией. – Julio

+3

Больше нет механизма просмотра, поэтому я не думаю, что 'res.render()' будет работать больше. Вместо этого поместите ваши необработанные HTML-файлы в 'public' и пусть статическое промежуточное программное обеспечение будет обрабатывать файлы напрямую. Если вам нужны более удобные маршруты, вы можете настроить свой собственный HTML-движок. –

+4

Итак, что вы пишете в вызове app.get()? – ajbraus

12

попробовать это для конфигурации сервера

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'); 
}; 
0

к серверу 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

25

Для того, чтобы движок рендеринга принять HTML вместо нефрита вы можете выполнить следующие действия;

  1. consolidate Установка и swig в каталог.

    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, изучив его. Jade - потрясающий механизм шаблонов, и это поможет вам достичь лучшего масштабирования.

+0

Отлично, он работает для меня, спасибо –

+0

не имеет никакого метода 'engine' - после всех шагов – ImranNaqvi

+0

Какая версия экспресса вы используете? Express 4.x содержит API app.engine. Дополнительная информация: http://expressjs.com/ru/api.html#app.engine – AnandShanbhag

3

HTML файлы могут быть визуализированы с использованием EJs двигателя:

app.set('view engine', 'ejs'); 

И убедитесь, что ваши файлы в «/ виды» названы с «.ejs».

Например, "index.ejs".

+0

Он работает, но чувствует себя немного взломанным. Вы знаете, есть ли какие-либо предостережения от использования .ejs вместо .html? Приветствия, возможно, самое быстрое исправление все-таки предложили! – mikeym

9

В ваших приложениях.JS просто добавить

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.engine('html', require('ejs').renderFile); 
app.set('view engine', 'html'); 

Теперь вы можете использовать вид EJS двигатель, сохраняя ваши просматривать файлы как .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.

+1

app.set ('views', path.join (__ dirname, '/ path/to/your/folder')); app.set ("view options", {layout: false}); app.engine ('html', function (path, opt, fn) { fs.readFile (путь, 'utf-8', функция (ошибка, str) { if (ошибка) return str; return fn (null, str); }); }); –

4

Нет необходимости в двигателе просмотра, если вы хотите использовать угловой с простым простым файлом html. Вот как это сделать: В файле route.js:

router.get('/', (req, res) => { 
    res.sendFile('index.html', { 
    root: 'yourPathToIndexDirectory' 
    }); 
}); 
1

Для того, чтобы движок рендеринга принять HTML вместо нефрита вы можете выполнить следующие действия;

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. 

Это должно работать

3

Ответ очень прост. Вы должны использовать app.engine ('html') для визуализации * .html страниц. попробуйте это. Он должен решить проблему.

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 будет работать

0

Попробуйте это простое решение, он работал для меня

app.get('/', function(req, res){ 
    res.render('index.ehtml') 
    }); 
Смежные вопросы