## 简单的代码分析
```
const Koa = require('kk-koa-framework')
const path = require('path')
const locals = require('./locals')
// 创建一个web服务实例
const koa = new Koa()
// 挂载vendor 以及 assets,让其可以支持web访问
koa.addStatic(path.join(__dirname,'vendor'))
if(Array.isArray(locals.assetsPath)){
locals.assetsPath.map(p=>{
koa.addStatic(path.join(__dirname,p),{maxage:1000 * 60 * 60 * 24 * 7})
})
}else{
koa.addStatic(path.join(__dirname,locals.assetsPath),{maxage:1000 * 60 * 60 * 24 * 7})
}
// 启动服务
koa.setup()
process.env.API_URL = koa.$$.config.API_URL
// process.once('uncaughtException', function (err) {
// console.error("uncaughtException",err)
// })
// 启动时 创建websocket的实例,并启动链接
koa.startup(server=>{
require('./ws/ws_handler')(server)
})
```
- 相关资源链接
- 米乐星球小程序内调研
- 项目结构说明
- 交互课件说明
- server项目说明
- 项目说明
- 项目启动
- app.js做的事情
- 获取互动课件的地址
- 分析互动课件地址的参数
- policy目录--lesson.js
- 解析ppt--api/lesson.js
- 信令中的key:template
- 信令中的key:media
- kk-talkee-engine.js
- Message
- 课件模板页的识别过程
- 解析课件模板的源文件
- 场景与模板的对应关系
- 所有场景的基类
- choiceScence为例
- 注意事项
- ws
- online项目的说明
- online消息
- 课件编辑项目
- 资源链接
- 基本项目信息
- electron项目结构分析
- ipc
- 模板题组
- 普通题组
- 游戏题组
- 课件导出内容分析
- 课件模板分类明细
- 图片题
- 视频题
- 音频题
- 选择题
- 判断题
- 转盘
- 筛子
- 图层拖拽
- 动画题
- 翻拍题
- 语音题
- 201908变更
- 课件制作流程分析
- 菜单配置
- 入口操作
- 定义模板布局与初始化
- 选择素材
- 导出过程
- egret
- interface
- ad选择器模板
- ab选择器模板
- 图层拖拽模板
- 判断题模板
- xml
- 转盘
- events
- components
- 父类组件
- 基本组件
- 判断题组件
- 龙骨动画调研
- 基本了解
- 产品原型
- 白板Client项目
- 消息类型
- 白板项目分析
- 入口