编辑: 梦三石 2019-10-05
0

1 2 2.

1 2.2 2.3 2.4 2.5 2.6 2.7 2.8

3 4 4.1 4.2

5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.10.1 目录 简介 目录 IDE使用手册 快捷键 模块 添加学校 选择IDE 配置学校 代码回退 代码提交 添加/修改学校类型 编码规范 系统变量 params status 系统函数 base64 curl htmlEngine isUndefined log md5 regexMatch sha1 typeof context get 在线IDE帮助文档

2 5.10.2 5.11 5.11.1 5.11.2 5.11.3 5.12 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6

6 6.1 6.2 6.3 6.4 6.5 set time now sleep timestamp univ gpa currentTerm getBirthdateFromIdcard intGPA toNumericalScore str2Weeks 教务模块 验证码 登录 个人信息 成绩 课表 在线IDE帮助文档

3 在线IDE帮助文档 小助云在线IDE帮助文档. 在线IDE帮助文档

4 简介 目录 简介 目录 IDE使用手册 快捷键 模块 添加学校 选择IDE 配置学校 代码回退 编码规范 系统变量 params status 系统函数 context get set common deleteClient htmlEngine isUndefined regexMatch curl encrypt base64 md5 sha1 log time now sleep timestamp 在线IDE帮助文档

5 目录 typeof univ gpa 教务模块 验证码 登录 个人信息 成绩 课表 在线IDE帮助文档

6 目录 IDE开发指南 本章介绍使用IDE开发的注意事项及用法. 在线IDE帮助文档

7 IDE使用手册 快捷键 使用快捷键时,光标必须聚焦在编辑器中 快捷键 描述 F1(或 fn +F1) 跳转到帮助文档 F2(或 fn +F2) 配置参数(params) F3(或 fn +F3) 个人设置 F4(或 fn +F4) 查看代码保存记录 / 代码回退 F5(或 fn +F5) 运行代码 Ctrl-S / Command-S 保存代码 Ctrl-R / Command-R 刷新当前文件(方法)代码 Ctrl-B / Command-B 代码格式化 在线IDE帮助文档

8 快捷键 模块 教务模块 验证码、登录、个人信息、成绩、课表. 其他模块 除教务模块外的类型开发,可添加相应的模块及方法进行开发. 在线IDE帮助文档

9 模块 添加学校 登录后,在首页输入框中输入学校名,选择学校,回车即可添加学校.添加成 功后,学校会显示在下方的学校列表中;

此时,默认拥有教务模块(默认 captcha , login , info , score , lesson 方法) 和 通用模块(没 有默认方法,需后期手动添加). 在线IDE帮助文档

10 添加学校 选择IDE 选择下图中的相应的按钮,进入学校对应模块IDE. 注意:同一所学校的同一模块的同一方法在同一个浏览器中应只打开一个,若 出现多个,则以最后打开的编辑器代码为准,进行保存. 在线IDE帮助文档

11 选择IDE 配置学校 点击 配置 按钮,在弹出的模态框中进行配置. 配置分为配置学校 模块(如:edu、common) 和 方法(或功能)(如: captcha、login等). 操作: 输入模块或方法名称后需按回 车键,之后点击 确定. 如要删除某些配 置,直接点击该配置项右上方的 X 号即可删除;

若是删除 模块,则其项对应 的所有方法的代码均会被删除;

若是删除某个方法,则其对应的代码会被删 除. 在线IDE帮助文档

12 配置学校 代码回退 在编辑器中按 F4 ,即可弹出代码回退操作框;

点击 代码保存日期文字 即 可查看当前选择的时间点保存的代码;

点击 回退 按钮即可将代码回退到该时 间点保存的代码.如图: 当前查看的时间节点前面的 眼睛

图表会变成蓝色以做区别(图中红色圈出部 分). 在线IDE帮助文档

13 代码回退 代码提交 当代码调试完成后,可点击编辑器右上角的 提交 按钮来提交代码,提交后, 将对代码进行审核,审核通过后发布代码,相应学校可使用开发的功能. 在线IDE帮助文档

14 代码提交 添加/修改学校类型 显示 在开发者已添加的学校列表中可看到如下界面,在最左端显示学校类型. 修改 点击 配置 按钮,在弹出的模态框中的第一栏中填写该学校类型,回车即可进 行修改. 在线IDE帮助文档

15 添加/修改学校类型 编码规范 注意事项 : 使用字符串的时候,必须使用单引号;

理论上,代码中不应该出现双引 号. 定义变量和函数名,采用驼峰命名法,禁止使用下划线. 等于号 '

='

两边应该有空格,定义 JSON 的时候,冒号 '

:'

