B/S项目中的RIA:YUI-ext和Flex孰优孰劣?

Winget安装失败:深入解析InternetOpenUrl()错误0x80072efd的根源与修复 本文深入解析了使用Winget时遇到的InternetOpenUrl()错误0x80072efd。该错误通常源于DNS解析失败、网络代理配置不当或系统安全策略冲突,导致无法连接软件源。文章提供了从刷新DNS、修改Hosts文件到配置代理等一套完整的诊断与修复方案,帮助开发者快速解决安装障碍,恢复Winget的正常使用。 阅读详情
2007年新年刚过,又收到了一个B/S项目的任务,需求文档写了6页纸,时间却只有一个月。项目说起来不大,但同大多数的B/S项目一样,麻雀虽小,五脏俱全。
 
和以往一样,项目的框架问题再一次摆到面前。在上一个项目中,UI界面采用的是xslt+xml,通讯方式则全盘采用的是Ajax。为此自己专门写了一个ajax的库,用来和服务器通讯并结合xslt动态构造客户端的界面。由于整个项目过多的依赖于Ajax,造成了客户端的js脚本过于复杂,把原本很多应该由业务逻辑完成的功能,也全部转移到了View层来解决。现在看来,这是一个很糟糕的设计方案。
 
前些日子发现了DWR框架,立即如获至宝。DWR的设计思路优雅的利用Javascript对象来调用后台的java对象。这样一来,通讯的难题解决了,UI的设计被独立出来:固然可以同上一个项目一样,继续采用xslt+xml的方案,但这个方案依然要写大量的HTML代码,依然要自定义大量的CSS风格,界面的设计问题,如同鸡肋,令人无奈。
 
于是继续寻找,研究了一些比较流行的UI框架,包括:Yahoo-UI、Google Web Kit。。。Yahoo-UI总体不错,但只是一个粗结构的框架,所有的UI必须经过包装之后才可以使用。GWT则让人有点晕,完全通过java来构造客户端界面,然后编译成静态的脚本,似乎很先进,但不合咱的胃口。最后发现了YUI-Ext。
 
YUI-ext是对Yahoo UI的封装。对YUI-Ext的兴趣,完全来源于对其演示界面的惊叹。利用它做出来的B/S界面,完全可以同C/S媲美。YUI-Ext也提供了对Ajax的封装,许多组件实现了对数据源的支持,例如动态的布局,可编辑的表格控件,动态加载的Tree控件、动态拖拽效果等等。1.0 beta版开始同jquery合作,推出基于jQuery的Ext 1.0,提供了更多有趣的功能。
 
YUI-Ext的缺点也很明显:
1、太过复杂,而且缺少文档。
2、整个界面的构造,完全通过手工的javascript编程来完成,缺少设计器的支持,使得很多习惯于拖拽式开发的程序员们望而却步。
3、苦涩难懂的对象构造方式,你必须深刻理解它背后的运行方式。
4、缺少清晰的MVC界限
 
基于对YUI-Ext的钻研,我又发现了Flex 2.0—Adobe公司推出的基于Flash的全新B/S设计概念。记得年初时,《程序员》杂志曾经大篇幅的介绍过Flex技术,当时也只是走马观花,并没有引起太多的重视。现在突然重新的审视这项新技术,突然有一种相见恨晚的感觉。
 
Flex的整体思路,完全超越了Ajax的思想。其基于MXML的界面设计,非常类似于微软.net 3.0中提出的Windows Presentation Foundation (WPF)概念。Flex2.0中的AS 3.0,加入了更多的OO思想,使得其用起来更像java。而界面方面,在充分利用了Flash原有技术的优势,使得多种转换效果更加具有震撼力。Flex经过编译后,只有一个简单的SWF文件,使得项目的部署更加的方便。
 
Flex提供了强大的设计器支持,其最新的Flex Builder2,完全基于Eclipse项目,提供了代码动态提示,所见即所得的拖拽式设计方式,把界面的设计变得更加轻松。
 
更加值得称赞的是Flex中组件同数据源绑定的方式。后台数据既可以以XML的方式提供,也可以通过WebServices和远端对象调用。这种数据绑定的方式非常的先进,再加上结合AS中丰富的集合类型的绑定,数据的呈现几乎不需要用户写一行代码。
 
当然,Flex也有一些局限。例如不支持内嵌的网页显示。目前在互联网上已经有了比较“优雅”的解决方案: http://www.bitscn.com/school/Flash/skill/200609/59547.html,虽然有些别扭,但至少在用户看来几乎没有什么区别。
 
