美文网首页
express-art-template用法+express实现

express-art-template用法+express实现

作者: 抬头微笑_5cc9 | 来源:发表于2018-11-28 10:05 被阅读0次

安装(两个都要下载)

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

相关文章

网友评论

      本文标题:express-art-template用法+express实现

      本文链接:https://www.haomeiwen.com/subject/ovnoqqtx.html