README.md 3.47 KB

Programming

互动式编程

启动项目:

node版本7.x

全局安装http-server

npm install -g http-server

到项目文件夹下 使用命令:

http-server -p 8010
// 单文件(录制)
http://127.0.0.1:8010/src/index.html?languageid=35&userId=826920&role=0

// 单文件(回放)
http://127.0.0.1:8010/src/player.html?codeReplayId=286636&role=0&userId=285836&languageid=10

// 多文件(录制)
http://127.0.0.1:8010/src/v1.1/index.html?languageid=35&userId=826920&role=0
// 多文件(回放)
http://127.0.0.1:8010/src/v1.1/player.html?codeReplayId=285834&role=0&userId=285836&languageid=10
  1. 参数说明:
  2. 第三方库说明
  3. 项目结构

打包工具 gulp

gulp(编译 sass 文件)

gulp copyfile(拷贝文件到dist)

gulp deploy(部署,现在没有使用到线上)

参数说明:

// 多文件在v1.1文件夹下,但文件路径没有v1.1

// 录制参数:
languageid   // 语言id
userId       // 用户id
role         // 角色:0:老师,1学生

// 播放参数:
codeReplayId    // 播放课程的代码id
languageid      // 语言id
userId          // 用户id
role            // 角色:0:老师,1学生

参数说明: // 多文件在v1.1文件夹下,但文件路径没有v1.1

// 录制参数:
languageid   // 语言id
userId       // 用户id
role         // 角色:0:老师,1学生

// 播放参数:
codeReplayId    // 播放课程的代码id
languageid      // 语言id
userId          // 用户id
role            // 角色:0:老师,1学生

第三方库说明

// 第三方库
1jqueryjquery-1.7.1
2bootstrap
3codemirror(编辑器基础库)
4ztree(用于创建多文件目录结构)
5emmet.js(用与前端的自动补全)
6ladda(按钮提示)

// 我们项目自写的插件
7Hourglass.js(计时器插件)
8Myna.js(录音)
9jquery.audioPlayer(播放音频的jquery插件(商艳涛写的有问题可以找涛哥))
10

项目结构

注:由于但文件已经不用以后所有的项目都是多文件录制,所以这里只说明多文件的项目架构,但文件的入口在src/js/gbreplayer.js下。

多文件的html入口在v1.1中,js在gxb-ide中,

// Ide.js
// 入口文件,初始化一个GxbIde对象,初始化ide下面的几个对象
GxbIde = function(){
    this.codingEditer = CodingEditer;   // 编辑器
    this.dir = Dir;                     // 目录
    this.toolBox = ToolBox;             // 工具
    this.init.apply(this, arguments);   // 绑定this
}
// 初始化一个ide
var ide = new GxbIde({
    el: '#folder',
    role: _role,
    isPlayPage: 1,
    languageid: parseInt(_languageid)
});

// CodingEditer.js
是初始化编辑器,

// Dir.js
初始化文件目录结构,

// Iterm.js
编译控制台和web预览区,

// ToolBox.js
工具栏控制录制,预览,保存等功能

// src/js/recorder/Maya.js
录音和上传音频文件的地方
// ToolBox.js
HZRecorder.get(function(rec) {
    recorder = rec;
    recorder.start();
});

// 两个重要的函数

// 初始化播放队列
function changeValueCallback(record, replay_type, offset) {
    // record 存放老师动作的数组对象
    // replay_type 播放速度
    // offset 播放间隔(暂时没有到)
}

// 往编辑器里插入代码
function processChangeObject(playbackcm, obj) {
    // playbackcm 编辑器对象
    // obj 每个动作的对象
}