无论是YUI-Ext还是Flex,都给我们的B/S项目提供了可选的架构方案。二者各有所长,随着项目的不同,两者的优劣也各不相同。例如,同YUI-Ext相比,Flex中的Tree并不支持动态的加载数据,当然这可以通过AS编程来得到解决。同样,YUI-Ext如果能推出自己的设计器,简化复杂的JS脚本的开发,则将更加的完美。
innovus:addRepeaterByRule用法 我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?addRepeaterByRule不管transition/timing violation,只根据约束的length/cap/fanout等等去给net 插buffer。 阅读详情

相关推荐

SPSS因子分析实战:从数据清洗到结果解读的完整流程

本文提供了一份详尽的SPSS因子分析实战指南,涵盖从数据清洗、适用性检验(KMO与巴特利特检验)、公因子提取、因子旋转到结果解读与报告撰写的完整流程。通过具体案例,手把手教你如何利用SPSS进行探索性因子分析,实现数据降维并提炼核心公共因子,适用于市场研究、心理学等多变量数据分析场景。

weixin_29055699的博客 329

请问ext和flex的优缺点?

主要是从美观,性能,扩展性,维护性,学习曲线上面来看。 我先说说我的看法, 美观:flex占优势 性能:这个,我没做过复杂的应用,小项目感觉差不多,请在复杂项目上的朋友帮忙指正 扩展性:flex方便一些,ext要写个proxy太麻烦了,需要相当的js功夫 维护性:这个,我觉得flex高一些,毕竟是为前段量身定做的。 学习曲线:个人觉得差不多,特别是ext很忽悠,学起来绝对没有想象的...

不吃鱼的猫 492

grafana使用方法

1、点击仪表盘2、新建仪表盘3、选择数据源4、选择查询的条件5、美化。

2403_87359664的博客 323

AJAX应用开发总结

1.为什么要AJAX(RIA)?         这个理由太多了,我仅从系统结构模型分析下,以2000年为分水岭吧,2K年后火起的是B/s结构,相比较与c/s结构的优劣,列表如下: B/SC/S缺点优点优点缺点客户端要安装 用户界面人性化免安装、免维护 界面观感差(点一下刷一下)不便统一升级升级扩展方便安全性差(程序在客户机上)便于进行统一权限管理代码相对藕合性强;开发效率低MVC的模式简洁;便于...

蓝杰 352

中孚保密检查系统彻底卸载指南:绕过口令与清除内核残留

中孚保密检查系统是深度集成于Windows内核的合规管控软件,其卸载涉及用户态口令校验、内核态服务引擎与Ring 0级驱动自保三重机制。理解其基于SHA-256哈希的本地口令验证原理和zfsysflt.sys过滤驱动的加载逻辑,是实现无残留清理的技术前提。该系统具备高权限驻留特性,常规卸载工具无法触达驱动与服务层,易引发蓝屏、启动缓慢及新安全软件冲突等工程问题。典型应用场景包括涉密终端批量清退、安全研究环境重建及误装后紧急退出。本文聚焦‘口令绕过+手动清理’双轨方案,覆盖注册表、服务、驱动、文件与计划任务五

weixin_33508411的博客 1045

告别概念晕眩:用TC3xx SMU和TLF35584的配置实例,搞懂ASIL D功能安全落地

本文通过英飞凌TC3xx系列MCU的SMU模块与TLF35584电源管理芯片的协同配置实例,详细解析了如何实现符合ASIL D功能安全标准的刹车辅助ECU。文章涵盖SMU报警源配置、响应动作类型、TLF35584的安全状态管理,以及构建完整安全闭环的实践方法,帮助工程师将抽象的安全概念落地为具体设计方案。

weixin_30647065的博客 437

DB2的分页高效率实现总结

最近在做一个DB2的项目,遇到分页处理的设计时开始犯难。以前一直采用MySQL作为项目数据库,其中的Limit关键字非常人性化,MySQL把分页的处理逻辑封装到了数据库的核心中,使得做查询设计时,根本不用过多的考虑分页的问题。 可是DB2却把这个难题推到了我们面前。其实不止DB2如此,很多大型的数据库例如MS SQL Server也不支持分页关键字。当然,DB2中提供了RowNumbe

网络芝麻的快乐生活 8763

交叉编译Qt6.5.3(RK3568开发板)

注意,如果使用其它版本的交叉编译器的话,请确保你的交叉编译器能够支持 C++17标准。为确保后续交叉编译没问题,需要确保开发板使用的GLIBC版本不小于2.34版本。到 linaro 网站上下载交叉编译工具,我下载的是 gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu.tar.xz。安装 CMake ,最低要求3.16版本,如果要静态编译,需要3.21及以上版本。我使用的3.27版本。:指定为最后交叉编译后的Qt6.5.3库的安装目录。