后面应 该要有一个空格隔开. 定义 Request Options JSON 的时候,可以参考最佳实践代码. 定义 Callback 的时候,可以参考最佳实践代码.严禁使用如下方式去 定义函数: var callback(param1, param2){ console.log(param1, param2);

} 最佳代码实践 在线IDE帮助文档

16 编码规范 var loginOptions = { url: '

http://jwgl.nxu.edu.cn/login.action'

, sessionId: params.sessionId, method: '

POST'

, form: { request_locale: '

zh_CN'

, '

loginForm.name'

: params.studentId, '

loginForm.password'

: params.password, '

loginForm.captcha'

: params.captcha } };

var loginCallback = function (html) { if (html.indexOf('

当前登录用户'

) >

0) { return status.LOGIN_SUCCESS;

} else if (html.indexOf('

验证码不对'

) >

0) { return status.WRONG_CAPTCHA;

} else if (html.indexOf('

密码错误'

) >

0) { return status.WRONG_PASSWORD;

} else if (html.indexOf('

账户不存在'

) >

0) { return status.USER_NOT_EXIST;

} return status.UNKNOWN_LOGIN_ERROR;

};

curl(loginOptions, loginCallback);

在线IDE帮助文档

17 编码规范 系统变量 系统变量如果是对象,可以通过object.property进行应用. 在线IDE帮助文档

18 系统变量 params 配置参数可通过 params 获取,如学生 ID : params.studentId 、学校 ID : params.schoolId . 属性 类型 描述 studentId string 学生学号(只有在 edu 模块中必须) password string 学生密码 upk string 学校pk,8位散列码 sessionId string 用户sessionId,代表唯一指定的用户;

用于标志对应请 求的缓存键,以及Cookie键;

在 edu 模块 为: sha1(edu/pk/studentId) ;

在其他模块为:当前 时间戳 在线IDE帮助文档

19 params status 属性 类型 说明 LOGIN_SUCCESS string 登录成功 UNKNOWN_LOGIN_ERROR string 登录发生未知错误 WRONG_CAPTCHA string 验证码错误 UNKNOWN_CAPTCHA_ERROR string 获取验证码发生未知错误 WRONG_PASSWORD bool 密码错误 USER_NOT_EXIST bool 用户名不存在 WRONG_USER_OR_PASSWORD string 用户名或密码错误 NOT_SUPPORT_SCORE string 不支持分数功能 NOT_SUPPORT_LESSON string 不支持课程功能 在线IDE帮助文档

20 status 系统函数 IDE中目前可使用的一些封装方法. 在线IDE帮助文档

21 系统函数 base64 String base64(String);

base64加密 示例代码: log(base64('

厦门大学'

));

// [2015-12-22 17:29:56] - 5Y6m6Zeo5aSn5a2m 在线IDE帮助文档

22 base64 curl void curl(curlOptions, curlCallback);

入口函数,脚本要执行并返回结果,必须含有此函数. 示例代码: 在线IDE帮助文档

23 curl var curlOptions = { url: '

http://www.baidu.com'

, // request url(必填) sessionId: params.sessionId,// sessionId method: '

POST'

, //默认为'

GET'

,如果发送get请求,可以不必设置此参数(可选) charset: '

gbk'

, // 设置编码,默认为utf-8;

如果编码为utf-8,可不填写(可选) channel: '

24_tcp'

, // 设置内网客户端编号,如果设置此选项,表示使用内网(可选) followAllRedirects: true, // 设置是否自动跳转,为true则自动跳转,默认为false,(可 headers: { // 设置header Referer: '

http://www.baidu.com'

, // 请求url的Referer,推荐填写正确的Referer(可 '

Content-type'

: '

application/json;

charset=utf-8'

, '

User-Agent'

: '

Mozilla/5.0 (Macintosh;

Intel Mac OS X 10_11_2) AppleWebK }, form: { // 设置提交表单 url: '

./usersys/index.jsp'

, OperatingSystem: '

'

, Browser: '

'

, user_id: params.studentId, password: params.password, user_style: '

modern'

, user_type: '

student'

, btn1: '

'

}, // 如果body的值是个json字符串,需要在headers中设置Content-type为'

