自动化JavaScript WebAPI开发包 HIJK
本文导语: HIJK是一个自动化的WebAPI ALL-in-ONE开发工具包,使用了JDK8中新加入的执行命令Nashorn jjs 启动, 从服务器端到客户端都使用统一的JavaScript语言, 所有修改都会在访问时自动加载,不需要再编译. HIJK包括了完整的Web服务器,能直...
HIJK是一个自动化的WebAPI ALL-in-ONE开发工具包,使用了JDK8中新加入的执行命令Nashorn jjs 启动, 从服务器端到客户端都使用统一的JavaScript语言, 所有修改都会在访问时自动加载,不需要再编译.
HIJK包括了完整的Web服务器,能直接存取非结构JSON数据的数据库引擎,多个常用Web功能的JavaScript封装。开发效率高, 无配置,开发完的系统直接复制到另一台机器就能以一致的方式运行。所有代码都是标准JavaScript,兼容全部JavaScript开发工具,使用简单的几行代码就能完成复杂的功能。运行效率高,单机处理每秒几千次的HTTP数据查询请求无压力。
基本用法:
新建一个javascript文件,写入两个HelloWorld
hijk.api.helloworld = function() { return "Hello World!"; }; hijk.api.helloworld2 = function() { return {MSG: 'Hello World!'}; };
然后把文件复制到 js 目录下,这两个函数就会自动作为WebAPI执行,支持文本及JSON数据,也可以使用 http://localhost:8080/edit/js/demo.js 直接在线开发 WebAPI 或者在线编写html页面.
支持最新WebSocket WebAPI,可以通过 send(), onmessage() 与客户端进行双向的数据通讯,使用这个功能只需要30行JavaScript代码就能完成一个聊天室的服务器端开发。
hijk.api.ws_helloname = function(socket, request, response) { socket.send("Name: ") .onmessage(function(name) { send_all("Welcome " + name); }); };
通过标准HTTP及WebSocket协议提供的API能非常方便被Windows, Linux, Android, iOS, Windows Phone等各类终端机的应用程序调用。同时HIJK开发包内置了Web服务器,同时支持HTTP及HTTPS,只需要把 *.html 复制到 html 目录就可以使用http(s)访问了。
支持动态HTML函数,可以在HTML页面返回客户端前进行附加处理,例如替换自定义标签,扩展标准标签,也可以在页面中插入JSON数据,再调用JSON-HTML模板引擎,这个函数可以跟各种HTML扩展引擎结合。下面是一个简单的例子,在中动态插入搜索引擎会读取的关键字部分
hijk.api["/table1_template.html"] = function(file, map, request) { function demo_server_template_processor(html, json) { html = html.replaceFirst("", "Server Process -" + json.record.name + "" + "" + ""); return html; } var html = file.html; var json = hijk.api.table1_template_json(map, request); html = demo_server_template_processor(html, json); return html; }带有JSON HTML 模板引擎库,使用标准HTML创建模板,可以绑定JSON数据,非常方便直接地使用从WebAPI中返回的数据。绑定语法简单 "{{name}}" 绑定JSON的一个属性, "{{#names}}内容{{/names}} " 绑定一个数组,并且foreach生成内容。引入的是JavaScript引擎库,可以放到客户端中进行模板处理,不费服务器的CPU,放心加载50000条数据,不影响服务器。
支持多线程。把一个普通function作为参数传入sys.thread()就会转到后台线程中运行, 通过 sys.threadreturn 返回运算结果给主线程, 主线程中使用 take() 就能取得后台线程运行结果同时自动完成线程同步。支持使用 sys.threadvar() 创建线程本地变量。
hijk.api.multi_thread = function() { var results = sys.threadreturn(2); //Thread 1 sys.thread(function() { for (var i = 1; i