m0_46309425的博客 5104

通过JNDI访问WAS中定义的资源

在近期的国库B/S项目中,需要设计大量的报表,而定义报表往往需要指定数据库连接。一般情况下,JDBC连接已经足够。但由于当前项目所使用的DB2数据库的License只允许最大5个用户并发,因此,通过JNDI定义数据库连接池成为首选方案。 在WAS环境下,只需要写出以下的代码即可以获得JNDI资源: Context ctx = new InitialContext(); DataSource ds

网络芝麻的快乐生活 3029

石油化工软件:ProII二次开发_(9).案例研究:ProII二次开发实例

我们将上述三个步骤整合到一个完整的案例中,展示如何从头到尾实现一个ProII二次开发项目。这个项目包括自动化流程模拟、数据处理与分析以及动态工艺参数调整。

kkchenjj的博客 918

【VibeCoding系列】小白入门指南:模型选择、编辑器选择、项目预定全分析

开箱即用:下载安装就能用,不用配 API Key(也可以自己配)Cmd+K 快速修改:选中代码,按 Cmd+K,直接让 AI 修改Cmd+L 对话:侧边栏聊天,支持引用文件和代码@文件引用:输入 @ 就能引用项目中的文件,AI 自动读取上下文Agent 模式:告诉 AI 一个需求,它自动跨文件修改下载地址cursor.com(免费版有额度限制,足够入门)✅下载 Cursorcursor.com),安装打开✅选一个小项目(个人名片页 or Todo List)✅按照七步工作流开干。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 212

获取页面高度,窗口高度,滚动条高度等参数值

