koa2入门系列 Part 3
koa页面渲染
上一节我们通过koa的路由中间件,在上下文的body属性中渲染页面内容,但那只是基本的一些字符串内容,而我们前端所用的页面,或者浏览器所渲染的,基本都是html标签的页面文件,如果想在koa路由中渲染标签内容,又如何做呢,接下来看代码
1、渲染html内容
就是在body中渲染标签文本,用es6的模版语法把html文本包起来就可以了。
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
app.use(async (ctx, next) => {
await next();
});
router.get('/', async ctx => {
ctx.type = `text/html;charset=utf-8`;
ctx.body = `
首页
<%- include('blocks/header.ejs') %>
首页
<%- include('blocks/header.ejs') %>
test
`; }); //启动路由 app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3000); 重启服务,刷新浏览器,就会看到浏览器显示加粗的test字样。 众所周知,日常开发中,页面需要展示的标签内容有时候是很庞大的,而这时候body又不可能去填写那么多的内容,这时候就得益于编程中的模块化思想了:就是把想要的内容当成一个模块引入。 2、渲染js标签文件 接下来新建一个html.js文件,把上面要展示的html内容复制过去 module.exports = `test
`; 然后在app.js中引入 const Koa = require('koa'); const Router = require('koa-router'); const testTpl = require('./html.js'); console.log(testTpl); const app = new Koa(); const router = new Router(); app.use(async (ctx, next) => { await next(); }); router.get('/', async ctx => { ctx.type = `text/html;charset=utf-8`; ctx.body = testTpl; }); //启动路由 app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3000); 重启服务器,刷新浏览器,这样页面就能展示同样的内容。 3、模版渲染 虽然当作模块引入也能达到我们想要的效果,但html.js毕竟只是一个js文件,跟我们正常使用的html文件还是不一样,如果想要使用html文件,就要使用本节需要用到的koa-views中间件了。 首先下载yarn add koa-views ejs,其中ejs是模版库,用来渲染模版文件的,具体用法参考官网。 然后在项目根目录新建views文件夹,并在该目录下新建index.ejs和news.ejs、blocks/header.ejs文件,文件内的内容如下<%= commonData %>
<%= title %>
-
<% for(var i = 0;i < list.length;i++){ %>
- <%= list[i] %> <% } %>
<%= commonData %>
<%= title %>
-
<% for(var i = 0;i < list.length;i++){ %>
- <%= list[i] %> <% } %>
发表评论 (审核通过后显示评论):