node中使用ejs

介绍

EJS 是一套简单的模板语言,帮你利用普通的JavaScript 代码生成HTML 页面。 EJS 没有如何组织内容的教条;也没有再造一套迭代和控制流语法;有的只是普通的JavaScript 代码而已。

安装ejs

npm install ejs

配置

在 app.js里配置

app.set('view engine', 'ejs')
app.set('views', __dirname + '/views')

app.set(‘view engine’, ‘ejs’)
固定写法,这是模板引擎的意思(view engine)

app.set(‘views’, __dirname + ‘/views’)
设置模板文件的存放位置,如果不设置的话,默认会从views文件夹里找

第一步 配置app.js

配置应用程序以使用 EJS 并设置索引页面和关于页面的路由。

创建一个新app.js文件并使用代码编辑器打开它并添加以下代码行:

const express = require('express')
const app = express()
const port = 3000

app.set('view engine', 'ejs')
app.set('views', __dirname + '/views')

app.get('/', (req, res) => {
  res.render('pages/index')
})

app.get('/about', (req, res) => {
  res.render('pages/about')
})

app.listen(port, () => console.log(`Example app listening on port ${port}!`))

请注意代码如何使用 将视图发送给用户res.render()。需要注意的是,res.render()将在views文件夹中查找视图。所以你只需要定义,pages/index因为完整路径是views/pages/index

第二步 创建 EJS 部分

在app.js同层级目录下新建一个views文件夹,在views文件夹里面新建一个partials文件夹,partials文件夹里是重用的代码文件

views\partials目录下新建head.ejs

<meta charset="UTF-8">
<title>EJS Is Fun</title>
<style>
  body { background: #ccc; }
</style>

views\partials目录下继续创建一个header.ejs

<nav>
  <a href="/">EJS Is Fun</a>
  <a href="/">Home</a>
  <a href="/about">About</a>
</nav>

views\partials目录下继续创建一个footer.ejs

<p>我是footer.ejs中的p标签</p>

接下来就要在index.ejs文件中引入views\partials文件夹里的.ejs文件了
views文件夹中新建一个pages文件夹

views\pages文件夹内新建一个index.ejs文件

使用 <%- include(‘路径’) %> 引入要使用的.ejs文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <%- include('../partials/head') %>
  </head>

  <body>
    <header>
      <%- include('../partials/header') %>
    </header>

    <main>
      我是index.ejs中的main标签
    </main>

    <footer>
      <%- include('../partials/footer') %>
    </footer>
  </body>
</html>

运行app.js node app.jsnodemon app.js

在这里插入图片描述

接下来在views\pages文件夹中创建一个 about.ejs文件

<!DOCTYPE html>
<html lang="en">
<head>
  <%- include('../partials/head'); %>
</head>
<body>

<header>
  <%- include('../partials/header' %>
</header>

<main>
  我是about页面
</main>

<footer>
  <%- include('../partials/footer'); %>
</footer>

</body>
</html>

点击http://localhost:3000中的About或者直接在地址栏输入http://localhost:3000/about
在这里插入图片描述

第三步 传递数据

app.js中给app.get('/')路由中添加以下代码行:

const express = require('express')
const app = express()
const port = 3000

app.set('view engine', 'ejs')
app.set('views', __dirname + '/views')

app.get('/', (req, res) => {
  const info = [
    { name: '张三', age: 18, gender: '男' },
    { name: '小红', age: 28, gender: '女' },
    { name: '翠翠', age: 20, gender: '女' },
  ]
  const tagline = '我是标语 tagline'
  res.render('pages/index', {info, tagline})
})

app.get('/about', (req, res) => {
  res.render('pages/about')
})

app.listen(port, () => console.log(`Example app listening on port ${port}!`))

在EJS中渲染变量
显示单个变量使用<%= tagline %>.
遍历多个可以使用.forEachfor(var i = 0; i < info.length; i++) {}

<!DOCTYPE html>
<html lang="en">
  <head>
    <%- include('../partials/head') %>
  </head>

  <body>
    <header>
      <%- include('../partials/header') %>
    </header>

    <main>
      我是index.ejs中的main标签
      <p> <%= tagline %> </p>
      <ul>
        <% info.forEach(data => { %>
          <li>
            <strong> <%= data.name %> </strong>
            <em> <%= data.age %> </em>
            <a href="#"> <%= data.gender %> </a>
          </li>
        <% }) %>
      </ul>
    </main>

    <footer>
      <%- include('../partials/footer') %>
    </footer>
  </body>
</html>

在这里插入图片描述

pages文件夹中的about.ejs将数据传递给partials文件夹中的header.ejs

这是pages/about.ejs
在这里定义了variant变量,就必须在 partials/header.ejs中使用他,否则会报错

<!DOCTYPE html>
<html lang="en">
<head>
  <%- include('../partials/head'); %>
</head>
<body class="container">

<header>
  <%- include('../partials/header', { variant: '我是 variant' }) %>
</header>

<main>
  我是about页面
</main>

<footer>
  <%- include('../partials/footer'); %>
</footer>

</body>
</html>

这是partials\header.ejs

<nav>
  <a href="/">EJS Is Fun</a>
  <a href="/">Home</a>
  <a href="/about">About</a>
  <h2>
    我是从 pages目录中的 about文件中传递过来的数据:
    <%= typeof variant !== 'undefined' ? variant : '没有传递任何值,这是默认值' %>
  </h2>
</nav>

这里使用了三目运算符typeof variant !== 'undefined' ? variant : '没有传递任何值,这是默认值'

在地址栏输入 http://localhost:3000/
在这里插入图片描述

在地址栏输入 http://localhost:3000/about
在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值