最近在项目中想实现Div层垂直居中显示,可是无论怎么尝试都无法实现在IE中获得当前Page的高度。后来Google到下面的代码,发现原来是利用document.documentElement.clientHeight,真让人有点莫名其妙。function getPageScroll(){  var yScroll;  if (self.pageYOffset) {    yScroll =

网络芝麻的快乐生活 2285

【ESP32使用MAX98357播放音频】

在物联网和智能家居领域,音频播放功能越来越受到重视。ESP32作为一款功能强大的微控制器,结合MAX98357音频放大器模块,可以实现高品质的音频播放。本文将详细介绍如何使用ESP32的I2S接口通过MAX98357进行音频播放。

vor234的博客 7529

JavaScript + PHP 应用二:网页设计中树形菜单的动态实现

  树形菜单,熟悉Windows程序管理器的读者一定不会陌生。单击项目左侧的+号,项目展开;再次单击,项目收缩。读过很多篇有关树形菜单的JavaScript实现方法,原理很简单,都是利用Style中display属性的控制。笔者本文的重点并不侧重于此,倒是想谈一谈如何实现每一次从数据库中提取数据并动态更新树形菜单。  树形菜单主要用来导航。网站有很多栏目,每个栏目下有很多子栏目,栏目经常变动,如增

网络芝麻的快乐生活 1873

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

在WEB项目中多维下拉菜单的实现技巧和方法

【摘要】对于web项目中下拉菜单的设计,尤其涉及到复杂的多维菜单,许多web开发的入门者往往不知所措,网络中关于此类问题的讨论也是屡见不鲜。文章旨在通过一个实例的分析,帮助初学者掌握web项目中多维动态下拉菜单的实现原理和方法,帮助入门者熟悉javascript、DHTML、ASP等相互结合的技巧,从而找到一种动态下拉菜单的通用解决方案。【关键词】ASP、Javascript、DHTML、下拉菜单

网络芝麻的快乐生活 1788

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

网站公告栏的可行方案

近日在做网站改版的一些事,对于目前公告栏,早就有采用当前比较流行的幻灯片技术的设计思路。当前的幻灯片技术一般都采用flash+js的方式来控制图片的显示,但对于公告栏来说,主要是文字,一时间这个方案总有行之不通的感觉。 晚上又在网上找,找到了这个帖子:http://www.ssoso.com/thread-4260-1-8.html,其中给出了目前大多数网页幻灯片的设计方案,我大体看了

网络芝麻的快乐生活 1634

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JavaScript+PHP 应用一:网页制作中双下拉菜单的动态实现

在网页制作中,常常遇到这种情况,通过主下拉菜单的选择,动态的生成子下拉菜单。例如:在主菜单中有“焦点新闻”、“生活时尚”、“心情故事”三个选项,通过“焦点新闻”的选择,子菜单自动生成如“国内”、“国际”、“体育”、“文娱”,依此类推。利用JavaScript,我们可以轻松实现上述效果。但问题是,如果菜单中的选项是从数据库(或其他文件)中动态提取,实现起来就并不是轻而易举的了。笔者根据自己的

网络芝麻的快乐生活 1569

嵌入式Web视频点播系统实现方法

       近年来,视频点播VOD(Video on Demand)的名字在媒体上出现得越来越多。VOD技术使人们可以根据自己的兴趣,不用借助录像机、影碟机、有线电视而在电脑或电视上自由地点播节目库中的视频节目和信息,是可以对视频节目内容进行自由选择的交互式系统。VOD的本质是信息的使用者根据自己的需求主动获得多媒体信息,它区别于信息发布的最大不同:一是主动性、二是选择性。从某种意义上说这是

网络芝麻的快乐生活 1509

Flex 2.0实践

自从识得Flex以来,我便喜欢上了这个新技术。说它是新技术,也许有点欠妥。利用AS脚本在Flash中制作表单,这应该是很早以前的事情了,想来很多Flash高手现在仍然对Flex嗤之以鼻,也算是这个道理。其实Flex之所以能够得以流行,完全得益与Adobe给Flash带来的革新:Action Script 3.0。Flex来了我以前曾经在Flash中写过一些小程序,主要是为了获得良好

网络芝麻的快乐生活 1458

WebSphere 6.0 + DB2 部署心得

近期的一个项目分行指定在WebSphere+DB2上运行,由于第一次接触这两个系统,所有在开发过程中一直使用Tomcat 5.5+DB2这样的一个环境,运行一直很好。可是在最后往WebSphere上部署时,遇到了很多的麻烦。 一、WebSphere部署遇难题 经过多次的反复的部署,应用程序就是无法运行。由于对WebSphere不熟,一开始以为是WebSphere安装和配置的问题

网络芝麻的快乐生活 1455

IE不能主动识别UTF-8编码的问题

最近在使用Intellij IDEA 6.0时,发现从beta版转过来的项目竟然不能正常运行。首先是在编辑器中出现乱码:通过把文件转成UTF-8显示正常;但紧接着在IE浏览器中出现新的问题,页面竟然一片空白。在网上找了好久,终于被人指点为是编码的问题,应该在HTML页面中加上:随手做了个测试文件,果真正常了。但没高兴多久,Web项目运行后浏览器竟然还是空白!奇怪啊,到底是什么原因呢?

网络芝麻的快乐生活 1374

在Websphere中使用FineReport

FineReport是一款国产的纯Java应用软件,其基本原理是通过ReportServer这样一个Servlet来处理所有的报表请求,并动态的生成基于Web2.0技术的HTML页面。我们在最近一期的项目中采用了FineReport作为报表引擎,在Tomcat的环境中测试顺利通过。 当我们把项目部署到WebSphere6.0.0.1上时,问题开始频繁出现。由于以前有过在WAS上部署项目

网络芝麻的快乐生活 1364

IE中bordercolorlight的CSS实现

最近在使用TABLE的bordercolorlight/bordercolordar的属性时,IDEA总是提示我属性非法,搞的人很不爽。没办法,这两个属性连MSDN都建议不再使用。可是,如果通过CSS来模拟实现呢? Google了一下,发现了如下的解决办法: TABLE.colorTest{    border-top: 1px solid #EBEAEE;    border

网络芝麻的快乐生活 1334

DB2使用技巧与心得

修改自增长初始值:ALTER TALBE t1 ALTER c1 RESTART WITH 1 在INSERT语句中,使用DEFAULT关键字来插入默认值。对于自增长的字段,该关键字同样适用:INSERT INTO t1 VALUES(DEFAULT,?,?...); 这样就可以直接插入默认的id值  在当前事务中对表取消日志记录:ALTER TABLE t1

网络芝麻的快乐生活 1172

大数据Spark(八十五):Stage及Spark计算模式

本文详解Spark中Stage的划分机制与Pipeline计算模式。Stage依据RDD宽依赖(Shuffle)划分为ShuffleMapStage和ResultStage,同一Stage内通过迭代器串联多个RDD,实现数据内存流转,减少落盘开销,提升效率。并行度由最后一步RDD的分区数决定,可通过Shuffle算子调优。结合SparkUI可直观分析性能瓶颈,是优化作业的关键基础。

Lansonli(蓝深李)的博客 772
上一篇: 商业智能(BI)学习笔记
下一篇: Flex 2.0实践
tttk
博客等级 码龄27年 37粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值