0
点赞
收藏
分享

微信扫一扫

Nunjucks模板入门

读思意行 2022-04-21 阅读 63
node.js

一、为什么要用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");
})

效果如下:

举报

相关推荐

0 条评论