设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

搜索
查看: 13815|回复: 27

【原创】Silverna轻量级前端应用框架

[复制链接]
发表于 2006-1-6 23:27:09 | 显示全部楼层 |阅读模式
一直以来,没有能在无忧拿出一些自己创作的成形的东西,而最近又比较忙,上站的次数也明显少了...
这样下去自己也过意不去,所以这一次试着拿一些自己整理的简单的东西出来...尽管依然是不够“成形”的:P

这些七拼八凑的代码一半是自己写的,另一些是同事们的创作,剩下的则是其他大牛们的东东...
我把这些内容整理出了一个框架,并且在项目实际中应用。

Silverna是一个轻量级的前端应用框架
说它是“框架”是因为它实现了Web应用设计中的OO和消息驱动模型,并包含了几种常用的“模式”
说它是“轻量级”的,一个方面强调的是Silverna并不从编码上支持和实现OO,即它没有参照同类型的js框架那样实现任何类似于jsvm之类的东东,而是利用js本身的特性用“文法规则”来规约和定义OO机制,包括消息模型。也就是说它完全是一个js语义的子集。另一方面,则是强调Silverna在Web应用的服务程序方面实现了异步存取数据的接口,但是同Ajax框架相比,它略去了XML数据交换的标准模式(尽管它依然实现了简单的XML数据接口<BaseCBO>-<beanlist>)
说它是一种“前端”模型是指它不依赖于服务器端的实现,仅仅依赖于服务器端能够提供的目标数据。这种设计的独立性使得它与后台的实现无关。
当然,Silverna能够和后台进行非常方便稳定的结合和数据交互,比如在月儿参加的实际项目中,我们就是以Silverna同Struts-ejb-hibernate框架结合,并且完全实现了前台和后台数据的交换,良好地支持各种复杂的业务对象模型,而且支持各种类型对象的自由转换。

Silverna还有一个显著的特点是它在前台也实现了业务数据对象和显示的分离,也就是通过BaseCBO接口和Dom之间的数据绑定(databind)和更新(update)从而将对数据内容的操作和对数据表示形式的操作完全分开。同时在前台Silverna能够完全实现html客户端代码同js代码的分离。

说了这么多,如果大家对Silverna有兴趣的话,可以实际体验一下。

部分相关的说明文档可以在doc文件夹下找到,但是或许版本和代码的版本不太一致(没办法工作太忙,文档一直没时间更新)
简单的例子可以参看samples文件夹下的内容,但是都是一些非常简单的应用,其中samples/Framwork下的两个例子大致展示了Silverna框架的全貌。其它都是部分功能的范例。

非常遗憾月儿不能提供复杂的应用尤其是和java结合的web应用范例(事实上月儿做了一些,但是涉及公司的利益,所以不便提供),而这些东西才是真正能够展现Silverna特性的。

也许以后有机会可以完善框架和补充复杂用例,不过这些东西有兴趣的朋友可以自己研究。在src下月儿提供了完整的框架代码。

第一次独立设计这样类似于框架的东西,月儿也没有什么经验,设计和编码上的问题在所难免,希望各位大牛不吝赐教,谢谢~ ^^

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入无忧

x
发表于 2006-1-6 23:43:31 | 显示全部楼层
都是高科技的好东西,顶

如果MessageBox能改为用层的形式就更好了,现在的有点停顿感

[ 本帖由 doomchan 最后编辑于 2006-1-6 23:46 ]
发表于 2006-1-7 00:06:54 | 显示全部楼层
这个只有顶的份了。

不过我觉得与其说是个框架,不如说更像JavaScript类库,比较适合。

灵活好用,非常棒!
发表于 2006-1-7 00:17:36 | 显示全部楼层
好东西,不过,editbox有bug,按退格键不动的时候就有问题了
发表于 2006-1-7 09:37:36 | 显示全部楼层
好東東呀,一個字----頂
 楼主| 发表于 2006-1-7 17:10:03 | 显示全部楼层
引用内容由 linuxpluto 发表于 2006-1-7 12:17 AM
好东西,不过,editbox有bug,按退格键不动的时候就有问题了


这个...倒没注意...=.=

不过editbox那个还漏了一个引用文件...

大概要加一个script...src="../../src/core/util/Text.js"... :P
发表于 2006-1-8 09:25:05 | 显示全部楼层
对于Date.praseDate=function(){
...........
}
给Date类指定方法让其成为静态类真的不太好理解。
Date.praseDate=function(){}   //Date变成静态,唯一。
Date.prototype.praseDate=function(){}   //扩展类的方法,使用于实例。
再次想想Math静态类了。
 楼主| 发表于 2006-1-8 10:14:24 | 显示全部楼层
