IE6及重新理解Web及相关技术

也许虽然同在web领域里面,但是经过了几个月的工作以及对于业内的一些发展的了解,我的思维的确与当时在做站点的时候完全不一样了。首先的一点就是推翻了以前对web技术的理解,重新定位了相关技术所扮演的角色。

HTML+CSS = 界面架构语言+界面设计语言

早期在做网站的时候,也和小志一样,说到HTML,必定就是网站,仿佛这已经成为了一个经典的代名词了。而确切的说,在早期的HTML,最广泛的应用也就只在于做网站。甚至于W3C也觉得HTML已经够用了,进而想提高一下编程人员的书写风格,往JAVA那种严格标准靠靠,折腾下前端开发者。然而HTML5标准一出,非IE系的一出手作为事实标准反逼W3C持续改进HTML5,增加了更多的API,使得HTML和CSS逐渐的超越了原先网站的范畴,而跨越到跨设备界面设计语言的领域。是的,正是因为HTML和CSS的这种反超,让前端这个职位将不仅仅局限于网站,而可以出现在更多的领域里面,比如:TV,手机,桌面,Pad。Apple对Flash的鄙视让HTML 和 CSS有了长足的发展,新的CSS能实现以前只有Flash才能实现的动画特效,加上HTML5的Canvas/WebGL/WebWorkers,让整个前端的世界是多么的美好。

所以,首先必须打破的就是一个观念:HTML和CSS已经不是原先的那个领域里面的HTML和CSS了。它是全新的,是用来在所有设备上的一种界面设计语言,延续了他们结构和样式分离的良好特性。它们还是那个公开的标准,除了HTML内对JAVASCRIPT暴露的接口/CSS特性实现程度的不太一样之外,它们的实现的最终效果,都会基于标准来的,甚至微软。因此,未来也许有一天,你看到的星级争霸的界面,将会是HTML+CSS来实现的,但是可以确定的是,win8将可以使用这些技术去创建原来属于.net领域才能创建的界面。

也许部分前端开发者并不太清楚的是:当他们使用WebKit内核提供的开发者工具的时候,那玩意的界面其实就是用HTML+CSS+Javascript来架构的。你可以在开发者工具上点击右键,弹出inspect element的时候点击以下就可以debug它了…

javascript && 数据抽象化 = 界面交互语言

正是由于HTML提供的API接口更加丰富化,也同时丰富了javascript的应用。在这个API漫天飞舞的年代,服务器为了减轻自己的压力,通常已经只负责几样基础的事情:1.验证会员身份,2.响应url并提供JSON数据返回,3.负载等balabala…在大部分动画被CSS所替代之后,javascript除了改改DOM的属性,还将承担原先由PHP等服务器语言承担的一些责任:将返回的JSON数据根据自己的需要拼接成为DOM对象并将其插入界面里面并展示出来;存储数据&&获取数据。其中JSON数据格式的返回使得后端只要暴露自己的接口和数据格式就可以了,而无论后端使用的是python,java,ruby,php,要更换后端技术,只需要保证接口统一,数据结构统一即可,大大的降低了后端技术迁移对前端的影响。

这无疑对于前端还是后端来说,都是非常好的一件事情:改版的时候无需后端的参与,只需要和后端约定接口就好,整个界面上面的代码都可以由自己控制,降低了以前鸡对鸭讲的情况。在这个技术架构上面,javascript发展了自己的template技术,有更多的轻量级的template库供大家更好的使用前端template技术。而要实现javascript的提升,需要JS引擎更好的性能支持,而这恰恰是V8的发力所在。

而现在,更多的网站开始介入前端MVC架构的开发,框架层也开始慢慢的发展,程序开发的顺序也开始是约定接口,前端负责自己的,后端负责自己的这样松耦合的开发方式了。

javascript + V8扩展 = Nodejs

V8创造了奇迹,公开了源代码不说,也创建了浏览器上最快的javascript引擎。而最大的奇迹,是让javascript成为了一个后端的脚本语言。喔,是的,那就是Nodejs。喔,是的,只要你的系统能装上一个Nodejs,那么你就能做到以下的一些事情:用javascript编写处理脚本,用javascript操作服务器文件,用javascript搭建一个小型的http服务器,用javascript和noSQL的数据库通信,用javascript和前端的javascript通讯。注意了,都是用的javascript,你不必学习什么python,什么ruby,什么php,一切从前端到后端都可以使用到javascript进行编程。当然,这一切还只是初级阶段,但现在已经有一些具体的实例了,比如WebOS 2.1 已经安装了NodeJS的环境,大大简化了前端开发者的迁移成本(当然这是因为WebOS整个都架构在Web技术上罢了)。

Web Runtime

其实说到浏览器,最终不过就是提供给我们展示界面的一个解析器罢了。未来也许网民根本就不需要打开浏览器,甚至于不需要知道有浏览器这个东西,只需要点击各种图片,就可以跳转到各种界面。也许网民玩游戏根本就不知道他的游戏就是运行到浏览器里;即便是现在,估计也有很多人不知到游戏的一部分就是浏览器引擎和Web技术实现的。当然,他们在玩EVE的时候也依旧可以打开内置的浏览器浏览论坛,并且浏览器也可以提供相应的游戏数据给网站,让网站能根据游戏者的即时游戏信息提供更好的用户体验,甚至能实现不同游戏之间的用户通信。当然,更多的人也许不知到某些手机程序也是Web技术开发的。只是你下载的时候连同Web Runtime一起下载下来,并且经过修改,能吃进手机的API转成JS能操作的对象而已。

