Node js 视图引擎就像 Laravel 中的 Blade。其最基本的定义是,视图引擎是帮助我们用比通常更短、更简单的方式编写 HTML 代码并重用的工具。此外,它还可以从服务器端导入数据并渲染最终的 HTML。Node.js 项目中一些常见的视图引擎如下

什么是 Nod.js 视图引擎?

Node.js 视图引擎

•EJS

•Pug (Formerly Jade)

•Handlebars

•Haml.js

•Nunjucks

•…

今天我将尝试上面的一些模板,看看哪一个更容易使用。开始吧!

EJS


嵌入式JavaScript模板

首先要为本文创建一个演示程序,我们需要用 ExpressJS 创建一个项目。用express-generator 可以快速创建这个项目。

1sudo npm install express-generator -g2express --view=ejs Demo_EJS

运行以上命令用 Node.js ejs 视图引擎创建项目时,我们的项目具有以下目录结构:

Node.js 项目文件列表

通过上面的命令,我们用 EJS 视图引擎创建了一个 Express 项目。此视图引擎在 app.js 文件中设置如下:

1//...2//view engine setup3app.set('views', path.join(__dirname, 'views'));4app.set('view engine', 'ejs');56//...

接下来说明如何使用,我将创建网站的基本布局,并从服务器渲染数据。首先,从服务器渲染数据。

编辑 routes/index.js 文件:

1var express = require('express'); 2var router = express.Router(); 3 4/* GET home page. */ 5router.get('/', function(req, res, next) { 6 7  let list = [ 8      {name: 'PHP'}, 9      {name: 'Ruby'},10      {name: 'Java'},11      {name: 'Python'},12      {name: 'dotNet'},13      {name: 'C#'},14      {name: 'Swift'},15      {name: 'Pascal'},16  ]17  res.render('index', {title: 'Demo Ejs', list: list});18});1920module.exports = router;

index.ejs 文件内容:

 1<!DOCTYPE html> 2<html> 3  <head> 4    <title><%= title %></title> 5    <link rel='stylesheet' href='/stylesheets/style.css' /> 6  </head> 7  <body> 8    <header> 9      <h3>This is header</h3>10    </header>11    <main>12      <h1><%= title %></h1>13      List of programming languages14      <ul>15          <% list.forEach(function(item) {%>16        <li><%= item.name %></li>17          <%}); %>18      </ul>19    </main>20    <footer>21      <h3>This is footer</h3>22    </footer>23  </body>24</html>

我们已经实现了在服务器对视图进行渲染。另外我们还可以通过添加 header.ejs 文件来分割页眉、页脚,然后包含如下脚注:

1<!DOCTYPE html> 2<html> 3  <head> 4    <title><%= title %></title> 5    <link rel='stylesheet' href='/stylesheets/style.css' /> 6  </head> 7  <body> 8    <header> 9      <% include header %>10    </header>11    <main>12      <h1><%= title %></h1>13      List of programming languages14      <ul>15          <% list.forEach(function(item) {%>16        <li><%= item.name %></li>17          <%}); %>18      </ul>19    </main>20    <footer>21      <% include footer %>22    </footer>23  </body>24</html> 

Pug

Pug


Pug - 以前名为 Jade,也是一个受欢迎的 Node.js 视图引擎项目。要使用它,请按如下方式设置视图引擎:

1//view engine setup2app.set('views', path.join(__dirname, 'views'));3app.set('view engine', 'pug');

通过上面的例子,我们使用以下内容创建了 pug 文件:

 1//file layout.pug 2doctype html 3html 4  head 5    title= title 6    link(rel='stylesheet', href='/stylesheets/style.css') 7  body 8    include header 9    block content10    include footer11//file index.pug12extends layout1314block content15  h1= title16  | List of programming languages17  ul18    each item in list19      li= item.name

我们可以看到在相同的内容中,Pug 的代码是如此清晰、简洁和易于理解。Pug 的工作方式与 Python 语言大致相同,即使用缩进或空格。

Hbs (Handlebars.js)

Hbs(Handlebars)

要使用此模板,需要把引擎视图设置为 hbs。同时必须注册 blocks(在 handlebarjs 中称为 partial),如下所示:

1var hbs = require('hbs');2hbs.registerPartials(__dirname + '/views/partials');3app.set('views', path.join(__dirname, 'views'));4app.set('view engine', 'hbs');

针对上述问题,我们还将创建具有以下内容的 hbs 文件:

 1// file layout.hbs 2<!DOCTYPE html> 3<html> 4  <head> 5    <title>{{title}}</title> 6    <link rel='stylesheet' href='/stylesheets/style.css' /> 7  </head> 8  <body> 9    {{> header}}10    {{{body}}}11    {{> footer}}12  </body>13</html><code class="language-javascript">1415// file /views/partials/header.hbs16<h3>This is header</h3>1718 //file /views/partials/footer.hbs 19 <h3> This   is   footer </h3> 2021 //file index.hbs 22 <h1> {{title}} </h1> 23 List of programming languages 24 <ul> 25   {{#each list}} 26     <li> {{name}} </li> 27   {{/each }} 28 </ul>

结论

我在 Nodejs 项目中测试了一些流行的视图引擎。在你的开发工作中可以选择 Pug,因为它非常简单易懂。

原文:https://frontnet.eu/node-js-view-engine-try-out-some-of-the-most-popular/

©著作权归作者所有:来自51CTO博客作者mb5ff980b461ced的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. JavaScript引擎是如何工作的?从调用栈到Promise你需要知道的一切[
  2. 干货丨时序数据库DolphinDB横截面引擎教程
  3. 给女朋友讲了讲 V8 引擎的“回调函数”!
  4. 用 Node.js 写一个多人游戏服务器引擎 [每日前端夜话0x31]
  5. JavaScript的工作原理:V8引擎内部机制及优化代码的5个技巧
  6. JavaScript的工作原理:引擎、运行时和调用堆栈 [每日前端夜话(0x1
  7. 图解LeetCode第 199 号问题:二叉树的右视图
  8. 详解在PHP模板引擎smarty生成随机数的方法和math函数
  9. php模板引擎有哪些

随机推荐

  1. 互联网发展的四个阶段
  2. Spring Data JPA 最佳实践
  3. 芋道 Spring Boot MyBatis 入门(三)之 MyBa
  4. 芋道 Spring Boot 缓存 Cache 入门
  5. Map 集合怎么也有这么多坑?一不小心又踩了
  6. 芋道 Spring Boot Redis 入门(下)
  7. 作为一名JS开发人员,是什么使我夜不能寐[
  8. 芋道 Spring Boot JPA 入门(二)之基于方法
  9. MySQL 8 OCP(1Z0-908)认证考试题库原题(第
  10. 轻轻一扫,立刻扣款,付款码背后的原理你不想