Nunjucks模板入门

一、为什么要用Nunjucks?

我们上节课设置页面内容时,是用模板字符串来写的,但是内容多的时候,这样就不好看,也不方便。

二、安装

1、koa-views:告诉计算机,要用哪个模板引擎

2、nunjucks:nunjucks模板引擎

三、使用

1、项目目录 

views存放模板(即网页)。 

2、编写代码

server.js文件: 

const Koa = require("koa"); // 引入Koa构造函数
const views = require("koa-views");
const nunjucks = require("nunjucks");
const app = new Koa(); // 创建应用

// 设置路径,并且告知使用的模板引擎为:nunjucks
app.use(views(__dirname + "/views", {
    map: {
        html: "nunjucks"
    }
}))

// index:网页名
// title:传递的参数
app.use(async (ctx) => {
    await ctx.render("index", {
        title: "hello nunjucks!"
    });
})

// 设置监听端口
app.listen(3000, () => {
    console.log("server is running");
})

index.html文件: 

<body>
    <!-- title是后台传过来的值  -->
    <h1>{{title}}</h1>
</body>

3、运行js 

 成功获取到后台传过来的数据。

 四、配合Koa框架的路由使用

1、server.js

const Koa = require("koa"); // 引入Koa构造函数
const views = require("koa-views");
const nunjucks = require("nunjucks");
const router = require("koa-router")();
const app = new Koa(); // 创建应用

// 设置路径,并且告知使用的模板引擎为:nunjucks
app.use(views(__dirname + "/views", {
    map: {
        html: "nunjucks"
    }
}))

// index:网页名
// title:传递的参数
router.get("/", async (ctx) => {
    await ctx.render("index", {
        title: "hello nunjucks!"
    });
})

app.use(router.routes());

// 设置监听端口
app.listen(3000, () => {
    console.log("server is running");
})

显示如下: 

 

 五、传递前台表单数据

1、home.html

<body>
    <p>用户名:{{username}}</p>
    <p>密码:{{password}}</p>
</body>

2、index.html

<body>
    <!-- title是后台传过来的值  -->
    <h1>{{title}}</h1>

    <form action="/login" method="get">
        <input type="text" name="username">
        <input type="password" name="password">
        <!-- <input type="submit" value="提交"> -->
        <button>提交</button>
    </form>
</body>

3、server.js

const Koa = require("koa"); // 引入Koa构造函数
const views = require("koa-views");
const nunjucks = require("nunjucks");
const router = require("koa-router")();
const app = new Koa(); // 创建应用

// 设置路径,并且告知使用的模板引擎为:nunjucks
app.use(views(__dirname + "/views", {
    map: {
        html: "nunjucks"
    }
}))

// index:网页名
// title:传递的参数
router.get("/", async (ctx) => {
    await ctx.render("index", {
        title: "hello nunjucks!"
    });
})

router.get("/login", async (ctx) => {
    let username = ctx.query.username;
    let password = ctx.query.password;
    await ctx.render("home", {
        username: username,
        password: password
    })
})

app.use(router.routes());

// 设置监听端口
app.listen(3000, () => {
    console.log("server is running");
})

4、运行效果 

 

上面写的是get方式的传输数据。

如果使用post,则需要再下载一个模块。

六、post方式

1、下载模块 

2、修改server.js

const Koa = require("koa"); // 引入Koa构造函数
const views = require("koa-views");
const nunjucks = require("nunjucks");
// post请求
const parser = require("koa-parser");
const router = require("koa-router")();
const app = new Koa(); // 创建应用

// 设置路径,并且告知使用的模板引擎为:nunjucks
app.use(views(__dirname + "/views", {
    map: {
        html: "nunjucks"
    }
}))

app.use(parser());

// index:网页名
// title:传递的参数
router.get("/", async (ctx) => {
    await ctx.render("index", {
        title: "hello nunjucks!"
    });
})

// get方式
router.get("/login", async (ctx) => {
    let username = ctx.query.username;
    let password = ctx.query.password;
    await ctx.render("home", {
        username: username,
        password: password
    })
})

// post方式
router.post("/login", async (ctx) => {
    let username = ctx.request.body.username;
    let password = ctx.request.body.password;
    await ctx.render("home", {
        username: username,
        password: password
    })
})

app.use(router.routes());

// 设置监听端口
app.listen(3000, () => {
    console.log("server is running");
})

效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pro1822

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值