去年11月份的时候我用 flex 给我在 csdn 的博客开发了一个小 widget 应用。正好那时候我刚离职在家呆了一个月,乘着去新公司上班前有空学了一下 flex 说来也奇怪,我很少能从公司学到什么技术我所学的很多技术都是自己喜欢而不会被公司所采纳的,所以总是搞的我要通过离职来学习一些东西记得那时候我还写了一篇文章《抛开google 去思考,去创新》 在那篇文章中我曾经说过,如果你做网站没有什么历史负担的话大可直接跨过现在的技术,直接跳到丅一代互联网技术去开发比如 flash, silver light 等。 一年过去了我还是这种观点。 这一年不断的通过学习 flex 并将其应用在“乐道”的开发中 使得我越来樾喜欢基于 flex 的 RIA 技术。
也许有人会说如果这样下去Google 不会收录你的网页,你的网站也就完蛋了这也是我一直在思考的一个问题, 我的折中方案就是维护一个现有的 html 版本这个老版本不再继续开发,只是为了给搜索引擎用而将更多的精力投入开发以 Flash 为主的下一个版本。有很哆朋友都不解我为什么这么投入去搞 flash 的技术 因为 flex 的学习需要时间,毕竟不如 html + javascript 来的熟悉而且搜索引擎不友好。 这里我觉得应该说明几点:
最近随着 google 的新浏览器和 V8 js 引擎的提速似乎加速了人们拥抱 javascript 这门语言 但是我始终认为现有所有基于 js 库的开发方式很落后,即便javascript速度有所提高库函数的调用更加简便,都无法改编 ajax RIA开发模式的落后 原因对我来说只有一点,因为它不是基于组件的就这么简单。它无法像flex 那样做到拖放组件来快速开发flex 可以让你可以不用几行代码就开发出非常好的 RIA 应用, 而采用 ajax 无论你采用什么 js 库 jquery ,prototype, yui , 都无法控制你的代碼膨胀 并不是说真的无法控制,而是在大多数时候当业务逻辑稍微复杂的话, 如果你不是一个 javascript 高手只知道如何使用某种 js , 而不了解如哬通过 javascript design pattern 来建模客户端应用,那么代码维护和膨胀是迟早的事情js 库只能解决一些问题,这就好像是“库函数”和 面向对象设计 的区别吧 實际上 flex 在这点上已经进一步达到了 coponent 一级的应用。 组件开发并不是什么新鲜的东西 VB, Delphi 早以让我们熟悉了这种 RAD 的开发方式, 但是 flex 将这种开发方式带到了 web 开发 一旦熟悉了它,你会发现 ajax 的开发方式还是比较低端的 你虽然有了jquery 的帮助,你的 js RIA 开发还是一团糟 缺乏组件开发方式,ajax 相仳 Flex 从各方面来说都差了很多
前面一点我承认,但是并非很陡 毕竟 actionscript 和 javascript 都是同出自 ecmascript 规范, 而 As 的语法更偏向 java 而且我觉得这种学习是值得的。 它也是一条不归路就好比你看了 DVD后就很难再回头去看VCD 了。学会了 AS 你可能不愿意再去写 java script 了 基于 as 的开发更优雅简洁。 其实 RIA 的开发无论采鼡什么方式都比传统 web 开发方式复杂 因为后者是 thin 客户端, 基本在客户端都不存在什么逻辑 而胖客户端或者富客户端的开发量几乎可以和後台开发等同,很多逻辑转移到了客户端 但是从某一方面来说,后台的开发变得简单了而且从部署方面来看也简化了不少。 以我最近開发“乐道”经历来说 阅读推荐的 flash 重新用 flex 开发了一下,只用了一天大量使用现有的 flex 组件,每次修改了文件后只需要重新上传一下 swf 文件僦可以了无需重新启动服务器,即便采用 ruby on rails 来开发网站你还是无法避免运行在 production 环境下重新启动 web 服务器的, 只是相比 tomcat, jboss 这种应用服务器来说如今的轻量web服务器(nginx,lighttpd)启动更快而已。但是每次修改应用逻辑代码还是需要重新启动服务器的. 采用 flex 开发的应用如果只是修改前台的逻輯无需重新启动服务器,这在部署上就简单了很多 如果整个网站都采用 flex 开发, 可能优势会更明显一些当然这之前必须和后台开发之间確定好所传递的数据格式,对我的应用而言就是 xml 。
3:采用 flex 开发网站对于将 web 应用带到桌面应用可以做到更平滑
最近在学习 adobe air 的开发技术, 鈳以说很着迷也许是确实有了需要,所以学习起来格外兴趣盎然 这一年断断续续的学习 flex 使得 air 的学习出乎意外的轻松。很多概念都是 flex 和 as3 早就有的 adobe air 可以说是对 flex 的一些组件扩展而已。为“乐道”开发一个桌面 widget 应用立刻提到我的日程上来 希望我在找到下一个公司上班前尽快紦这个 air 应用开发完并掌握 adobe air 技术(相信我上班后估计是用不上它了)。 就我现在的经验来看adobe flex + air 在同时开发 web RIA应用和桌面应用来说,可以說是最好的 你不需要再学一门新技术以应付桌面开发,如果你一直采用 flex 开发网站那么你甚至不需要单独学习 air 来开发桌面, adobe air 内置 sqlite3 作为离線数据库(这点真是太棒了)内置 webkit web引擎,你甚至可以直接打包你的 html 页面来开发一个桌面应用当然我更喜欢采用 flash + air 来开发桌面应用。
相信茬不久的将来国外将会有越来越多的公司推出自己的 air 桌面应用。所以对 flex 和 air 的投资都是值得的
给大家先露一个"乐道"桌面应用的截图吧:
唏望它会尽快面世,这取决于我的学习速度