Vuejs.org: Could vue.js support IE8 and below ?

Created on 25 Dec 2014  ·  4Comments  ·  Source: vuejs/vuejs.org

"avalon是一款基于 Object.defineProperty 与 VBScript 实现属性监控变动的MVVM框架,因此性能比基于脏检测的angular来得更好,使用方法也比基于属性转函数的knockout来得直接便捷。简单易用易上手兼容性好的是其最大的特点"

vue.js是否可以通过vbscript扩大浏览器支持?

Most helpful comment

需要支持 IE8 的话用 avalon 就好啦,我对 IE8 和以下不感兴趣,也没有精力去支持。

All 4 comments

需要支持 IE8 的话用 avalon 就好啦,我对 IE8 和以下不感兴趣,也没有精力去支持。

好吧。个人还是很喜欢vue.js的代码风格,设计思路。。

1 先来看下Vue为什么不能兼容IE8

根源:ie8及一下 不支持Object.defineProperty 方法,但这个是vue实现响应式的所必须的,所以从Vue的源码来看根本就无法支持IE8;

再者来说,Vue也需要支持Promise的支持,IE8同样不支持Promsie;

2 看下Vue的作者对于不能兼容IE8的态度

尤雨溪对于Vue不支持IE8的态度

以下是尤雨溪 的原话:

*👍需要支持 IE8 的话用 avalon 就好啦,我对 IE8 和以下不感兴趣,也没有精力去支持。 *

avalon.js是基于Object.defineProperty实现的双向数据绑定的,但是对于IE6/7/8浏览器的不兼容就使用VBscript做兼容处理。但Object.defineProperty是缺陷的,兼容性不好,早期的标准浏览器需要用_defineGetter_, _defineSetter_, IE6,IE7,IE8(因为IE8的Object.defineProperty也是有缺陷的)需要VBScript,但是Vue的源码并没有做VBscript这样的实现,所以根本无法兼容IE8

也就是说,avolon通过VBScriptVBscript wiki类似于重写了浏览器的功能才能使用Object.defineProperty,但是Vue的作者并没有这么做

3 在从Vue官网上看下为什么不支持IE8

官网解释不支持IE8

Vue.js会对所有的实现双向绑定的数据,使用 Object.defineProperty 把这些属性全部转为 getter/setter。Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是为什么 Vue 不支持 IE8 以及更低版本浏览器的原因。

注意这里:Object.defineProperty是无法通过垫板实现的一个方法,是和浏览器自身有关系的,所以Vue从根本上来说本来就无法支持IE8;

Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器

可以通过此查看兼容 ECMAScript 5 的浏览器

4 对于下面这种支持IE8的解决方案:

solution——>“vue在开发环境确实是只能用chrome,但是在打包的时候可以打包成es4,这样的话vue开发的页面其实也可以用于ie8”

猜测的成分很大,实际可实施性为几近为0;

从Vue的官网以及Vue框架作者也都明言说了无法支持IE8,所以我们还是不要做无谓的挣扎了

5 浏览器市场份额

第1名:Google的Chrome浏览器,其全球市场份额为64.72%

第2名:Mozilla Firefox,其市场份额为12.21%;

第3名:微软的IE浏览器,其市场份额为7.71%;

第4名:苹果的Safari浏览器,其市场份额为6.29%;

第5名:微软的Edge浏览器,其市场份额为4.18%;

第6名:Opera浏览器,其市场份额为2.31%;

其他浏览器的市场份额合计为2.58%。

6 未来的框架发展

目前三大主流框架,发展的过程中都默默选择不再支持IE8及以下那些上古时代浏览器,不妨跟上时代的主流,做一些取舍。如果实在是必须支持IE8,那么还是低版本的React或者avolon

1 先来看下Vue为什么不能兼容IE8

根源:ie8及一下 不支持Object.defineProperty 方法,但这个是vue实现响应式的所必须的,所以从Vue的源码来看根本就无法支持IE8;

再者来说,Vue也需要支持Promise的支持,IE8同样不支持Promsie;

2 看下Vue的作者对于不能兼容IE8的态度

尤雨溪对于Vue不支持IE8的态度

以下是尤雨溪 的原话:

*👍需要支持 IE8 的话用 avalon 就好啦,我对 IE8 和以下不感兴趣,也没有精力去支持。 *

avalon.js是基于Object.defineProperty实现的双向数据绑定的,但是对于IE6/7/8浏览器的不兼容就使用VBscript做兼容处理。但Object.defineProperty是缺陷的,兼容性不好,早期的标准浏览器需要用_defineGetter_, _defineSetter_, IE6,IE7,IE8(因为IE8的Object.defineProperty也是有缺陷的)需要VBScript,但是Vue的源码并没有做VBscript这样的实现,所以根本无法兼容IE8

也就是说,avolon通过VBScriptVBscript wiki类似于重写了浏览器的功能才能使用Object.defineProperty,但是Vue的作者并没有这么做

3 在从Vue官网上看下为什么不支持IE8

官网解释不支持IE8

Vue.js会对所有的实现双向绑定的数据,使用 Object.defineProperty 把这些属性全部转为 getter/setter。Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是为什么 Vue 不支持 IE8 以及更低版本浏览器的原因。

注意这里:Object.defineProperty是无法通过垫板实现的一个方法,是和浏览器自身有关系的,所以Vue从根本上来说本来就无法支持IE8;

Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器

可以通过此查看兼容 ECMAScript 5 的浏览器

4 对于下面这种支持IE8的解决方案:

solution——>“vue在开发环境确实是只能用chrome,但是在打包的时候可以打包成es4,这样的话vue开发的页面其实也可以用于ie8”

猜测的成分很大,实际可实施性为几近为0;

从Vue的官网以及Vue框架作者也都明言说了无法支持IE8,所以我们还是不要做无谓的挣扎了

5 浏览器市场份额

第1名:Google的Chrome浏览器,其全球市场份额为64.72%

第2名:Mozilla Firefox,其市场份额为12.21%;

第3名:微软的IE浏览器,其市场份额为7.71%;

第4名:苹果的Safari浏览器,其市场份额为6.29%;

第5名:微软的Edge浏览器,其市场份额为4.18%;

第6名:Opera浏览器,其市场份额为2.31%;

其他浏览器的市场份额合计为2.58%。

6 未来的框架发展

目前三大主流框架,发展的过程中都默默选择不再支持IE8及以下那些上古时代浏览器,不妨跟上时代的主流,做一些取舍。如果实在是必须支持IE8,那么还是低版本的React或者avolon

道理都懂,但是你不妨碍我们起初选择Vue已经最终客户反悔的情况发生,对于大部分银行来说,这是一个无法变化或者极其缓慢变化的事情

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nerdoc picture nerdoc  ·  5Comments

emileber picture emileber  ·  5Comments

jgtorrejon picture jgtorrejon  ·  5Comments

ankitsinghaniyaz picture ankitsinghaniyaz  ·  4Comments

philoyou11 picture philoyou11  ·  4Comments