该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-10-22
http://www.i-see.net/bindows/
bindows:webFX: http://webfx.eae.net bindows用javascript实现的windows框架。webFx的作者也是该项目的合作者。 我个人觉得bindows对客户端的配置要求太高,纯javascript方案把显示相关的处理全部交付给客户端的浏览器,处理的速度完全取决于客户的机器速度,在我的p4 2.4G 1GRam的机器上尚感吃力,在低配置机器上岂不会更慢? 未来几年里移动手持设备会高速发展,这样廋客户端要求服务端处理尽量多的事务。这和bindows的要求有矛盾。 dlee的项目是不是和bindows类似呢?dlee如何处理类似的矛盾呢? 另外:推荐各位学习javascript的兄弟们多看看http://webfx.eae.net/。我从他的项目上学了很多东东。 个人很崇拜Emil A Eklund,不仅因为他的技术,还因为他无私的奉献,才使得javascript后来者少走很多弯路。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-10-22
http://webfx.eae.net 确实是一个非常棒的站点。
我们现在的大量应用依赖于浏览器(主要是 IE)的脚本处理能力,在有些老机器上跑的时候确实会略显缓慢,但是目前的主流机型处理起来已经没有任何问题了。我们设计了一整套的 Web 开发框架,这套框架将随着应用的锤炼而越来越稳定。JavaScript 用的不好容易造成 IE 的崩溃,我们是靠提高代码的重用度来解决这个问题的,因为重用度越高的代码往往越稳定。 有些眼高手低的人往往凭第一眼印象就把 JavaScript 从整体解决方案中完全忽略,但是我们发现 JavaScript 作为解决方案的表示层是非常有价值的,而且通过几层 DOM 树的映射来解决表示层-逻辑层分离比起使用 MVC 要灵活得多。我们的基本思想就是浏览器-服务器间传输的应该只是数据,如何显示(呈现)由浏览器自己决定。我们的中间件很好地体现了这个思想。MVC 的学习成本也是一个重要的考虑因素。我可以毫不脸红地说我不懂 MVC,但是我们确实解决了客户需要我们解决的问题。 bindows 我还没有研究过,但是我对于这些表示层的技术非常感兴趣。界面的美观是我们非常关心的一个问题,传统的服务器端 MVC 框架例如 Struts 难以实现非常美观的界面。 |
|
返回顶楼 | |
发表时间:2003-10-22
以前我也曾经尝试过使用javacript解决数据在客户端显示的问题。使用JS的方案的确在显示的灵活性上有巨大的优势,但是IE/Mozila/Opera浏览器的兼容问题使我放弃了这个想法。如果产品的客户集中在国内可能使用这样的方案没有问题,但国外的非IE用户比国内多(他们付的钞票也比国内多很多 ;) ),这个方案就麻烦了
|
|
返回顶楼 | |
发表时间:2003-10-22
兼容性的问题 webfx 网站已经做了很好的尝试,他们对 IE 和 Mozilla 中 JavaScript 的差异做了很好的封装。
其实我们的 Web 开发框架移植到 Mozilla 上并不是非常困难。只是目前没有明显的经济利益刺激我们做这件事。 IE 与 Mozilla 的主要差别在于: 1、对 HTML DOM 规范的支持,IE 除了支持标准的 API,还提供了 document.all() 这个便于使用的方法。但是这个方法完全可以使用标准的 getElementById() 来替代。 2、对 XML DOM,IE 提供了 selectSingleNode() 和 selectNodes() 两个便于使用的方法,而 Mozilla 使用标准的 evaluate() 方法。解决的方法是在 Mozilla 中模拟 IE 的行为。IE 中的 XML DOM 是作为 ActiveX 插件的形式(打补丁的方式)提供的,Mozilla 则本身就支持 XML DOM。 3、IE 支持 XML Data Island,而 Mozilla 由于对 XML 有更好的支持,所以完全不需要提供 XML Data Island 这种机制。但是 Mozilla 可以模拟 IE 的 XML Data Island。 http://www.mozilla.org/xmlextras/xmldataislands/ 4、对于 XMLHTTP 的支持,IE 使用 ActiveX 插件实现,Mozilla 则使用 XPCOM 组件实现。但是两者的接口是相同的。 5、访问本地文件系统的方法不同,IE 使用 ActiveX 插件,Mozilla 则使用 XPCOM 组件。 6、对于事件处理的机制完全不同,IE 采用“事件传播”(“事件起泡”)方式,Mozilla 采用“事件捕捉”方式。 问题 1、2、3、4、5 都可以通过封装的方式轻易解决,但是问题 6 要很好地封装就有些难度了。 Mozilla 中的 selectSingleNode() 和 selectNodes(): if(isMozilla); { XMLDocument.prototype.selectSingleNode = function(tagname); { var result = this.evaluate(tagname, this, null, 0, null);; return result.iterateNext();; } //定义一个新的类以兼容 IE 中 selectNodes(); 的返回类型。 function __XMLNodes(result); { this.length = 0; this.pointer = 0; this.array = new Array();; var i = 0; while((this.array[i]=result.iterateNext(););!=null); i++; this.length = this.array.length; } XMLNodes.prototype.nextNode = function(); { this.pointer++; return this.array[pointer-1]; } XMLNodes.prototype.reset = function(); { this.pointer = 0; } XMLDocument.prototype.selectNodes = function(tagname); { var result = this.evaluate(tagname, this, null, 0, null);; var xns = new __XMLNodes(result);; return xns; } } |
|
返回顶楼 | |
发表时间:2003-10-22
谢dlee指教!对js方案还有二个疑惑:
1. 在jsp/serverlet模式下,客户端的数据是服务端处理完成的,原始数据在服务端处理为显示数据,客户也只看到该看到的数据,如果是把所有数据交给js处理,把数据结构暴露给客户,会不会产生安全上的隐患? 2. 客户可以下载到所有的js的原代码,从商业利益上考虑好像有问题哦 (opensource的funs可能会扔臭鸡蛋打我了......) |
|
返回顶楼 | |
发表时间:2003-10-22
问题 1:
我们有一套完备的安全机制来验证用户的身份,基本上杜绝了用户身份伪装的可能性。传给用户的只是要在页面上显示的数据(这些数据本来就是要传给浏览器的),显示方式由浏览器决定。这些数据都是在服务器端以一种便于显示的方式处理过的,中间的处理过程对浏览器端是完全透明,并不会暴露中间件的实现细节和数据库结构。 问题 2: 我们客户端的代码(Web 开发框架)是经过了加密的,当然这只是一种防君子不防小人的做法,但是对于防止泄密已经比较有效了。 我们系统中最复杂的处理都是在服务器端由中间件做的。如果别人只得到了我们客户端的代码,没有中间件的代码他也是做不了什么事情的。 软件企业的泄密大多是在内部发生的。我们采取的措施是加强对员工的教育,还有制定保密规定,签署保密协议等法律手段。我们的代码对所有的开发人员都是公开的。我们并不想限制他们的访问权限,虽然 CVS 完全可以做到这一点。我们尊重开发人员的个性,并为他们不断创造更好的成长环境,可以说是事业留人吧。所以我们这里泄密的可能性是比较小的。在我看来泄密可能性最大的是那种劳资双方关系非常紧张(势成水火)的公司,上海不少的软件公司都属于此类。 |
|
返回顶楼 | |
发表时间:2003-10-29
这样的方案对显示来说,确实是有最大的灵活性,可能会有的问题就是不同的客户端的兼容性问题,对于大多数项目来说是没有问题的,我想已经够了最好是dlee兄台能show出一个demo什么的来看看,我和你不熟,也不好找你要代码,最好是你们的产品的demo什么的,能在网上某处展示一下,好让我们瞻仰一下下,呵呵
|
|
返回顶楼 | |
发表时间:2003-11-10
这个东西我用来写了一点东西,效果还可以,不过太难写了:(。
不知道是不是我水平不够。 |
|
返回顶楼 | |
发表时间:2003-12-01
jacktheripper 写道 我在html页面上嵌入的数据岛中发现了<button type="insert">这样的tag,很想知道这样的页面和服务器上的助手类,怎么交互的,他们之间怎样传递数据。
dlee,能不能给我大致解说一下,或者如果你没有时间,给我推荐一个好的资源站也好。因为我在google上查询的都是些及其简单的介绍性文档,帮助不大。 我是主张多使用 JavaScript 的,当然这是由我们框架的体系结构决定的。JavaScript 并不象某些人想象的那么脆弱,用的多一点 IE 就会死掉。IE 虽然很烂,但也不至于如此,大部分情况下还是写 JavaScript 的人本身的原因造成的。 XML 数据岛中可以保存任何格式正确的 XML 数据,所以你可以自定义任何种类的 tag。与后台的交互可以通过将数据绑定到 form 表单中的控件提交给后台或者通过 XMLHTTP 接口发给后台。使用的都是 HTTP 协议。所不同的是通过 XMLHTTP 接口接收到的数据已经是一个 XML DOM 树了,可以使用标准的 XML DOM API 来访问。 好的资源站楼主不是已经贴出来了吗? |
|
返回顶楼 | |
发表时间:2003-12-03
:( 楼主介绍的网站似乎现在都访问不了了,不知是什么原因造成的!
个人觉得js的功能相当强大,如果表示层用js做好数据验证的话,业务处理将会变得更加容易,但兼容性的确是个问题,而且有很多客户禁用了脚本,我想知道这有什么好的方法来解决呢? |
|
返回顶楼 | |