- 浏览: 962429 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
sscsacdsadcsd:
mike8625 写道react还要自己的一些标签 还得编译 ...
对于React体系的一点想法 -
mike8625:
说的都是给大公司听的,国内很多还是小公司,做个小项目, 说实话 ...
关于国内前端和JS技术发展的乱想 -
mike8625:
react还要自己的一些标签 还得编译 编译吧浏览器端说还慢 ...
对于React体系的一点想法 -
u012814086:
下意识想到了Golang
JavaScript语句后应该加分号么? -
xueduanyang:
我是水羊,年轻的时候觉得只要有好斧子就能做成好产品,各种产品都 ...
关于国内前端和JS技术发展的乱想
本文译自Maciej Stachowiak在webkit团队blog上的文章Versioning, Compatibility and Standards。本文可作为分歧巨大的“HTML的版本问题”的背景材料,对此问题的探讨也请移驾此处讨论。注意,【】中的内容为我所加的注。
Versioning, Compatibility and Standards
版本、兼容性以及标准
Posted by Maciej Stachowiak on Tuesday, January 22nd, 2008 at 11:51 pm
Maciej Stachowiak发表于2008年1月22日星期二
The new IE8 version targeting switch, announced on IEBlog and A List Apart, has been the talk of the web. Some web standards experts, like Eric Meyer and Jeffrey Zeldman see the switch in a positive light. Others, including Dean Edwards, Robert O’Callahan and Anne van Kesteren think the proposal is a bad idea.
IEBlog和A List Apart上声明了新的IE8的版本目标切换特性(version targeting switch),这成为了最近谈论的焦点。一些web标准专家,如Eric Meyer和Jeffrey Zeldman对这种切换特性给予了正面评价,而其他人,包括Dean Edwards、Robert O'Callahan和Anne van Kesteren,则认为这一提案是个糟糕的主意。
We don’t talk much about what other browsers are doing on this blog. While we’re happy to collaborate on web standards and testing, and sometimes share a little friendly rivalry, we try to keep our focus on making the best Web browser engine we can, not on the competition. So we’re not going to give in-depth commentary on the IE team’s decision. Straddling compatibility and Web standards is a tough job requiring tough choices.
在本blog【webkit的官方blog】上我们不会去讨论其他浏览器的所作所为。尽管我们很高兴在Web标准和测试方面进行合作,有时还参与一点友好的竞争,但我们希望把关注点集中于如何尽我所能创造最好的Web浏览器引擎,而不是竞赛上。所以我们不会对IE团队的决定多嘴多舌。平衡兼容性和Web标准总是一项艰难的工作,需要做出艰难的选择。
However, some have asked if other browser engines, including WebKit, would adopt a similar version switch. For example, the original announcement asks, “I, for one, hope other browser vendors join Microsoft in implementing this functionality.” I can’t make any definitive statement for all time, but such an approach does not seem like a good idea to us currently. Why, you may ask? There are a few reasons.
然而,有人问其他浏览器引擎,包括WebKit,是否能引入类似的版本切换机制。比如,最初声明中提到,“我本人,希望其它浏览器厂商也能和微软一起,实现该特性。”我并不能做出权威声明,但是可以说,这一想法对我们目前来说并不是一个好主意。
Mode Switches in WebKit
WebKit中的模式切换
WebKit, like most browser engines, has a quirks mode that is triggered by certain old HTML doctypes, or lack of a doctype declaration in text/html. Documents with newer or unknown doctypes, or sent as XML, are processed in standards mode. Like Mozilla and Opera, we apply only a limited set of nonstandard behaviors in quirks mode, and otherwise fix bugs across both modes, if they do not have a specific significant impact on Web compatibility. This is in contrast to the IE approach of completely freezing old behavior in quirks mode.
WebKit,正如大多数浏览器引擎一样,具有怪癖模式,可由特定的老的HTML doctype或者在text/html下不写doctype声明来触发。文档如果使用新的或者未知的doctype,或者作为XML传送,则会按标准模式处理。像Mozilla和Opera一样,我们在怪癖模式下引入的非标准的行为是相当有限的;其他那些bug,如果对于Web兼容性没有特别重大的影响,则在所有模式下都会被修复。这与IE的方式截然相反,IE的方式是在怪癖模式中完全沿袭旧的行为。
We actually have a few modes besides that. A handful of doctypes trigger what is called “almost standards mode”, which is standards mode with one minor deviation, mainly affecting how images lay out in table cells; this is copied from Mozilla. In addition, we have a few rendering and DOM differences between documents served with an XML MIME type and those served with an HTML MIME type, but we are trying to reduce these over time. And finally, we have a Dashboard compatibility mode that has a few extra quirks beyond quirks mode, to handle Dashboard widgets that were coded to depend on old WebKit bugs.
我们其实还有一些其他的模式。有一些doctype会触发所谓“几乎标准模式”,也就是标准模式附带一个小例外,主要是影响图像在表格单元中的布局方式【即在单元格中的图像会紧贴边界,而不会因默认的baseline对齐方式留下空白】;这一方式是从Mozilla照搬来的。此外,文档按照XML MIME类型传输或HTML MIME类型传输,在呈现效果和DOM模型上还有少许不同之处,但是我们试图逐渐消除这些不同。最后,我们还有一个Dashboard兼容模式,它在怪癖模式之外还有一些额外的怪癖,以满足一些Dashboard微件(widget)的需求,它们的代码依赖某些旧的WebKit的bug。
Maintainability
可维护性
As you can see, this is quite a few modes already. Having lots of modes raises a number of challenges for maintaining the engine.
如你所见,我们已经有好些不同的模式了。这对于引擎的维护来说是很大的挑战。
First, the more different modes there are, the harder it is to fully test the engine. We have an aggressive approach to automated testing, and our layout tests often find critical problems before they are shipped or even checked in. Having more modes means many things need to be tested in multiple modes. So that’s more tests, more time for developers to run the test suite, and more chances of missing code coverage, especially when different modes interact.
首先,模式越多,越难以对引擎进行全面测试。我们采用积极的自动测试方式,通过我们的布局测试,那些严重的问题一般总能在正式发布甚至签入代码库之前就被发现。更多的模式意味着有许多事情需要在多个模式中进行测试。也就是要写更多的测试,开发者要花更多的时间来运行测试套件,并且更有可能达不到代码的测试覆盖度,特别是当不同模式相互作用时。
Second, implementing mode switches hurts hackability of the code. Hackability is one of our core project goals. It’s part of the reason new contributors can dive in quickly, and enables us to rapidly develop new features, while improving performance, stability, and security.
其次,实现模式切换会损害代码的hackability。hackability是我们这个项目的核心目标之一。新的贡献者之所以能快速切入,hackability是很重要的一点,它让我们在改进性能、稳定性和安全的同时,也能快速开发新的特性。
There’s two plausible ways to add more modes. One is to make all engine changes conditional on a version flag. Another is to have a whole second copy of the layout code. Either would be a huge additional barrier to entry for developers, and would make it harder to maintain the code.
要增加新的模式,有两种看似可行的方式。一种是引擎所有的改动都加上对版本号的条件判断。另一种则是完整拷贝一份布局代码。无论哪种方式,对于开发者的参与来说都是一个巨大的额外障碍,也使得代码更难维护。
So, bottom line, we’d like to see fewer modes, not more.
所以基本上,我们希望模式更少,而不是更多。
Mobile-Readiness
移动适用性
In addition to maintainability, an important feature of the WebKit engine is the ease with which it is deployed on limited-capability devices such as mobile phones. Some of the more prominent examples include Nokia’s S60 Browser, Apple’s iPhone and iPod touch, and Google’s Android platform. These and other products all include a full-powered version of WebKit, no compromises.
除了可维护性之外,WebKit引擎的一个重要特色是易于部署到功能有限的设备,如移动电话上。大家熟知的例子包括诺基亚的S60浏览器、苹果的iPhone和iPod touch,以及谷歌的Android平台。这些产品都包含了一个WebKit的全功能版本,没有损失任何功能。
However, having more mode switches cuts against this. The extra code (possibly whole extra copies of the engine, at the very least a whole lot of extra if statements) would be a significant burden on mobile devices. It’s not very well aligned with our mission of staying lean and mean.
然而,如果有更多的模式切换,则会损害这一点。额外的代码(可能是所有额外的引擎拷贝,或者至少是大量额外的if语句)对于移动设备来说会是严重的负担。这与我们至精至简(lean and mean)的目标不相一致。
待续……
Versioning, Compatibility and Standards
版本、兼容性以及标准
Posted by Maciej Stachowiak on Tuesday, January 22nd, 2008 at 11:51 pm
Maciej Stachowiak发表于2008年1月22日星期二
The new IE8 version targeting switch, announced on IEBlog and A List Apart, has been the talk of the web. Some web standards experts, like Eric Meyer and Jeffrey Zeldman see the switch in a positive light. Others, including Dean Edwards, Robert O’Callahan and Anne van Kesteren think the proposal is a bad idea.
IEBlog和A List Apart上声明了新的IE8的版本目标切换特性(version targeting switch),这成为了最近谈论的焦点。一些web标准专家,如Eric Meyer和Jeffrey Zeldman对这种切换特性给予了正面评价,而其他人,包括Dean Edwards、Robert O'Callahan和Anne van Kesteren,则认为这一提案是个糟糕的主意。
We don’t talk much about what other browsers are doing on this blog. While we’re happy to collaborate on web standards and testing, and sometimes share a little friendly rivalry, we try to keep our focus on making the best Web browser engine we can, not on the competition. So we’re not going to give in-depth commentary on the IE team’s decision. Straddling compatibility and Web standards is a tough job requiring tough choices.
在本blog【webkit的官方blog】上我们不会去讨论其他浏览器的所作所为。尽管我们很高兴在Web标准和测试方面进行合作,有时还参与一点友好的竞争,但我们希望把关注点集中于如何尽我所能创造最好的Web浏览器引擎,而不是竞赛上。所以我们不会对IE团队的决定多嘴多舌。平衡兼容性和Web标准总是一项艰难的工作,需要做出艰难的选择。
However, some have asked if other browser engines, including WebKit, would adopt a similar version switch. For example, the original announcement asks, “I, for one, hope other browser vendors join Microsoft in implementing this functionality.” I can’t make any definitive statement for all time, but such an approach does not seem like a good idea to us currently. Why, you may ask? There are a few reasons.
然而,有人问其他浏览器引擎,包括WebKit,是否能引入类似的版本切换机制。比如,最初声明中提到,“我本人,希望其它浏览器厂商也能和微软一起,实现该特性。”我并不能做出权威声明,但是可以说,这一想法对我们目前来说并不是一个好主意。
Mode Switches in WebKit
WebKit中的模式切换
WebKit, like most browser engines, has a quirks mode that is triggered by certain old HTML doctypes, or lack of a doctype declaration in text/html. Documents with newer or unknown doctypes, or sent as XML, are processed in standards mode. Like Mozilla and Opera, we apply only a limited set of nonstandard behaviors in quirks mode, and otherwise fix bugs across both modes, if they do not have a specific significant impact on Web compatibility. This is in contrast to the IE approach of completely freezing old behavior in quirks mode.
WebKit,正如大多数浏览器引擎一样,具有怪癖模式,可由特定的老的HTML doctype或者在text/html下不写doctype声明来触发。文档如果使用新的或者未知的doctype,或者作为XML传送,则会按标准模式处理。像Mozilla和Opera一样,我们在怪癖模式下引入的非标准的行为是相当有限的;其他那些bug,如果对于Web兼容性没有特别重大的影响,则在所有模式下都会被修复。这与IE的方式截然相反,IE的方式是在怪癖模式中完全沿袭旧的行为。
We actually have a few modes besides that. A handful of doctypes trigger what is called “almost standards mode”, which is standards mode with one minor deviation, mainly affecting how images lay out in table cells; this is copied from Mozilla. In addition, we have a few rendering and DOM differences between documents served with an XML MIME type and those served with an HTML MIME type, but we are trying to reduce these over time. And finally, we have a Dashboard compatibility mode that has a few extra quirks beyond quirks mode, to handle Dashboard widgets that were coded to depend on old WebKit bugs.
我们其实还有一些其他的模式。有一些doctype会触发所谓“几乎标准模式”,也就是标准模式附带一个小例外,主要是影响图像在表格单元中的布局方式【即在单元格中的图像会紧贴边界,而不会因默认的baseline对齐方式留下空白】;这一方式是从Mozilla照搬来的。此外,文档按照XML MIME类型传输或HTML MIME类型传输,在呈现效果和DOM模型上还有少许不同之处,但是我们试图逐渐消除这些不同。最后,我们还有一个Dashboard兼容模式,它在怪癖模式之外还有一些额外的怪癖,以满足一些Dashboard微件(widget)的需求,它们的代码依赖某些旧的WebKit的bug。
Maintainability
可维护性
As you can see, this is quite a few modes already. Having lots of modes raises a number of challenges for maintaining the engine.
如你所见,我们已经有好些不同的模式了。这对于引擎的维护来说是很大的挑战。
First, the more different modes there are, the harder it is to fully test the engine. We have an aggressive approach to automated testing, and our layout tests often find critical problems before they are shipped or even checked in. Having more modes means many things need to be tested in multiple modes. So that’s more tests, more time for developers to run the test suite, and more chances of missing code coverage, especially when different modes interact.
首先,模式越多,越难以对引擎进行全面测试。我们采用积极的自动测试方式,通过我们的布局测试,那些严重的问题一般总能在正式发布甚至签入代码库之前就被发现。更多的模式意味着有许多事情需要在多个模式中进行测试。也就是要写更多的测试,开发者要花更多的时间来运行测试套件,并且更有可能达不到代码的测试覆盖度,特别是当不同模式相互作用时。
Second, implementing mode switches hurts hackability of the code. Hackability is one of our core project goals. It’s part of the reason new contributors can dive in quickly, and enables us to rapidly develop new features, while improving performance, stability, and security.
其次,实现模式切换会损害代码的hackability。hackability是我们这个项目的核心目标之一。新的贡献者之所以能快速切入,hackability是很重要的一点,它让我们在改进性能、稳定性和安全的同时,也能快速开发新的特性。
There’s two plausible ways to add more modes. One is to make all engine changes conditional on a version flag. Another is to have a whole second copy of the layout code. Either would be a huge additional barrier to entry for developers, and would make it harder to maintain the code.
要增加新的模式,有两种看似可行的方式。一种是引擎所有的改动都加上对版本号的条件判断。另一种则是完整拷贝一份布局代码。无论哪种方式,对于开发者的参与来说都是一个巨大的额外障碍,也使得代码更难维护。
So, bottom line, we’d like to see fewer modes, not more.
所以基本上,我们希望模式更少,而不是更多。
Mobile-Readiness
移动适用性
In addition to maintainability, an important feature of the WebKit engine is the ease with which it is deployed on limited-capability devices such as mobile phones. Some of the more prominent examples include Nokia’s S60 Browser, Apple’s iPhone and iPod touch, and Google’s Android platform. These and other products all include a full-powered version of WebKit, no compromises.
除了可维护性之外,WebKit引擎的一个重要特色是易于部署到功能有限的设备,如移动电话上。大家熟知的例子包括诺基亚的S60浏览器、苹果的iPhone和iPod touch,以及谷歌的Android平台。这些产品都包含了一个WebKit的全功能版本,没有损失任何功能。
However, having more mode switches cuts against this. The extra code (possibly whole extra copies of the engine, at the very least a whole lot of extra if statements) would be a significant burden on mobile devices. It’s not very well aligned with our mission of staying lean and mean.
然而,如果有更多的模式切换,则会损害这一点。额外的代码(可能是所有额外的引擎拷贝,或者至少是大量额外的if语句)对于移动设备来说会是严重的负担。这与我们至精至简(lean and mean)的目标不相一致。
待续……
发表评论
-
ms is wrong AGAIN
2013-12-06 21:08 2973微软的Web工程师写了这篇文章Vendor Prefixes ... -
为后代选择器和ID选择器而辩护
2013-04-20 06:57 7075【本文译自 Zeldman (作为前端工程师,不要告诉我你不知 ... -
My Opinion about so-called "CSS Framework"
2012-10-27 12:54 2492There are many so-called " ... -
document.enableStyleSheetsForSet() 的兼容
2011-06-17 16:27 3505可能有不少同学已经了 ... -
再论“像素(px)”
2011-03-13 14:37 0两年之前我写了一篇文 ... -
再谈某些所谓CSS最佳实践
2010-12-23 01:59 10111最近看了国内某位前端工程师今年出版的新书,其中讨论CSS的部分 ... -
webkit上multicolumn的bug和解决技巧一则
2010-12-04 12:03 4047webkit开始支持多栏属性 ... -
关于lang()语言伪类选择器的提案
2010-10-26 00:36 0本文发端“中文HTML5同 ... -
关于样式类(Style Class)
2009-10-22 11:37 9951我们知道HTML和CSS是正交 ... -
Meta CSS —— 一个Anti Pattern的典型
2009-10-21 02:15 11721关于Meta CSS框架,可以 ... -
像素(px)到底是个什么单位
2009-04-25 01:46 40435px,对于许多网页设计 ... -
有关IE的CSS的几个偶得
2008-08-25 19:13 2220除了个别几个CSS属性,IE(包括IE7)并不支持一般性的in ... -
版本、兼容性以及标准 续(翻译)
2008-02-10 19:40 4760续前半部分。 Commitment ... -
Web未来的分歧
2008-02-09 05:41 2285Dean Edwards的新的一篇blog是几段引用,抄录并勉 ... -
IE神经刀
2008-02-01 15:13 4946我想,你可能已经知道长期以来使用自定义标签的困难是什么。 对, ... -
《精通CSS》读书笔记(七)
2007-09-05 02:37 5596续上篇 在第5章的最后,作者对dl做了简短的说明,作者不是很 ... -
IE中IMG元素上应用padding的奇特bug
2007-09-02 23:43 6024最近又(又说了“又”)发现了一个IE的奇特bug。 我们知道 ... -
关于list(ol和ul)的padding和margin
2007-09-02 19:08 9458在《CSS Mastery》一书的第5章中,作者说IE和Ope ... -
《精通CSS》读书笔记(六)
2007-08-29 20:22 6332续上篇。 第5章 关于列表,首先,由于list-style ... -
《精通CSS》读书笔记(五)
2007-08-28 16:06 5664续上篇。 第4章 本章 ...
相关推荐
- **GB/T13926.1—1992《工业过程测量和控制装置的电磁兼容性总论》**:概述了工业过程测量和控制装置的电磁兼容性要求,对应国际标准IEC801—1。 - **GB/T13926.2—1992《静电放电要求》**:针对静电放电提出了具体...
1. **兼容性标准**:标准的核心在于定义了如何选择和评估气瓶材料与气体之间的兼容性。这关系到气瓶的安全性和耐用性,防止因化学反应导致的材料腐蚀或失效。 2. **金属材料**:第一部分详细阐述了金属材料的兼容性...
EN IEC 61000-6-1-2019中文 电磁兼容性(EMC) --第6-1部分: 通用标准--住宅、 商业和轻工业环境的抗扰度标准.pdf
EN 50121-3-2:2016 铁路应用 电磁兼容性 第3-2部分:机车车辆 设备标准发布于2016年,是欧洲电工标准化委员会(CENELEC)颁布的欧洲标准。该标准规定了铁路应用中机车车辆设备的电磁兼容性要求,以确保铁路系统的...
综上所述,《EN IEC 61000-6-3-2021》标准在住宅环境的电磁兼容性领域起到了关键作用,对于设备制造商、测试机构以及消费者都具有重要的指导意义。通过遵循这些标准,我们可以创建一个更加和谐的电磁环境,确保设备...
7. 兼容性:BPMN2.0的兼容性,包括与其他标准的兼容性。 BPMN2.0标准规范的主要特点包括: 1. 可扩展性:BPMN2.0支持自定义扩展,允许用户根据需要添加新的元素和属性。 2. 可读性:BPMN2.0的图形符号易于读懂和...
标准内容包括定义、材料选择、兼容性标准以及详细的气体/材料NQSAB兼容代码。这些代码提供了气体与不同金属材料相容性的指导,确保气瓶和阀门在接触特定气体时不会发生化学反应导致材料失效。 标准的制定过程涉及...
USB 3.0,中文翻译为“通用串行总线3.0”,是USB接口标准的一个重要升级版本,旨在解决高速数据传输、易用性和...USB 3.0的成功在于其易用性、扩展性以及与前代版本的兼容性,使得它在各种应用领域都得到了广泛采用。
9. 兼容性与移植性:SQLite是跨平台的,可以在多种操作系统上运行,包括Windows、Linux、macOS等。它的兼容性使得数据在不同系统间迁移变得容易。 10. 应用场景:SQLite常用于移动应用、桌面软件、Web应用的本地...
这份标准是针对铁路行业的特殊环境,特别是机车车辆及其内部设备的电磁兼容性设计和测试。 1. **电磁兼容性基础**: - 电磁兼容性的概念是确保电子设备在电磁环境下不会相互干扰,同时自身也能抵御外部电磁干扰,...
对于C语言程序员而言,遵守C11标准能够确保他们编写的代码在不同平台和编译器之间具有良好的兼容性和可移植性。同时,这个标准也帮助实现者理解他们必须支持的语言特性。总之,C11标准代表了C语言的发展方向,它不仅...
### IEC61968标准翻译专题清单 #### 标准概述 IEC61968标准是一系列由国际电工委员会(IEC)制定的国际标准,旨在为电力公用事业提供一套全面的集成应用解决方案。该标准覆盖了从远程控制到信息技术应用等众多领域...
《BS EN IEC 55014-1-2021中文 电磁兼容性-家用电器、电动工具和类似设备的要求-第1部分》是针对家用电器、电动工具及类似设备电磁兼容性(EMC)的标准文档,旨在确保这些设备在实际使用环境中能够和谐共存,不会对...
8. **电磁兼容性(EMC)**:微波炉作为家用电器,需要遵守电磁兼容性标准,以免对其他电子设备产生干扰。 9. **故障处理和维修**:标准可能包含有关微波炉故障诊断和维修的指南,帮助制造商和维修人员快速定位和...
VPX标准旨在满足这些需求,并提供后向兼容VME总线电气、软件和选定的机械装置。 4. VPX标准中的技术特点: VPX标准包含了多种高速接口技术,包括多千兆位差分技术、SerialRapidIO、PCI Express、Hypertransport、...
这需要考虑不同的浏览器API兼容性,以及可能需要的polyfills来提供缺失的功能。 8. **性能优化**: 在大型项目中,加载所有语言的资源文件可能会导致性能问题。一种常见做法是按需加载,只加载当前语言的资源,...
同时,该协议也强调了向前和向后兼容性,确保不同版本的HTTP协议能够相互理解和交互。 总之,《rfc2616中文翻译完全版本》不仅是一份技术文档,更是理解现代Web工作原理和设计思想的重要资料。通过对HTTP/1.1协议的...
《BS EN IEC 55014-1-2021中文 电磁兼容性-家用电器、电动工具和类似设备的要求-第1部分》是关于电磁兼容性(Electromagnetic Compatibility, EMC)标准的重要文档,适用于家用电器、电动工具以及相关设备的设计和...
总而言之,VITA62.0-2016 VPX电源设计标准是电源设计工程师在设计用于VPX机箱的电源模块时的重要参考,它确保了电源模块的设计与制造的标准化、安全性以及与VPX平台的兼容性。同时,该标准也强调了标准更新的可能性...
3. **默认方法**:在接口中添加了默认方法,允许接口提供默认实现,避免了破坏现有实现的兼容性问题,同时增强了接口的功能。 4. **新的日期和时间API**:JDK 1.8替换旧的日期和时间类,引入了`java.time`包,提供...