微软昨天发布了IE8的Beta 1。老刘在得到消息后马上就下载安装了。但我并没有写什么文章,原因有二。其一,关于IE8的文章已经很多了,从数天前就开始有人“偷窥”了;其二,自己还没用过,没啥可说的。
今天早上看到图灵论坛刘江老师发起了关于IE8的讨论,还向我等透露了他和相关人士进行探讨时的聊天记录。于是,我也想说一些我的看法。
IE8最大的特点就是,即将完整地支持Web标准,号称还通过了Acid2、Acid3什么的测试。老刘并不关心这些,只想知道——我写的网站和我经常要去的网站,用IE8能看不?
安装IE8后,第一件事就是把自己平时会浏览的网站通通看一遍,看看有什么不同。结果是令人失望的——我并不知道我是安装了一款最新的浏览器,还是安装了一个已经过气的古董浏览器,总而言之,页面一塌糊涂。
还好,IE8提供了一个“Emulate IE7”按钮。在安装完后IE8会导航到微软的IE8站点,上面有一个图片箭头明显地指出了这个按钮的位置。我像看到救命稻草般点了下去。结果IE8告诉我——你必须关闭所有的IE窗口并重新打开,才能进入IE7兼容模式。天啦,这和“请重启计算机以完成安装”有什么区别么。
好了,以上是牢骚。下面是歌颂。
IE8给我的另外一个感觉就是,快。还有就是稳定。在IE7中,如果Tab开多了,反应会比较慢,而且有一些Ajax用得比较凶的网站经常会导致我的系统无法创建新窗口(具体表现是,菜单弹不出,新程序打不开,对话框也不能弹出——所有这些应该都是用CreateWindow建立的吧)。在使用IE8的24个小时里,在没有这种情况。
IE8里还有个新东东叫“Activities”,跟过去一些流氓软件提供的“划词xx”(如划词搜索、划词翻译)类似的功能。但这个Activities只是对右键菜单的一种扩展。其速度还是可以的,因为“划词”以后不是立刻执行某种操作,而是显示一个快捷菜单,由用户选择进行何种操作。(关于Activities的开发,园子里的nfa2dfa朋友已经在《IE8 Activities尝鲜》一文里进行了介绍[请参见:]。)
再下面是“我见”。
有人提到,说微软在IE8中全面支持Web标准是“被逼的”。老刘姑且相信这一观点。那么,是被谁“逼”的呢?肯定不是您的母亲或我的母亲,也不会是其他厂商。是“开发者”。
开发者为什么会团结起来逼微软实现标准呢?因为他们太累了,他们在写一个网站时需要考虑太多的浏览器了。所以,他们天真地认为,只要浏览器遵从了标准,开发的时候就可以“面向标准”而不是“面向浏览器”了。然而,IE8的出现沉重地告诉我们——你错了。
IE8非但不能为我们带来Web开发大一统的美好未来,恰恰相反,在短期内,还将加重开发者的负担——对不起,又有一种完全不同的浏览器出现了。
我想,这也是为什么微软要在IE8中添加一个“Emulate IE7”按钮的原因。然而,这个按钮纯属鸡肋。因为切换到IE7兼容模式(包括再切换回来)都要求重启浏览器,所以,老刘预言,在IE8正式面市后的很长一段时间里,绝大多数的用户都将一直启用着IE7兼容模式,把IE8当作“更好的IE7”来用。
当然,这只是Beta1,我想微软一定会在正式版中将模式切换改为无需重启的形式。否则,Web标准将形同虚设。究竟Web标准能不能大力推行,从非标准向标准过渡是否顺利,将完全据取决于按了这个小小的“Emulate IE7”按钮后是否需要重启浏览器。
很多人还天真地以为,这是一个好的开端,只要忍过一段时间,情况就会好起来的(你前面不是也说了吗,“在短期内”)。但老刘还得无情地打击你一下,浏览器战争,才刚刚开始进入高潮部分。
以前在提到跨浏览器网站开发时,人们的目光更多地聚集在CSS上。通常认为,只要CSS跨浏览器了,网站也就跨浏览器了。于是,一些精妙的CSS HACK在开发人员之间广为流传。而现在,虽然看起来这些CSS HACK都将失效(其实不会失效,反而会更多),但大家的心理是轻松的,因为我们的CSS可以写得更“优雅”了,可以不用考虑跨浏览器了(真的不用考虑了吗?)。
不管CSS这条战线到目前为止是趋于和平熄火,还是愈打愈烈,我们都可以松一口气了——熄火了,我们可以更轻松地编写CSS,接着打,不怕,我们已经有很成熟的CSS HACK了,再做少量改动就是了。
但最为要命的是——从刘江老师透露给图灵俱乐部的聊天记录来看——新的战场即将在JS领域展开。Mozilla和Adobe主导着JS2,而JS2基于ECMAScript4,这个标准使得JS不可避免地进入“重量级”领域。而且,Adobe还妄想将ActionScript中的诸多特性加入JS。(记得前些日子看到报道,有人反对微软的OOXML,原因是微软向其中加入了太多自己专用的特性,讽刺啊讽刺。)而微软的一贯作风是降低开发门槛,JS的特征也是门槛低。所以看来微软在这一战场不会轻易妥协,由此可以认为,CSS战火未息,JS战争又将打响。
今后还有什么呢?DOM、ActiveX,这些都是敏感区域,说不好哪天大家又打起来。等到多条战线全面拉开的时候,才是Web世界大战的最高潮。
不过别紧张,让他们这些厂商去争好了,我们的日子虽然没有因为IE8变得好过,但也不会因为这场战争而难过。老刘认为,今后的Web开发将会出现下面这些势态。
首先,Web应用向两极分化。一些低端开发团队,如个人或小型工作室、小型公司,可能采取“降级”策略,也就是屏除当今Web2.0大潮中令人炫目但不是很切实际的特征,才用广泛支持的HTML、CSS、JS特性,开发看似简单但功能性和实用性较强的引用。而一些高端开发团队,如比较成熟的大型互联网企业,将出现团队分化,即有专门的团队进行功能性开发、另有专门的团队做诸如跨浏览器、性能调优等工作。
其次,整个互联网产业分工更加细致。大公司的一些团队,以及很多开源组织会专注于跨浏览器工作,推出更为成熟的跨浏览器组件或解决方案。而前面提到的“低端开发团队”则可以免费或以很低廉的价格使用这些组件或解决方案。其实现在很多公司和组织已经开始做这件事情了,市场上有不少成熟的跨浏览器js库。但今后,这一领域将更为耀眼。