`
bagheera
  • 浏览: 2384 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

把JS代码和Ext框架运行在服务器端?

阅读更多

服务器端跑javascript ?还记得asp的这个<script language=javascript runat=server>吗~
哈哈现在出来一种新的武器。。那就是JAVA编辑器厂商 Aptana 释放出来的Jaxer, 一个新的服务端运行的平台。

下面用Ext在服务器端运行一下,体验一下你熟悉的js的强大功能吧。

Jaxer促进了服务器端和客户端的紧密结合,你可以包含服务器端的js,也可以包含客户端的js,也可以2者都包含。服务器充当一个中间代理,使得可以良好的处理同步和异步的通信。Jaxer现在提供了一个文本的数据库甚至是socket,这使它看上去更像是真证的服务器端运行平台。你可以及时关注他的官网 Aptana Jaxer,及时了解最近的服务器端运行JavaScript的技术。

利用Jaxer存储数据并用Ext Grid显示出来

点这里下载全部示例源代码如果你想自己安装个Jaxer平台进行测试,第一个示例展示了一个非常简单的Ext.data.Store以及Jaxer server存储的代码。

JaxerStoreServer.js 包含了简单的服务器端的函数,用来创建和执行一个查询。前提是建立在你已经配置好了Jaxer的config.js指向一个数据库。

function ExtJaxerProxy(params) {
   var fld = [], q = [];
   var fields = params.fields;
   for (var i = 0; i < fields.length; i++) {
       if (typeof fields[i] == 'string') {
           fld.push(fields[i]);
           q.push('?');
       } else if (typeof fields[i] == 'object') {
           fld.push(fields[i].name);
           q.push('?');
       }
   }
 
   var qp = fld;
 
   var query = 'SELECT ' + fld.join(',') + ' FROM ' + params.table;
   if (params.sortInfo) {
       query += ' ORDER BY ' + params.sortInfo.sort + ' '
               + params.sortInfo.dir;
       qp.push(params.sortInfo.sort);
       qp.push(params.sortInfo.dir);
   }
   if (params.start && params.limit) {
       query += ' START ' + params.start + ' LIMIT ' + params.limit;
       qp.push(params.start);
       qp.push(params.limit);
   }
   return Jaxer.DB.execute(query);
}

JaxerStore.js 包含了简单的Ext data链接到Jaxer,并存储数据。

Ext.data.JaxerStore = function(config) {
   var params = Ext.apply({
       fields : config.fields,
       table : config.table
   }, config.baseParams || {});
 
   Ext.data.JaxerStore.superclass.constructor.call(this, 
       Ext.applyIf(config, {
       reader : new Ext.data.JsonReader(Ext.apply({
           root : 'rows'
       }, config.readerConfig), config.fields)
   }));
   ExtJaxerProxyAsync(this.loadData.createDelegate(this), params);
};
Ext.extend(Ext.data.JaxerStore, Ext.data.Store);

 

确保这两个文件都包含在你的网页里,Ext.JaxerStore运行在客户端,JaxerStoreServer以一个'server-proxy’运行。这里我们创建一个Jaxer存储,然后创建一个简单的Ext GridPanel并把JaxerStore数据给它。

Ext.onReady(function() {
   var store = new Ext.data.JaxerStore({
       table : 'demo',
       fields : [
           {name : 'name'},
           {name : 'phone'},
           {name : 'email'}
       ],
       readerConfig : {
           sortInfo : {
               sort : 'name',
               dir : 'asc'
           }
       }
   });
 
   // create the Grid
   var grid = new Ext.grid.GridPanel({
       store : store,
       columns : [
           {header : "Name", sortable : true, dataIndex : 'name'},
           {header : "Phone #", sortable : true, dataIndex : 'phone'},
           {header : "Email", sortable : true, dataIndex : 'email'}
       ],
       viewConfig : {
           forceFit : true
       },
       stripeRows : true,
       height : 350,
       width : 680,
       title : 'Jaxer Demo Grid',
       renderTo : Ext.getBody()
   });
});

出来效果是这样儿的。

Jaxer Grid


服务器端的EXT模板XTemplate

这个示例展示一下真实运行在服务器端的Ext代码,并展示了Ext模板的优势。为了运行这个示例,我把JS ext-base和ext-all包含方式改为了runat=”both” ,这样Ext代码就可以运行在服务器端和客户端了。Html文件包含了一个空的div,叫posts-main’ 还包含了一个表格用来支持window.onserverload = loadPosts()。loadPosts函数简单的执行查询数据,并通过Ext.XTemplate显示出来。然后XTemplate把数据给循环出来。

function loadPosts() {
   var vals = Jaxer.DB.execute('select id, title, body, perm from posts');
 
   var tpl = new Ext.XTemplate('<tpl for="rows">',
           '<div id="post-{id}" class="post">',
           '<h2><a href="/jxtest/post/{perm}">{title}</a></h2>',
           '<p class="post-body">{body:this.formatBody}</p>', '</div>',
           '</tpl>', {
               formatBody : function(val, all) {
                   if (val.length > 300) {
                       return Ext.util.Format.ellipsis(val, 300)
                               + '<a href="/jxtest/post/' + all.perm
                               + '">Read More &raquo;</a>';
                   } else {
                       return val;
                   }
               }
           });
 
   tpl.overwrite('posts-main', vals);
}

这是效果页~

Jaxer Template

总结

我们可以看到Jaxer可以使开发者减轻了劳动,轻松的部署客户端的代码到服务器端。这些示例也展示了Ext框架在服务器端的潜在应用。


下载本页提及的全部示例源代码


作者:Rich Waters
原文链接:http://extjs.com/blog/2008/06/10/extjs-and-jaxer/
翻译:Bagheera JH Ding
翻译者Email:wealding@gmail.com
译文原地址:http://hi.baidu.com/ding__/blog/item/b82a91183ad06eb14aedbc87.html

分享到:
评论

相关推荐

    ajax-ext框架

    Ajax-ext框架是一款强大的JavaScript库,专为构建富客户端应用程序而设计,它结合了Ajax技术的优势和ExtJS库的功能,提供了一种高效、可扩展的方式来实现动态和交互式的Web应用。框架的核心目标是简化Web开发,使...

    Ext框架开发文档及ext-core.js

    在实际开发中,EXT框架的这些特性使得开发者能够构建出具有专业级外观和交互体验的Web应用,同时降低了维护和扩展的难度。EXT的组件化设计使得代码结构清晰,易于理解和调试。然而,由于其组件的复杂性,学习EXT可能...

    七步实现directjngine、Ext Direct调用Java服务器端方法 directjngine官方demo精简版

    DirectJNgine与Ext Direct是两种技术,它们主要用于在Web应用程序中实现客户端(通常是JavaScript)与服务器端(通常是Java)的高效通信。本教程将通过七个步骤,介绍如何使用DirectJNgine和Ext Direct来调用Java...

    ext 精典框架( 远程系统管理框架 html版 )

    EXT框架的核心是EXT JS,它是一个开源的JavaScript库,提供了丰富的组件和布局模式,使得开发者能够快速构建出具有桌面应用般用户体验的Web应用。EXT JS的组件库包括表格、树形视图、面板、窗口、菜单、按钮等,这些...

    Ext.Net 服务器端分页 存储过程

    在这个场景中,我们关注的是"Ext.NET服务器端分页",这是一个优化用户界面性能并提高用户体验的技术。服务器端分页意味着每次只从服务器获取一部分数据,而不是一次性获取所有数据,从而减轻网络负担和服务器压力。 ...

    S2SH项目+ext 框架环境

    【S2SH项目+ext框架环境详解】 在IT行业中,S2SH项目指的是基于Struts、Spring和Hibernate三个开源框架的整合应用。这三个框架分别负责Web层、业务层和服务层的管理,形成了一个强大的Java Web开发解决方案。Struts...

    ext grid带分页(服务器端)

    在本文中,我们将深入探讨如何在EXT Grid中实现服务器端分页,这在处理大量数据时尤为关键。EXT Grid是一款强大的JavaScript组件,用于构建交互式的数据视图,而服务器端分页则是优化性能、提高用户体验的重要策略。...

    ExtJs的服务器端控件实现

    首先,服务器端控件是Web开发中的一个重要概念,它们允许开发者在服务器端处理业务逻辑和数据操作,然后将结果返回给客户端。在ExtJS中,虽然主要是前端框架,但通过Ajax技术,我们可以与各种服务器端平台(如Java, ...

    批量上传图片EXT框架

    EXT框架是一种基于JavaScript的富客户端应用开发框架,尤其在Web应用程序中被广泛使用,它提供了丰富的组件库,能够实现各种复杂的功能,包括批量上传图片。批量上传图片EXT框架是EXT框架的一个扩展,专为处理大量...

    Ext4 MVC 框架设计

    Ext4 MVC框架是一种广泛应用于Web开发的技术,它基于Ext JS库,为构建复杂、数据驱动的用户界面提供了强大的支持。MVC(Model-View-Controller)模式是软件工程中的一个设计模式,它将应用程序分为三个核心部分:...

    网上流行的js的UI设计框架ext

    标题"网上流行的js的UI设计框架ext"指出,ExtJS在Web开发社区中具有很高的流行度,特别适用于构建复杂的用户界面。作为JavaScript库,它提供了大量的组件和工具,如表格、网格、窗体、菜单等,使得开发者可以轻松...

    ext3.jar ext使用非常多

    EXT3.jar是EXT框架的一个版本,它包含EXT库的Java版本,通常用于Java Web应用程序,使得开发者能够利用EXT的组件和功能在服务器端进行渲染和处理。 EXT框架的核心在于其丰富的组件库,包括数据网格、表单、窗口、...

    Ext.Net 源代码

    源代码会展示如何在服务器端定义事件处理器,并通过Ajax调用将事件传递到客户端。 3. **数据绑定**: Ext.Net支持多种数据绑定方式,如LINQ、Entity Framework等,这使得数据展示和操作更加便捷。源代码中会有相关...

    简单的EXT项目代码

    将EXT与Struts整合,可以充分利用EXT的富客户端功能和Struts的服务器端处理能力,创建出高效、响应迅速的Web应用。 在这个项目中,"Student"可能代表一个具体的例子或者模块,可能是用来展示EXT如何处理学生信息的...

    ext+ssi框架集成系统

    EXT+SSI框架集成系统的实现,旨在充分利用两者的优势,将EXT.js的前端交互性和界面设计能力与SSI的服务器端动态处理能力相结合。这通常意味着开发者可以在EXT.js构建的前端界面上利用SSI来实现部分内容的动态插入和...

    Ext4+JSON+Servlet+Tree构建Web应用框架

    这个框架的核心组件包括Ext4 JavaScript库、JSON数据交换格式、Servlet或Struts2作为后端控制器以及Ext JS中的两种UI组件:Tree Panel和Tab Panel。以下将详细介绍这些技术及其在Web应用中的作用。 1. Ext4:Ext JS...

    struts2框架 spring框架Ext框架 Mybatis框架 mysql 增删改查

    Ext框架,特别是Ext JS,是一个用于构建富客户端Web应用的JavaScript库,提供了丰富的组件库和数据绑定机制,能够构建出复杂的用户界面。 Mybatis是一个轻量级的持久层框架,它简化了SQL操作,通过XML或注解配置将...

    Ext项目小框架介绍源码

    - **MVC模式**:Model-View-Controller模式是Ext JS中的一个重要概念,用于组织代码和分离关注点。模型(Model)负责数据管理,视图(View)处理用户界面,控制器(Controller)协调它们之间的交互。 - **组件系统*...

    Ext asp.net框架

    这个框架可能是为了简化开发者在ASP.NET环境中使用Ext JS进行前端交互设计和表单验证的工作。 **核心知识点:** 1. **ASP.NET**:ASP.NET是.NET Framework的一部分,它提供了构建Web应用程序的工具和框架。通过ASP...

    ext js 打包资源下载

    3. **数据绑定**:支持数据模型和数据网格,能够方便地与服务器端进行数据交换,实现动态更新和实时刷新。 4. **事件驱动**:Ext JS拥有丰富的事件系统,可以监听并响应用户的操作,实现动态交互。 5. **AJAX支持*...

Global site tag (gtag.js) - Google Analytics