express-art-template用法+express实现留言板

安装(两个都要下载)

npm install --save art-template
npm install --save express-art-template

配置express-art-template模板

第一个参数:表示 当渲染以html后缀的文件时,使用art-template模板引擎
express-art-template就是把art-template整合到express

const express = requires("express");
let app = express();
app.engine('html',require('express-art-template'));

res.render():

res,对象本身没有render方法 当配置了express-art-template才会添加此方法 ,
第一个参数:写相对views目录下的文件路径
所要渲染的文件要放到新建的views文件内 因为渲染路径默认在 views文件下 也可以改变默认路径
app.set(“views”,“设置render新的默认路径”)就是改变新路径的方法

/改变默认路径
//app.set("views","设置render新的默认路径")
app.get("/",(req,res)=>{
    let data={
        list:comments//要渲染的数据
    }
res.render("home.html",dataStr)//第一个参数是要渲染的文件

用express-art-template实现留言板 主要是运用express

html文件(这里运用到了bootstrap工具包)
下载bootstrap 第三版 : npm i bootstrap@3

1.home.html 页面(留言板首页)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container">
    <div class="page-header">
        <h1>Example page header
            <small>Subtext for header</small>
        </h1>
        <a href="/post" class="btn btn-success">发表留言</a>
    </div>
</div>
<div class="container">
    <ul class="list-group">
        {{each list}}
        <li class="list-group-item">{{$value.name}}说:{{$value.message}}<span class="pull-right">{{$value.dateTime}}</span>
        {{/each}}
    </ul>
</div>
</body>
</html>

2.post.html 页面(添加页面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container">
    <div class="page-header">
        <h1><a href="/">首页</a>  <small>发表评论</small></h1>
    </div>
</div>
<div class="container">
    <form action="mes" method="post">
        <div class="form-group">
            <label for="username">你的大名</label>
            <input type="text" id="username"
               class="form-control"
               name="name"
               placeholder="请输入名字"
               minlength="2" required>
        </div>
        <div class="form-group">
            <label for="mes">留言内容</label>
            <textarea type="text" id="mes"
               class="form-control"
               name="message"
                  rows="10"
               minlength="5" required>
            </textarea>
        </div>
        <button type="submit" class="btn btn-default">发表</button>
    </form>
</div>
</body>
</html>

3.js代码

const express = require("express");
let app = express();
///是 express 的一个中间件 , 作用对post 请求的请求参数进行解析
const bodyParser = require("body-parser");
//配置之后会给req 添加body属性,来获取请求体
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());

app.use("/node_modules",express.static("./node_modules"));
app.engine('html', require('express-art-template'));

let comments = [
    {
        name: '张三',
        message: '今天天气不错!',
        dateTime: '2015-10-16'
    },
    {
        name: '张三2',
        message: '今天天气不错!',
        dateTime: '2015-10-16'
    },
    {
        name: '张三3',
        message: '今天天气不错!',
        dateTime: '2015-10-16'
    },
    {
        name: '张三4',
        message: '今天天气不错!',
        dateTime: '2015-10-16'
    },
    {
        name: '张三5',
        message: '今天天气不错!',
        dateTime: '2015-10-16'
    }
];

app.get("/", (req, res) => {
    let dataStr = {
        list: comments
    };
    console.log(dataStr);
    res.render('home.html', dataStr)
});

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

//传过来的叫请求参数
app.post("/mes",(req,res)=>{
    let reqBody = req.body;
    reqBody.dateTime = "2018-11-27";
    comments.unshift(reqBody);
    //重定向 (因为配置了express才能用)
    res.redirect("/");
});

app.listen(7000);

运行样式

QQ图片20181127205932.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值