服务端编程
零、初识服务器编程
-
服务器编程一般由python、Java、nodejs等,但前端一般使用的都是nodejs来写
-
nodejs就是可以让JavaScript脱离浏览器运行,之前的js只能在浏览器中运行,就不能做一些关于资源文件的操作,现在可以脱离浏览器就可以有更多的可能性,nodejs就可
-
绝大多数后端都在:
- 读写数据库:前端是不能直接在数据库中取出数据的
- 编写API:给前端使用来拿到数据
-
一般有 commonJS(同步 服务器)、AMD(异步 浏览器)、promise
一、koa
koa基本使用
其实官网都说的挺好的了,就说下现在要用的一些操作吧:
Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的
- 导入koa:
const Koa = require('koa')
:注意这里要用ES5的require方式导入,而不用ES6的import方式 - 实例化koa对象:
const app = new Koa()
- koa对象的listen方法来监听某个服务器:
app.listen(3000)
,这里是监听3000端口 - 注册中间件函数
koa.use(中间件函数名)
中间件函数
-
在koa中,要想在用户对服务器发起请求时做点什么,就要写在中间件函数里(类似于 响应时的动作)
-
若注册了多个中间件,则运行它们的运行顺序遵循——洋葱模型,但这也是要有条件的,洋葱模型是最容易想到和理解的模型,所以只要遵循它就可使问题变得简单一些,条件就是加上async和await标识
-
async和await标识细节就不多说了,这两个标识符就是为了让函数能够同步的执行代码,不会出现意料之外的结果 详见
-
-
中间件常见写法如下,ctx是上下文信息,里面包含了请求的所有信息(如这里是path是路径,method是请求方式),next是下一个中间件函数
app.use((ctx, next) => {
if (ctx.path === '/classic/latest' && ctx.method === 'GET') {
console.log('123')
}
next()
})
koa-router 路由库
- koa-router可以处理客户向服务器发送的请求,其实这就是个路由中间件;
- 先引入koa-router模块,再进行实例化,例子如下:
const Router = require('koa-router')
const router = new Router()
// 写法一
router.get('/book/hot_list', async (ctx, next) => {
ctx.body = '/book/hot_list'
})
// 写法二
app.use((ctx, next) => {
if (ctx.path === '/book/hot_list' && ctx.method === 'GET') {
ctx.body = '/book/hot_list'
}
next()
})
- 上面例子中的两种写法含义是一样的,但上面那种就有助于模块化、更加清晰直观,且不用把所有的判断都放在一个文件里;
- 同时router实例还有post、put、get等方法,对应http各种请求方式