Jade Dungeon

hijk

基于JDK8的JS运行环境jjs的一个JavaScript WebAPI开发包。

项目主页:https://github.com/iboxdb/hijk

安装

下载解压,假设安装目录为:/opt/hijk

新建工程

要建立一个新项目,建立一个目录myprj

mkdir myprj
mkdir myprj\html  
mkdir myprj\iboxdb  
mkdir myprj\js

运行一下:

export HIJK_HOME=/opt/hijk
jjs -cp $HIJK_HOME/kits/jetty-io-9.2.1.v20140609.jar:$HIJK_HOME/kits/servlet-api-3.1.jar:$HIJK_HOME/kits/iBoxDBv18.jar:$HIJK_HOME/kits/jetty-http-9.2.1.v20140609.jar:$HIJK_HOME/kits/jetty-server-9.2.1.v20140609.jar:$HIJK_HOME/kits/jetty-util-9.2.1.v20140609.jar $HIJK_HOME/build.js

程序都放在js目录下,比如我们新建一个程序文件js/demo.js

hijk.api.helloworld = function(map, request, response){ return "Edit Hello World" };

浏览器中可以通过地址访问:http://localhost:8080/api/helloworld

js目录下的任何修改都会及时响应,而且http://localhost:8080/edit/js/demo.js 还可以直接编辑js/demo.js代码。

简介

返回字符串、JSON、DOM

hijk.api.helloworld = function()  { return  "Hello World!"; };
hijk.api.helloworld2 = function() { return {MSG: 'Hello World!'}; };
hijk.api.helloworld3 = function() { return  "<h3>Hello World!</h3>"; };

在HTML中调用API

建立文件html/index.html

<html>

	<body>
		<input type="button" onclick="hello();" value="click me" />
	</body>

	<script   type="text/javascript">
		function hello() {
			var req = new XMLHttpRequest();
			req.open("GET", "/api/helloworld2", true);
			req.onreadystatechange = function() {
				if (req.readyState === 4 && 
						(req.status === 304 || req.status === 200)) 
				{
					var o = eval("(" + req.responseText + ")");
					alert(o.MSG);
				}
			};
			req.send();
		}
	</script>

</html>

带参数的API

hijk.api.get = function(map,request) {
    var msg = {
        url: request.getRequestURI(),
        id : map.id[0],
        name: map.name[0] 
    };
    return msg;
};

访问:http://localhost:8080/api/get?id=99&name=andy

定义数据表

hijk.table.table1 = {
    data: {"id": 0, "name": ""},
    key: ["id"],
    index: [["name"]]
}

插入记录

hijk.api.table1_insert = function() {
    var tid = hijk.db.id();
    var v = {
        id: tid,
        name: "name" + tid,
        fieldA: "fieldA" + tid,
        fieldB: "fieldB" + tid
    };
    if (hijk.db.insert("table1", v)) {
        return tid;
    } else {
        return -1;
    }
};

读取记录

hijk.api.table1_select_sum = function() {
    var r = 0;
    hijk.db.select("from table1", [],
            function(v) {
                r += v.id; 
            });
    return r;
};