分享

Appweb与ejscript工作模式

 erran 2015-11-17

appweb3内核

Appweb3的内核使用c语言编写,而不是像appweb2中使用c++,这样做增加了对某些平台的可移植性。The ejscript web 框架代替了Embedded Sever Page.

ejs和esp对比

appwebejs是作为esp的升级版,esp是一个小型的javascript的子集;而ejs支持这些功能的同时还具有更加强大的功能。对应ejsesp的比较:

1、ejs完全支持ECMAScript-262语言,而不是简单的javascript子集。

2、对应VM设计具有更高的性能。

3、独立的javascript编译器。

4、高速的预编译器。

5、支持MVC框架

6、支持完整的sqlite数据库

7、支持Ajax

8、扩展类库

9、网页模板引擎

10、appweb里面集成了扩展完整的HTTP服务

11、支持E4X XML解析器

12、更高的性能

13、更小的资源占用

14、对于大型的javascript应用程序更好的支持。

对于请求与响应:

appweb3中定制对象和属性,使用一个http对象来存储关于服务的信息。

1Reques对象存储关于请求的信息;

2Response对象用来存储关于响应的信息;

3、对应表单的处理将appweb2form对象改名为params对象;

Eg

  1. if (request.method == "POST") {
  2.     var ok = params["ok"]
  3.     if (ok == "Cancel") {
  4.         redirect(request.referrer)
  5.     } else if (ok == "New Session") {
  6.         destroySession()
  7.         createSession(120)
  8.     } else if (ok == "Ok") {
  9.         session["name"] = params.name
  10.         session["address"] = params.address
  11.     }
  12. }
  13. write("Using session: " + request.sessionID)

关于appweb使用ejs

注释:appweb中包含了ejscript命令行,为了和安装的ejscript其他版本命令行不冲突,将其进行了重命名。传统的Ejscript命令行以ejs作为前缀。在appweb里面使用ajs作为前缀。Eg:在appweb里面应用程序产生器为ajs,而Ejscript里面叫做ejs

主要的Ejscript框架组成:

Web Server Interface-框架处理程序;

Application Generator-应用程序产生器;

Web Page Parser-web页面解析器;

Framework Class-MVC,Http Request and Ajax view classes

Ejscript compiler - Creates and caches application byte code

Ejscript Virtual Machine - executes the byte code and formats the response;

 

数据接收与处理

网络接口在数据传入后,将表单数据转换成合适的格式,便于Ejscript应用程序处理。传统上,表单数据传递到web应用程序的环境变量。这种格式显得比较笨拙,不能很好的映射到一个面向对象的语言。Egjavascript

Ejscript使用params[]代替了环境变量采集和透明的将表单数据转换成一个嵌套集合的对象。

    网络接口创建请求,响应和主机存储状态等反应请求状态的对象。避免了使用虚拟的创建方式,使得应用程序访问请求状态时产生最小的开销。

解释器主机:

    一个高性能的web服务器必须接受传入的请求,路由到适当的请求处理程序,初始化处理程序,包括必要的解释,响应数据的收集传输到客户端,然后传入处理程序。这些必须做很多次,理想的是每秒数百次的动态内容。

    为了有效的做到这一点,Ejscript预创建一个主解释器实例。当传入的请求到达时,网路接口快速克隆这个主解释实例,致力于创建一个轻量级的副本。克隆利用系统类型和网络的主框架,所有需要最小的初始化工作,然后就可以开始提供web请求。

    克隆解释器并非完全隔离。共享控制会话状态通过session[]application[]对象。

ModelViewController Framework:模型-视图-控制器框架;

该模型包括数据库应用程序的状态管理。控制器管理应用程序,响应的输入和效用响应的视图来生成用户界面。

 

应用程序产生器

Web框架支持两种ejscript web应用。

1、简单独立的web页面(这个就是我们经常使用的);

2、ejscript MVC应用;

独立网页使用嵌入式Ejscript的代码,但不使用完整的的模型视图Controlller范例,也没有使用应用程序生成。他们通常使用“Post-Back”模式的表单数据回发到同一页上。没有控制器,模型和视图布局。

MVC应用变得越来越强大,它们拥有数据库模型,控制器,视图和布局,使用应用程序生成器ajsweb就可以开始运行。这样会创建一个应用程序目录,并填入必要的目录,配置文件和申请存根。

步骤:1ajsweb –v generate app mytestName //mytestName就是我们创建的目录名称。

         2ajsweb –v compile

 

Web Page Parser:网页解析器

网页分析器是一个模板引擎和嵌入的脚本解析器。理解并处理嵌入的javascript和展开视图内容页的布局命令,并创建一个符合的表示整个页面。

网页解析器读取页面视图页面包含的嵌入ejscript代码(扩展名为”*.ejs”)。它融合与布局的页面的内容页,并将它转换为一个纯粹的ejscript程序(通过.es扩展)最终生成一个用户开到的页面。

网页分析器支持下面的网页指令。这些可以用在布局或者内容页面:

<%=ejscript %>;该指令将计算表达式的值

@@variable;作为<%=%>的一种快捷访问方式

<%ejscript code%>指令将调用ejscript code

<% include “filename”%>包含头文件进来

<%@ layout “file”%>指定布局页面。

关于模块的产生

  1. MprModule *maSimpleModuleInit(MaHttp *http)
  2. {
  3.     MprModule *module;
  4.     module = mprCreateModule(http, "simpleHandler", "1.0.0",
  5.         NULL, NULL, NULL);
  6.     if (module == 0) {
  7.         return 0;
  8.     }
  9.     return module;
  10. }

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多