Appweb程序开发架构分析

1041阅读 0评论2012-12-26 行健天下ing
分类:

整体框架:

总体分为三步:
界面部分:采用“不唐突”原则,即将内容、行为和样式独立开来,在body里面尽量不存在js与css代码,这些代码放在head里面去进行,并收集用户信息;
控制部分:也就是服务器端运行的脚本,暂定选择ejs;分开之后界面部分不再关心服务器端采用的是什么语言进行开发,通过jquery控制ajax的方法这样向浏览器传送的就不需要是整个网页,取而代之的仅是数据。
模块部分:也就是定制自己的appweb模块,这些模块调用api接口,并绑定成ejs所能调用本地api,应为ejs本身不能直接调用c接口。

eg:该程序实现做应用界面最简单的一个例子,类似“hello world”;一个加法计算器(采用js这种计算完全可以再浏览器端完成,这里为了调用module接口上传到服务器进行运算)及选择获取ip和mac;
界面如下:

界面部分代码:$.ajax发起异步数据请求,由于没有任何界面渲染没有涉及到css内容;
行为js代码:

  1. $(document).ready(function(){
  2.     $("#c_eq").click(function(){
  3.         var c_add3 = $("#c_add1").val();
  4.         var c_add4 = $("#c_add2").val();
  5.         var c_sum = parseInt(c_add3) + parseInt(c_add4);
  6.         $("#c_sum").val(c_sum);
  7.     });
  8.     $("#s_eq").click(function(){
  9.         var s_add3 = $("#s_add1").val();
  10.         var s_add4 = $("#s_add2").val();
  11.         var dataString = 's_add3='+ s_add3 + '&s_add4=' + s_add4;
  12.         $.ajax({
  13.             type:"POST",
  14.             url:"add.ejs",
  15.             data:dataString,
  16.             success:function(msg){
  17.             $("#s_sum").val(msg);
  18.             }
  19.         });
  20.     });
  21.      $("input[name='get_addr']").bind("click", function () {
  22.         var checkedValue = $(this).val();
  23.         var value = 'addr='+checkedValue;
  24.         $.ajax({
  25.             type:"POST",
  26.             url:"add.ejs",
  27.             data:value,
  28.             success:function(msg){
  29.             $("#display").html("");
  30.             $("#display").html(msg);
  31.             }
  32.         });
  33.     });
  34. });
内容html代码:

点击(此处)折叠或打开

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
  2. <html xmlns="">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>Add</title>
  6. <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  7. </head>
  8. <body>
  9. <div>
  10. <p>Client implementation:</p>
  11. <input type="text" id="c_add1" />
  12. +
  13. <input type="text" id="c_add2" />
  14. <button type="button" id="c_eq">=</button>
  15. <input type="text" id="c_sum" />
  16. </div>
  17. <div id="s">
  18. <p>Server implementation:</p>
  19. <input name="s_addr1" type="text" id="s_add1" />
  20. +
  21. <input type="text" name="s_addr2" id="s_add2" />
  22. <button type="button" id="s_eq">=</button>
  23. <input type="text" id="s_sum" />
  24. </div>
  25. <div>
  26. <p>
  27. <input type="radio" name="get_addr" value="1" />Ip
  28. <input type="radio" name="get_addr" value="2"/>Mac
  29. </div>
  30. <div id="display">your choice will display here!</div>
  31. </body>
  32. </html>
控制端ejs代码:

  1. <%
  2.     if( params.s_add3 != null && params.s_add4 !=null){
  3.         var add1 = Number(params.s_add3);
  4.         var add2 = Number(params.s_add4);
  5.         get_add(add1,add2);
  6.         }
  7.     if( params.addr != null){
  8.         var value = Number(params.addr);
  9.         if(value == 1)get_ip();
  10.         else if(value == 2) get_mac();
  11.     }
  12. %>

上一篇:Linux 下通过脚本实现远程自动备份
下一篇:linux内核的加载地址和入口地址