- app.js 入口
- api Controller
- admin 用户的增删改查
- admin.controller.js
- admin.js
- category.controller.js
- laboratory.controller.js
- post.controller.js
- tag.controller.js
- oauth github认证相关
- github.controller.js
- index.js
- post 发表文章相关
- comment.controller.js
- post.controller.js
- post.js
- track 所在位置
- track.controller.js
- track.js
- config 配置参数
- koa.js
- environment
- src 静态文件夹
- tempUploads
- uploads
- 20190226
- 20190228
- 1551361201136.png
- 1551362238172.png
- middlreware 中间件
- routes 路由管理
- util 一些公共方法
- admin-account.js
- draft-redis.js
- draft-socketio.js
- helper.js
- mysql-async.js
- redis-mysql.js
- redis-store.js
服务器入口文件
//app.js
const session = require('koa-session2');
const http = require('http');
const fs = require('fs');
const path = require('path');
// 对koa的二次封装,涉及路由拦截,jwt认证等
const app = require('./config/koa');
// 基本配置参数
const config = require('./config/environment');
// mysql
const query = require('./util/mysql-async');
//redis
const Store = require('./util/redis-store');
//socket
const draftSocket = require('./util/draft-socketio');\
//redis连接mysql
const redisMysql = require('./util/redis-mysql');
//redis初始化
app.use(session({
store: new Store(config.db.redis),
ttl: 2 * 60 * 60 * 1000
}));
// 是否允许跨域
app.use(async (ctx, next) => {
ctx.execSql = query;
ctx.set('Access-Control-Allow-Origin', config.accessControlAllowOrigin);
await next();
});
// routes
fs.readdirSync(path.join(__dirname, 'routes')).forEach(function (file) {
if (~file.indexOf('.js')) {
app.use(require(path.join(__dirname, 'routes', file)).routes());
}
});
//开启服务器
const server = http.createServer(app.callback())
.listen(config.port)
.on('listening', function () {
console.log('server listening on: ' + config.port);
});
// 初始化websocket
draftSocket.initSocket(server);
// 初始化定时任务
redisMysql.redisToMysqlTask();
总结
- 这是服务器的文件结构和入口文件,其中还有一些细节没有展示,比如如何连接redis,如何连接数据库,路由捕获,jwt认证,socket的前后端联调等,这些一一会在后面介绍。
确认评论邮箱
邀请制评论