引用内容由 逍遥云 发表于 2006-1-8 09:25 AM
对于Date.praseDate=function(){
...........
}
给Date类指定方法让其成为静态类真的不太好理解。
Date.praseDate=function(){}   //Date变成静态,唯一。
Date.prototype.praseDate=function(){}   //扩展类 ...



这个理解起来并不难....

主要是看作用对象的问题...

因为parse方法的作用对象是非Date对象,输出才是Date对象...
实际上这里的“模式”是Converter,所以才是静态类
实际上.Net中正是这样实现的...

即使要用扩展来实现,也不应当是扩展Date对象,而是扩展String对象
例如:
String.prototype.parseInt = function(){...}
String.prototype.parseFloat = function(){...}
String.prototype.parseDate = function(){...}
......
发表于 2006-1-8 10:37:10 | 显示全部楼层
好东东,狂顶
发表于 2006-1-8 14:23:14 | 显示全部楼层
下载研究学习中...
发表于 2006-1-8 14:36:06 | 显示全部楼层
常规情况我一般是给Math静态类添加方法,而对于非静态类却不敢那样添加,不好理解了,不知那样添加后倒底是给实例呢还是给类
  1. <Script>
  2. var copySin=Math.sin;
  3. Math.sin=function(angle){
  4. return copySin(angle*Math.PI/180);
  5. }
  6. alert(Math.sin(70));
  7. </Script>
复制代码

对于Math.sin的方法,先拷贝,再覆盖
发表于 2006-1-8 14:39:51 | 显示全部楼层
听着月影自称“月儿”,总觉得像女孩儿,刚刚看了看资料,果然:),不好意思,以前一直都认为月影是男的。
 楼主| 发表于 2006-1-8 17:20:21 | 显示全部楼层
引用内容由 逍遥云 发表于 2006-1-8 02:36 PM
常规情况我一般是给Math静态类添加方法,而对于非静态类却不敢那样添加,不好理解了,不知那样添加后倒底是给实例呢还是给类
[code]<Script>
var copySin=Math.sin;
Math.sin=function(angle){
return  ...


当然是给类...
例如,Date.parseDate()期望的输入是字符串,因此不能把parseDate给Date对象

Date.parseDate = function(str)
{
    ......
}
var mydate = Date.parseDate("2006-01-01");
//这样的用法比较自然...

下面是另外一种用法:

String.prototype.parseDate = function(str)
{
    ......
}

var mystr = "2006-01-01";
mystr.parseDate();
//这样用也马马虎虎

还有一种用法:

String.parseDate = function(str)
{
    ......
}
var mydate = String.parseDate("2006-01-01");

//这是Java推荐的用法,和第一种的区别是Converter的提供者是原始对象而不是目标对象

个人比较习惯第1种和第3种用法
发表于 2006-1-8 19:07:00 | 显示全部楼层
这个知道,只是没用那样用过,有点疑惑。呵呵,学习学习了。
发表于 2006-1-8 19:31:38 | 显示全部楼层

发表于 2006-1-8 21:31:37 | 显示全部楼层

向月儿学习ing

果然高手,这么高深莫测的技术也会,佩服

有个建议,我发现你讲的那些理论,完全是照开发项目的步骤讲的,我没开发过,大都不懂,能否举些生动有趣的例子,让我们这些菜鸟也DIY一下
 楼主| 发表于 2006-1-8 21:50:32 | 显示全部楼层
引用内容由 编程浪子 发表于 2006-1-8 09:31 PM
果然高手,这么高深莫测的技术也会,佩服

有个建议,我发现你讲的那些理论,完全是照开发项目的步骤讲的,我没开发过,大都不懂,能否举些生动有趣的例子,让我们这些菜鸟也DIY一下



以后有时间我会争取写一些复杂的Demo的...^^
发表于 2006-1-8 22:10:45 | 显示全部楼层
希望看到 Attribute 的应用, 对这个很感兴趣:)
 楼主| 发表于 2006-1-8 22:13:59 | 显示全部楼层
引用内容由 Chrothra 发表于 2006-1-8 10:10 PM
希望看到 Attribute 的应用, 对这个很感兴趣:)



客户端输入校验Validator的Demo中有Attribute应用的...你可以参考一下那个...
有不明白的地方可以问我... :)
发表于 2006-1-9 12:31:21 | 显示全部楼层
女孩子也有这样的思维能力,第一次见到。
您需要登录后才可以回帖 登录 | 加入无忧

本版积分规则

小黑屋|手机版|Archiver|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445   鄂公网安备 42011102000433号

GMT+8, 2017-11-18 03:26 , Processed in 0.111922 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表