如何在 Express 中使用 HTML 作为视图引擎?

我尝试了从种子进行这个简单的更改,并创建了相应的. 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 结合使用。

210843 次浏览

另一个链接上的答案会起作用,但是为了提供 HTML,根本不需要使用视图引擎,除非您想设置时髦的路由。相反,只需使用静态中间件:

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

请在服务器配置中尝试此操作

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

通过路由到服务器 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

要使渲染引擎接受 html 代替翡翠,您可以按照以下步骤;

  1. 合并大口喝安装到您的目录。

     npm install consolidate
    npm install swig
    
  2. 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');
    
  3. add your view templates as .html inside “views” folder. Restart you node server and start the app in the browser.

Though this will render html without any issue, I would recommend you to use JADE by learning it. Jade is an amazing template engine and learning this will help you achieve better design & scalability.

HTML 文件可以使用 ejs 引擎呈现:

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

并确保“/views”下的文件以“ . ejs”命名。

例如“ index.ejs”。

在你的应用程序里,只要添加

// 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
在使用支持 html 但不能识别 ejs 的 IDE 时非常有帮助。

不需要视图引擎,如果您想使用简单的普通 html 文件的角度。下面是如何做到这一点: 在你的 route.js文件中:

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

要使渲染引擎接受 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.

这个应该可以

答案很简单。 必须使用 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 文件将工作

试试这个简单的解决方案,对我很有效

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

我建议使用 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);
下面是位于“视图”目录中的 index.html文件的内容:

<!DOCTYPE html>
<html>
<body>
<h1>${title}</h1>
</body>
</html>

Html 不是一个视图引擎,但 ejs 提供了在其中编写 html 代码的可能性

注释掉 html 的中间件,即。

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

取而代之的是:

app.get("/",(req,res)=>{
res.sendFile("index.html");
});

安装 ejs 模板

npm install ejs --save

在 app.js 中引用 ejs

app.set('views', path.join(__dirname, 'views'));`
app.set('view engine', 'ejs');

在 views/indes.ejs 等视图中创建 ejs 模板,并在路由器中使用 ejs 模板

router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});

在 swig 的帮助下渲染 html 模板。

//require module swig
var swig = require('swig');


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

不需要呈现 HTML 文件。
渲染引擎所做的就是将不是 Html 文件的文件转换为 Html 文件。
要发送一个 HTML 文件,只需:

res.sendFile("index.html");

您可能需要使用 __dirname+"/index.html",因此 Express 将知道确切的路径。