application/j body: JSON.stringify({ // 设置Request Body, body的值必须为string,如果是JSON key1: value1, key2: value2 }) } var curlCallback = function(html){ // html就是你请求的html,是个字符串;

// 接下来可以使用htmlEngine方法对网页进行解析,具体使用方法可以参加htmlEngine方法 return html;

// curl函数一定要有返回值,前端界面才能显示,否则的话,没有返回值前端会无限等待30秒超 // 一个文件中可以有多个curl函数,但是有且只有一个curl函数能有返回值,其他的curl函数 };

在线IDE帮助文档

24 curl htmlEngine Object htmlEngine(String html) 将html字符串渲染成 DOM 对象,进而进行解析;

htmlEngine 方法是对 cheerio 进行了封装 具体用法可以参照这里 (https://www.npmjs.com/package/cheerio). 示例代码: demo html td>

Apple tr>

td>

Banana tr>

td>

Pear tr>

在线IDE帮助文档

25 htmlEngine var callback = function(html){ // 99%的情况下,是在这个回调函数中解析网页的 // 假设待解析的网页如上所示,需要获取tr中的所有水果 var $ = htmlEngine(html);

var fruits = [];

var trs = $('

table#tb >

tr'

);

var loopCounter = trs.length - 1;

for(var i = 0;

i <

loopCounter;

i++){ var text = $(trs.get(i)).text();

// 需要特别注意,你通过get(i)获取的那个对象,想 fruits.push(text);

} return fruits;

};

在线IDE帮助文档

26 htmlEngine isUndefined Boolean isUndefined(Object obj);

判断一个对象是否是 undefined ,如果是,返回 true . 示例代码: isUndefined();

// 下面是源码 var isUndefined = function (obj) { return typeof(obj) === '

undefined'

;

};

在线IDE帮助文档

27 isUndefined log void log(String msg);

日志打印,用于开发调试.传入的参数最好显式类型为string类型,不应该传入 一个DOM对象进来,可能会发生未知错误. 示例代码: [2015-12-07 11:40:55] - this is log. [2015-12-07 11:40:55] - this is log. 在线IDE帮助文档

28 log md5 String md5(String);

md5加密. 示例代码: log(md5('

厦门大学'

));

// [2015-12-29 15:56:33] - b3856cafae2f5a0c59031170bc356ce4 在线IDE帮助文档

29 md5 regexMatch String regexMatch(String input, String regex);

正则匹配.匹配成功,返回匹配的字符串,否则返回空字符串 '

'

. 采用的 是 JavaScript 的正则匹配,教程可以参 考:http://www.cnblogs.com/kentico/archive/2010/09/06/1819660.html 示例代码: var str = '

12-20150102'

;

// 匹配字符串中的2015 var result = regexMatch(str, /d+-(d{4})/);

console.log(result);

// 输出:2015 在线IDE帮助文档

30 regexMatch sha1 String sha1(String input);

将传入的字符串进行sha1散列,返回40位散列码. 示例代码: var result = sha1('

test'

);

console.log(result);

// a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 在线IDE帮助文档

31 sha1 typeof String typeof(Object obj);

JS中的变量是弱类型的,可以用来保存任何类型的数据. typeof 可以用来检测给定变量的数据类型,可能的返回值: { '

undefined'

: '

这个值未定义'

, '

boolean'

: '

这个值是布尔值'

, '

string'

: '

这个值是字符串'

, '

number'

: '

这个值是数值'

, '

object'

: '

这个值是对象或null'

, '

function'

: '

这个值是函数'

} 示例代码: var obj = {name: '

your name'

};

console.log(typeof(obj));

// 输出:'

object'

在线IDE帮助文档

32 typeof context 缓存设置及获取. 若代码执行出错,context缓存将无法持续读取. 在线IDE帮助文档

33 context get String context['

name'

];

String context.name;

获取设置的缓存 在线IDE帮助文档

34 get set void context['

name'

] = '

小助云'

;

void content.name = '

小助云'

;

设置缓存 context 本质上是一个对象,所以可以以上两种方式均可,建议使用 . 操作符 (即第二种方式). 在线IDE帮助文档

35 set time time 模块目前拥有 now 、 sleep 、 timestamp 三个方法. 在线IDE帮助文档

36 time now String time.now();

返回当前时间. 返回格式 2016-03-24 17:35:38 在线IDE帮助文档

37 now sleep void time.sleep(n);

休眠,其中n的单位为秒(s). 在线IDE帮助文档

38 sleep timestamp String time.timestamp() 获得当前时间戳. 返回格式

1458812180374 在线IDE帮助文档

39 timestamp univ 开发教务时的一些公用方法及工具函数. 在线IDE帮助文档

40 univ gpa float gpa(String score);

计算GPA,源代码如下: var intReg = new RegExp('

^[0-9]+$'

);

var floatReg = new RegExp('

^[0-9]+.[0-9]+$'

);

// calculate gpa var gpa = function (score) { if (intReg.test(score) || floatReg.test(score)) { score = parseFloat(score);

if (score >

= 90) { return 4;

} else if (score >

= 85) { return 3.7;

} else if (score >

= 81) { return 3.3;

} else if (score >

= 78) { return 3.0;

} else if (score >

= 75) { return 2.7;

} else if (score >

= 72) { return 2.3;

} else if (score >

= 68) { return 2.0;

} else if (score >

= 64) { return 1.7;

} else if (score >

= 60) { return 1.0;

} else { return 0;

}........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题