初探JAXER
昨天更新Aptana的时候发现Aptana网站上多了一个JAXER,不知为何物。google了一把也只找到一个介绍的翻译,再回网站上看了一下,原来是22日刚发布的。不过看过简单介绍后,觉得最吸引人的地方就是这几张图
直接运行htm页面,服务器端运行的javascript,服务器端和浏览器端都能运行的方法,还有可以从浏览器端调用的服务器端的方法,有点意思,感觉有点像asp.net。马上研究了一下它的API文档(http://aptana.com/reference/jaxer/api/Jaxer.index-frame.html),基本的东西都全了,数据库支持mySql和SQLite。
SQLite使用太方便了,找了一个SQLiteSpy带的world.db3数据库,使用最新的Aptana(已经包括了JAXER插件和服务器),结合jquery做了一个简单的例子。
全部代码如下:
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2<html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
5 <title>Untitled Document</title>
6 <script language=javascript src=jquery.js>
7 </script>
8 <script runat=server-proxy>
9 function getTable(rows){
10 var a = new Array();
11 a[0] = rows;
12 var conn = new Jaxer.DB.SQLite.Connection({
13 PATH: "E:\\test\\sqlite\\world.db3"
14 });
15 var rs = conn.execute("Select * from [City] where id <= ?", a);
16 return (rs.toHTML());
17 }
18 </script>
19 <script language=JavaScript>
20 $(function(){
21 $("#button1").click(function(){
22 $("#div1").append(getTable(1000));
23 });
24 $("#button2").click(function(){
25 getTableAsync(setdata, 1000)
26 });
27 $("#button3").click(function(){
28 $("#div1").html("");
29 });
30 });
31 function setdata(table){
32 $("#div1").html(table);
33 }
34
35 </script>
36 </head>
37 <body>
38 <input type=button id=button1 value=同步方法><input type=button id=button2 value=异步方法><input type=button id=button3 value=清除>
39 <div id=div1>
40 </div>
41 </body>
42</html>
43
2<html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
5 <title>Untitled Document</title>
6 <script language=javascript src=jquery.js>
7 </script>
8 <script runat=server-proxy>
9 function getTable(rows){
10 var a = new Array();
11 a[0] = rows;
12 var conn = new Jaxer.DB.SQLite.Connection({
13 PATH: "E:\\test\\sqlite\\world.db3"
14 });
15 var rs = conn.execute("Select * from [City] where id <= ?", a);
16 return (rs.toHTML());
17 }
18 </script>
19 <script language=JavaScript>
20 $(function(){
21 $("#button1").click(function(){
22 $("#div1").append(getTable(1000));
23 });
24 $("#button2").click(function(){
25 getTableAsync(setdata, 1000)
26 });
27 $("#button3").click(function(){
28 $("#div1").html("");
29 });
30 });
31 function setdata(table){
32 $("#div1").html(table);
33 }
34
35 </script>
36 </head>
37 <body>
38 <input type=button id=button1 value=同步方法><input type=button id=button2 value=异步方法><input type=button id=button3 value=清除>
39 <div id=div1>
40 </div>
41 </body>
42</html>
43
运行截图:
详细的就不说了,关键是<script runat=server-proxy>...</script>这部分,在客户端生成了这么两个方法:
function getTable() {return Jaxer.remote("getTable", arguments);}
function getTableAsync(callback) {return Jaxer.remote("getTable", arguments, callback);}
function getTableAsync(callback) {return Jaxer.remote("getTable", arguments, callback);}
这样在浏览器端的js就可以直接使用了。
虽然还有很多问题,最讨厌的就是生成的页面上有全部的clientFramework的源代码,虽然是压缩的,但看着还是很麻烦,估计以后的版本这个是首先要修改的。
上面的例子可以到这里http://download.csdn.net/user/luq885/直接下载,就是页面和一个jquery.js。
再说一下用JAXER服务器运行的方法,到http://aptana.com/jaxer/download这里下载一个JAXER的服务器端,附带着Apache服务器,直接解压后运行StartServers.bat就可以启动,把上面那个页面和jquery.js放到public文件夹下,访问http://127.0.0.1:8081/test2.html就可以看到效果。