Koa搭建简单服务器

1. dependencies

"co-mysql": "^1.0.0",
"koa": "^2.7.0",
"koa-better-body": "^3.0.4",
"koa-ejs": "^4.2.0",
"koa-router": "^7.4.0",
"koa-session": "^5.12.0",
"koa-static": "^5.0.0",
"mysql": "^2.17.1"

2. 主服务

引包

 1 const fs = require(‘fs‘);
 2 const path = require(‘path‘);
 3 const Koa = require(‘koa‘);
 4 const Router = require(‘koa-router‘);
 5 const session = require(‘koa-session‘);
 6 const ejs = require(‘koa-ejs‘);
 7 const body = require(‘koa-better-body‘);
 8
 9 const _static = require(‘./routers/static‘);
10 const config = require(‘./config‘);
11
12 const app = new Koa();
13 const router = new Router();

错误处理

1 router.all(‘*‘, async (ctx, next) => { // * 表示所有的请求,都会经过这里的处理
2     try {
3         await next();
4     } catch (e) {
5         ctx.throw(500, e);
6     }
7 });

服务端渲染 koa-ejs

1 ejs(app, {
2     root: path.resolve(__dirname, ‘template‘), // 模版路劲
3     layout: false, // 使用 render 方法渲染模版时有所区别,如果省略,会去找 template/layout.ejs             // false: ctx.render(‘admin/index.ejs‘) ‘abc‘: ctx.render(‘abc/admin/index.ejs‘)4     viewExt: ‘ejs‘,// 模版后缀名
5     cache: false,  // 缓存
6     debug: false   // 如果是 true,会把编译之后的内容全部输出
7 });

路由 koa-router

1 router.use(‘/admin‘, require(‘./routers/admin‘)); // localhost:8080/admin/xxx
2 router.use(‘/api‘, require(‘./routers/api‘)); // localhost:8080/api/xxx
3 router.use(‘‘, require(‘./routers/www‘)); // ‘‘ 表示根,localhost:8080/xxx

开放静态资源 koa-static

_static(router, {
    imageMaxAge: config.imageMaxAge,
    scriptMaxAge: config.scriptMaxAge,
    styleMaxAge: config.styleMaxAge,
    htmlMaxAge: config.htmlMaxAge,
    otherMaxAge: config.otherMaxAge
});/*  // 上面只是封装了, 比如  // ...  const static = require(‘koa-static‘);  // ...  router.all(/\.jsx?/i, static(path, options));*/

session koa-session

1. .keys 文件是通过脚本生成的用来 session 签名的密钥,数组,每个元素都是无规律的不同字符组合

2. 这里可以使用同步读取文件的方式,因为是在启动服务的时候,只读取一次,所以,不会影响服务器性能

1 app.keys = fs.readFileSync(‘.keys‘).toString().split(‘\r\n‘);
2 app.use(session({
3     maxAge: 20 * 60 * 1000, // 缓存时间 20 分钟
4     renew: true // 自动续期
5 }, app));

处理 POST 数据 koa-better-body

1 app.use(body({
2     uploadDir: config.UPLOAD_DIR
3 }));

数据库 mysql co-mysql

1 app.context.db = require(‘./libs/database‘); // app.context 相当于 ctx 的原型,所以,可以使用 ctx.db,query(sql语句) 来操作数据库

配置

1. 很多地方都需要 config,直接加到 app.context 上,通过 ctx.config 使用

1 app.context.config = config;
1 app.listen(config.HTTP_PORT, () => console.log(`Server running on ${config.HTTP_PORT}...`));
2 app.use(router.routes());

3. 数据库

 1 const mysql = require(‘mysql‘);
 2 const co = require(‘co-mysql‘);
 3
 4 const config = require(‘../config‘);
 5
 6 const conn = mysql.createPool({
 7     host: config.DB_HOST,
 8     user: config.DB_USER,
 9     password: config.DB_PASS,
10     port: config.DB_PORT,
11     database: config.DB_NAME
12 });
13
14 module.exports = co(conn);

4. md5

 1 const crypto = require(‘crypto‘);
 2 const config = require(‘../config‘);
 3
 4 module.exports = {
 5     // 生成 md5 值
 6     md5 (buffer) {
 7         const obj = crypto.createHash(‘md5‘);
 8         obj.update(buffer + config.MD5_KEYS);
 9         return obj.digest(‘hex‘);
10     }
11 };

