两个让人自叹不如的 JavaScript——Web 版 SC 和 Bindows

转载

一直以为自己所感兴趣的 JavaScript 是旁门左道,实用价值不大(因为有简单的替代方法,而用不着那么高级的东西),知道的也不多,不过看到这两个例子后方知,左成这样也就是高手了。一个是前几个星期看到的 [url=http://www.sunnycbd.com/gm/sc.htm]Web 版的 StarCraft 模拟[/url](该站已经严重超负荷了,尽量找一个人少的时段观看),一个是刚从 [url=http://dev.csdn.net/article/27/27574.shtm]CSDN 文章《回归C/S?解释Bindows》[/url] 所知道的 [url=http://www.bindows.net]Bindows[/url]

先说第一个 [url=http://www.sunnycbd.com/gm/sc.htm]Web 版的 StarCraft 模拟[/url],看了一下,最关键的部分是雷达地图和行走计算,其他都好说。雷达好像是用的 VML(我一开始想的最笨最耗资源的方法是 n 多 1宽高像素的 DIV -_- ),而行走很绝,永远不会被卡住,这么说可能让人有点莫名其妙,罗嗦点,比方说把一个[url=http://www.battle.net/scc/terran/um.shtml]机枪兵[/url]放在一个用建筑物围成的“凹”型里,然后让他向下走,结果机枪兵还是会绕过去,尽管一开始走的几步离目的地是越来越远,但它能知道只有绕些远才能到达,否则永远也走不了。我只所以这么在乎这个问题,是因为一直到 Pentium 时代,一些 C&C too 游戏尚且无法解决这些最基本的 AI 问题(好像就连[url=http://www.microsoft.com/games/empires/]帝国时代[/url]都会有偶尔卡住的问题),而现在连在 IE 里都能做出来了,当然值得夸耀。

而第二个,[url=http://www.bindows.net]Bindows[/url],可以说是 JS 效果的终结者了。有兴趣的可以看看其演示里的 [url=http://www.bindows.net/bindows/samples/applauncher/]App Launcher[/url],单击是查看调用方法,双击是弹出演示页面。我最感兴趣的是那个“TreeViewTest”,那是我唯一还没想好怎么实现的,当然,那个调色板除外,我觉得那是 VML 问题。我大约两个月前做的“标签页”效果他这里出现了,不过我认为他的没我逼真。他这里的接口都写的很完备了,调用很简单,而我的每次都得量身定做,不过这不是什么大问题,因为这些效果使用的频率还不是很高,我只是为了省时间才懒得将其标准化。

[quote]
[url=http://dev.csdn.net/article/27/27574.shtm]引自《回归 C/S?解释 Bindows》[/url],作者 刘如鸿
不过欣赏归欣赏,Bindows具体真正的应用还是有很长的一段路需要走,也许也走不到那天,毕竟IE的开发计划已经停止,剩余的我们也只有等待 Longhorn 下面的 Avalon 带来的XAML。在 Bindows 0.93 发布的时候已经将 IE 内置的功能开发的淋漓尽致,包括 Filter,包括 xmlhttp,包括 Web Service,包括 VML,剩余所做的只是一些错误的修正及其代码的一些性能调整,但是 IE 本身的停止更新决定了 Bindows 不太可能有根本性的改变,因此,教学意义似乎更加重于商业意义,我不知道有多少的公司在做 B/S 应用的时候在 WEB UI 方面会真正的采用 Bindows?
[/quote]

尽量少使用 VML 可以改,不要一次全部加载也可以改,一些 IE 版本差异上的小问题也可以忍,但现在 IE 已经几年没出新版本了,这个问题成了致命伤,着实让人无奈。

[hr]

说点开发方法上的问题,这个 Blindows 是个 Framework,我对 Framework 的概念很模糊,估计就是搞的非常方便可以像 VB 那样可以直接拖拽吧,不过对其效率很有疑问,如果把 Bindows 的控件堆成一个浏览器形状,就像我以前做的 [url=[file=44]]IEBrowserSim[/url] 那样,得占用多少内存?读多长时间?而我这个不包括图片的话源文件只有 47.2 KB。

B/S 我感觉最难搞的地方就是难读难写(那还有什么是不难的……),我看别人的东西基本只看效果不看具体代码,具体代码完全靠自己琢磨,可能最后实现的方法完全不一样。B/S 本身决定了读取的复杂化,虽然所有代码都是理论上可见,可你得仔细分析 HTML 才能知道都引用了那些 .js 文件(甚至是有些 <script src="" 这样的 HTML 都是动态生成的,[url=http://www.microsoft.com]微软[/url]就是),还可能有 Session 或者 Cookie 限制,还有的 .js 文件是服务器端生成的(这还可能导致缩进不规范),也可能会有一个页引用十几个 .js 文件。而且 JS 还是和 HTML 结合的,一个变量可能得搞半天才能弄明白是 JavaScript 定义的还是指的 HTML DOM,而内容上无外乎是层出不穷的 function,因为 JS 效果只有在需要的时候才能出来。写也是麻烦事,这种东西不可能有 IDE,整个过程无法 step by step 慢慢调,只能边写边刷新 IE,出错信息给的也很少,要考虑和 HTML 的结合,要考虑样式,还要考虑如果 HTML 页面没 Loading 完该怎么办这种 IE 本身的限制问题。

总之写 JS 很痛苦,看 JS 更痛苦,尤其是看微软和[url=http://www.go2map.com]图行天下[/url]的。想到我自己写东西要开源,非但没有被抄袭照搬的隐忧,反倒有种报复的快意……与其“学习”别人的代码,不如看别人能做到什么效果,然后自己琢磨出条路来。

[hr]

[center][img][file=45][/img][/center]

btw,Bindows 本身也是 IE 功能的良好展示,任何一个其他内核的浏览器,都无法做到这种程度的 B/S UI,却在使用习惯等一些小的功能上做文章(这些功能有 MyIE 等在很好的补充)。Bindows 所展示的,也正是我为什么一直推崇 IE 的原因。IE 给了专业 Web 开发者尽可能大的创作空间,却总是受到一些外行使用者的炮轰——对于 IE,对于浏览器,你了解多少?