有关IE6

扯了这么多,无非就是想说明一点,再局限在网站层面思考整个web技术已经是毫无意义的事情了。甚至于在桌面层面上,你也无需要考虑太多,比如Pokki就是让你在win7任务栏构建自己的web应用的运行环境,比如接下来即将到来的win8,比如chromebook,有更多更多的机会让前端不再只是网站页面仔,可以升级到程序界面仔,又为什么老是要在一个小小的网站领域让自己苦恼和费心呢?

于是,你所关心的将不再是IE6,IE7,IE8。他们都是一个提供界面基础的底层,于是你的问题就是:如何让用户使用到你需要的runtime。手机层面,Tv层面,上网本,Pokki插件,甚至于其他的程序提供的浏览器引擎,Mozilla的部分实验项目,都可以让你所做的成为真正的程序界面,而这,可以绝对的说,它不是IE6。

再回来说IE6,很多时候,我们总说:要满足那40%啊40%。绑用户说话,这是在讨论当中经常用的手段,每每讨论到ie6在中国的消亡的时候,我们总会说到这是不可能的任务。我们总在为自己兼容ie6辩护,前端一直被很多的东西所绑架:公司营销机构,公司数据分析师,浏览器市场份额,用户体验设计师。那些看似正常的数据往往却没得到一个最本质的问题:很大程度上,并非是用户自己选择的浏览器,而是IT界在帮他们选择。

用户自己选择了IE6么?不是,因为盗版安装了IE6。 用户自己选择了IE6么?不是,因为某些网站不兼容非IE系的,尤其是那些垃圾站。 用户自己选择了IE6么?不是,因为某些创建网站的人使用了VS控件,而这个落后的玩意,是微软开发的。 用户自己选择了IE6么?不是,因为某些网站需要的控件只有.net的,而开发控件的那个公司,只想着赚钱 用户自己选择了IE6么?不是,微软没有强制升级,而且它的IE9也还是个渣滓…

盗版迟迟不升级到其他浏览器是因为根本不愿意,还是因为IT界有大量不兼容非IE系浏览器的网站和控件所导致的?而这背后,又有多少是为了所谓的降低开发成本所带来的诱惑?这个降低的开发成本,又有多少被其他网站给吃进去了?因为这个该死的IE6?我们辛辛苦苦帮IE6编写着hack,兼容着js,而那些知道我们辛苦的同行,却在毁灭着我们本来应该有的休闲/提升自己的时间,这又让我如何不恨?

为了他们,中国互联网技术的发展远远没有国外那么快速,用户体验反而得不到提升。而这个时候小部分伪用户体验设计师,又一天到晚叫嚣着不能放弃IE6,自己打自己打嘴巴。为什么我要这么说?因为更现代的浏览器,提供了更快的渲染速度和js解析速度,一切在网络响应上节省下来的时间都远远没有在浏览器当中节省的时间多(除非你的前端写的代码超过MB级别,但是这个级别更需要更好的浏览器支持)。甚至于部分的网络上的延迟可以由更好的浏览器来弥补,部分需要flash的地方,可以由更加简单的几十个字节的css来实现,节省更多的带宽。而着一切,仅仅只需要一个更加现代化的浏览器。让用户升级到更好的浏览器,你就可以提供更好的用户体验。所以那部分叫着不能放弃IE6的用户体验设计师,却只是在自己网站上找到不能放弃IE6的条件而已。

用户自己选择了IE6么?不是,因为他们不知道有其他选择。因为他们只知道用,所以都是由IT界帮他们选择的。我们要的,不是牺牲用户,而是要唾弃那些让我们陷入IE6苦潭的同行。如果你恰好同时作为一名hacker,那么你应该做的,就是见到一个,DDOS一个。

是的,这就和腐败者是否自己选择了微薄,回答说“不是,因为二奶选择了”一样。我们需要让这些二奶勇猛的活着,让那些“二奶”无法在业界立足。

总结

幸运的是,我们无需在同一个地方和IE6计较,Chrome Frame已经无需管理员权限安装,可以让用户框着IE6的外壳用着chrome的东西。而Web标准在移动领域大方光彩,虽然还是有各自的标准,但是幸运的是,WHATWG小组里面有太多的浏览器制造商参与并实现了,标准也将部分统一化。我不喜欢兼容IE6,但是我依旧喜欢Web,我可以选择的路将更多更宽广,如果你有能力,就放弃IE6,加入到更宽广的领域当中吧。

小志同学在《扯扯ie6的死亡》的文章里面,已经有了很明显的斯德哥尔摩综合症的味道了。真想当面和他说,不想做网站兼容就别做了,去别的领域走走玩玩~比如iPhone程序开发,比如android应用开发,比如Chrome应用开发,甚至于HTML5游戏的开发。而这一切,将还是用到你最熟悉的技术:HTML+CSS+JavaScript.

Q.E.D.