原文地址:https://www.cnblogs.com/clmf/p/10946910.html

时间: 2024-10-13 07:47:42

Koa搭建简单服务器的相关文章

Node安装及搭建简单服务器

注:本文安装系统为mac,windows及其他系统下载对应安装包 ,mac下载后的安装包为apk文件,windows为msi文件. 安装 1.在网上下载mongodb 安装包,官方网站2.双击下载文件,按步骤安装,安装完成后就可以使用node和npm命令了.3.打开终端 输入 node -v,终端将提示安装的node版本.4.nodejs运行环境安装成功. 常用的指令: npm install moduleNames:安装Node模块 安装完毕后会产生一个node_modules目录,其目录下就

node.js搭建简单服务器,用于前端测试websocket链接方法和性能测试

WebSocket简介 谈到Web实时推送,就不得不说WebSocket.在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询 (Polling)和Comet技术,Comet又可细分为两种实现方式,一种是长轮询机制,一种称为流技术,这两种方式实际上是对轮询技术的改进,这些 方案带来很明显的缺点,需要由浏览器对服务器发出HTTP request,大量消耗服务器带宽和资源.面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并实现真正意义上的

利用gulp搭建简单服务器,gulp标准版

var gulp = require('gulp'), autoprefixer = require('gulp-autoprefixer'), //自动添加css前缀 rename = require('gulp-rename'), //文件重命名 sass = require('gulp-sass'), //sass的编译 minifycss = require('gulp-minify-css'), //压缩css uglify = require('gulp-uglify'), //压缩

nodeJs搭建简单服务器

实现简单的例子:hello word 把第一个文件命名为server.js 在server.js里写入 var http  = require("http"); http.createServer(function(request,response){ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("Hello World"); re

搭建简单Samba服务器

本文主要实现搭建简单的Samba服务器,使得Windows能访问Linux下的共享目录,为了简单,已经关闭iptables和selinux. 1.安装samba服务器 #yum list all samba* #yum install samba --skip-broken 2.修改samba配置文件 #cd /etc/samba #cp smb.conf smb.conf.bak #vi smb.conf --在配置文件最后增加 [software] comment = Share Testi

mongoDB介绍、安装、搭建简单的mongoDB服务器(一)

相关网站 1. http://www.mongodb.org/ 官网,可以下载安装程序,和doc,和驱动等. 2. http://www.mongoing.com/ 国内官方网站,博客,问题谈论等 3. http://docs.mongoing.com/manual-zh/  中文文档的翻译. 4. https://github.com/mongodb GitHub源码,程序源码,驱动源码.以及工具.(可以看到所有版本) 5. https://jira.mongodb.org MongoDB B

Centos6.4 搭建Git服务器 (最简单的方法)

下载 git-1.8.2.tar.gz tar -zvxf git-1.8.2.tar.gz cd git-1.8.2.2 sudo make prefix=/usr/local/git all sudo make prefix=/usr/local/git install git –version 查看版本 以上是服务器安装. 下面是建库. centos服务器上建库及测试 mkdir /git cd /git git –bare init //建立空仓库 git ssh-keygen (建本地

搭建简单DHCP服务器

实验01:搭建简单DHCP服务器 实验目标 搭建简单DHCP服务器 实验步骤 环境准备 安装一台RHEL6.5虚拟机 1)内存1G.硬盘80G.软件包(桌面.开发工具) 2)关闭防火墙.关闭SELinux机制 提示:修改 /etc/selinux/config,设置SELINUX=permissive getenforce.setenforce 3)安装好vmware-tools 4)网络配置:VMnet4, svr5.tarena.com  192.168.4.5/24 提示:关闭 Netwo

Linux下搭建简单的DHCP服务器

在RHEL6.5下搭建简单的DHCP服务器 实验目标 1.为192.168.10.0/24网段的客户机自动配置网络参数 用来给客户机自动分配地址的IP地址范围是:192.168.10.50-192.168.10.100.192.168.10.120-192.168.10.200 客户机的默认网关地址设为192.168.10.1 客户机所使用的DNS服务器设为202.106.0.20.8.8.8.8,默认域后缀是"tarena.com" 将默认租期设为2小时,最大租期设置为4小时 2.为