1-使用 koa 搭建服务器
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
// ctx.body 即服务端响应的数据
ctx.body = 'Hello Koa';
})
// 监听端口、启动程序
app.listen(3000, err => {
if (err) throw err;
console.log('runing...');
})
2-如何配置 koa 路由
安装
npm install koa-router --save 或者 yarn add koa-router --save
npm install --save koa 或者 yarn add koa --save
let Koa = require('koa');
let Router = require('koa-router');
/**
* 配置路由的另一种方式:
* let router = require('koa-router')(); 引入并实例化
*/
// 实例化
let app = new Koa();
let router = new Router();
// app.use(async(ctx) => {
// ctx.body = '你好,koa路由';
// });
// 配置路由,ctx 上下文context,包含了request和response等信息
router.get('/', async (ctx, next) => {
ctx.body = "首页"; // 相当于:原生里面的res.writeHead() res.end()
}).get('/news', async (ctx, next) => {
ctx.body = "新闻";
});
app
.use(router.routes()) // 启动路由
.use(router.allowedMethods()); // 可配置可不配置,建议配置
/**
* router.allowedMethods()
* 作用: 这是官方文档的推荐用法,我们可以看到 router.allowedMethods()用在了路由匹配 router.routes()之后,
* 所以在当所有 路由中间件最后调用.此时根据 ctx.status 设置 response 响应头
*/
// 监听端口
app.listen(3000);
3-静态资源如何获取
npm install --save koa-static
const Koa = require('koa')
// 引入node的path模块
const path = require('path')
// koa-static中间件,用于访问静态文件
const static = require('koa-static')
const app = new Koa()
/ 使用中间件,利用path模块的方法拼接出静态文件目录的绝对路径
app.use(static(path.join(__dirname,staticPath)))
4-koa 如何使用模板引擎
// 1. 安装
npm install --save art-template
npm install --save koa-art-template
var Koa = require('koa'),
router = require('koa-router')(),
render = require('koa-art-template'), // 2. 引用
path = require('path');
var app = new Koa();
// 3. 配置 koa-art-template模板引擎
render(app, {
root: path.join(__dirname, 'views'), // 视图的位置
extname: '.html', // 后缀名 如:index.html
debug: process.env.NODE_ENV !== 'production' //是否开启调试模式
});
router.get('/', async (ctx) => {
let app = {
name: '张三11',
h: '<h2>这是一个h211</h2>',
num: 20,
data: ['11111111', '2222222222', '33333333333']
};
await ctx.render('index', { // 4. 传参 渲染koa-art-template模板 index.html
list: app
});
})
app.use(router.routes()); /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);