初次了解polyfill
初次了解polyfill
最近经常看到这个词,知道这是处理浏览器相关的东西,但是不知道怎么用
参考
首先要了解一下,ECMAScript5(2009),大部分浏览器都支持,参考资料,比如这个Object/array literal extensions - Getter accessors
,在w3c上看js - js objects - object accessors,在mdn上看js - js reference - functions - getter,看Specifications有个ECMAscript5.1(ECMA-262),状态是Standard, 然后看Browser compatibility上Desktop browsers,get在IE9是支持的,就是说IE8不支持。
查看wiki关于polyfill的介绍, 这里面提到了es5-shim, 说的是ECMAScript 5th Edition。
然后看一下某个polyfill的网站, 可以看到在SUPPORTED BROWSERS
看到Internet Explorer最小支持的版本是8, 然后可以自己生成需要的polyfill文件,不过没看明白这上面是不是很多内容都不支持?
在mdn中,一般的词条后面都会有Browser compatibility
在这个ECMAScript兼容性表中查很详细,不过只提到了IE11
在babel的官方查文档,即Docs - Usage - polyfill
里面,有提到了@babel/polyfill这个包,这上面提到Babel 7.4.0这个包就被弃用了
在babel的官网查看General - Caveats
,里面提到了ES5和Internet Explorer,可以说使用@babel/polyfill可以兼容一些老的浏览器
在webpack官网查文档,在DOCUMENTATION - CONCEPTS - Concepts - Browser Compatibility
提到兼容性问题,然后webpack支持在所有服从ES5的浏览器(IE8和以下版本不支持),就是说经过webpack打包的文件,基本支持大部分浏览器,IE8老古董了,估计要用Polyfill了。
在webpack的DOCUMENTATION - GUIDES - Shimming - Loading Polyfills
说到如何加载polyfill, 在DOCUMENTATION - LOADERS - babel-loader - Babel is injecting helpers into each file and bloating my code!
这里有提到babel的runtime包是不是包含了polyfill。
测试案列:
比如这样一个代码
let a = [1,2,3]
let b = [4,5,6]
let c = [...a,...b]console.log(c)// 期待输出是[1,2,3,4,5,6]
这里用到了spread syntax,搜索a better way to concatenate arrays,这个属于spread in array literals,然后看到Internet Explorer不支持。
使用Chrome打开控制台看到了输出没报错,使用Internet Explorer11的话,就会看到报错syntax error
使用webpack进行打包,在只有webpack和webpack-cli的情况下使用
使用打包后的js文件,使用Internet Explorer11发现结果是正常输出了。不过Internet Explorer11以下就不知道了,很可能就是不支持的,之前提到这些浏览器要服从ECMAScript5,就是看这个表
这里没有我还安装不了IE11以下的版本,就算安装也比较麻烦,所以这里就不测试了。
不过文章中提到要加载Polyfill。
下面测试一下ES2016的语法可以用不
测试案例:
var array1 = [1,2,3]console.log(array1.includes(2))// 期待输出是true
这个在mdn中js -js ref - standard built-in objects - Array - Array.prototype.includes()
在IE11中测试报错Object doesn't support property or method 'includes'
,使用chrome的话输出true
,现在用webpack打包npx webpack
,继续测试IE11还是这个报错。
不过发现IE11浏览器的可以模拟低版本的IE浏览器,11,10,9,8,7,5这几个版本。
总结:
一般自己先了解一下哪些方法某些浏览器可能不支持,然后看Specifications(规范)知道这是ECMAScript 2015语法,看Browser compatibility(浏览器兼容性)看到,使用webpack打包基本能处理ECMAScript2015成ECMAScript5,而且旧浏览器的话需要使用polyfill,然后想要处理ECMAScript2016+的话,可能就要用到babel了。
初次了解polyfill相关推荐
- celery的初次使用
celery的初次使用 基本步骤: 选择并且安装一个消息中间件(Broker) 安装 Celery 并且创建第一个任务 运行职程(Worker)以及调用任务 跟踪任务的情况以及返回值 应用 创建第一个 ...
- 阿里云服务器ECS Ubuntu16.04 初次使用配置教程(图形界面安装)
阿里云服务器ECS Ubuntu16.04 初次使用配置教程(图形界面安装) 2019-01-23 22:55:50 laugh12321 阅读数 851更多 分类专栏: ECS Ubuntu 版权声 ...
- 人脸识别算法初次了解
人脸识别算法初次了解 这是转载别人的帖子,认为好,大家一块学习http://www.cnblogs.com/guoyiqi/archive/2011/07/28/2129300.html 前言 在写此 ...
- Cash Shuffle初次测试成功,BCH隐私研究逐步推进
早在去年12月,一项名为 Cash Shuffle的比特币现金项目就被提了出来,该项目旨在通过混淆交易信息来保证BCH交易隐私.该项目在当时引起了社区的热议,因为隐私属性一直是加密货币最重要的属性之一 ...
- MySQL的安装和初次使用
MySQL的安装和初次使用 1.去数据库的官网http://www.mysql.com下载MySQL: 2.找到如下图所示: 下好后按照next/execut安装即可,会有设置密码页: 安装好以后可能 ...
- position:sticky 的 polyfill——stickyfill 源码浅析
本人最近在修改 blogsue 中的样式时,使用到了 position: sticky.话不多说,开始主要内容. 定义 position: sticky 是 CSS position 属性的一个新值. ...
- 初次安装Magento商城 后台报错的解决方案
今天初次安装Magento, 开始装的是英文版,后来又找到中文版 安装后在后台都有同一个错误,就是登陆后台,随便点击一个链接,都有报错 There has been an error processi ...
- Struts2笔记——初次框架配置
1.Struts2简介 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...
- git 上传代码到指定仓库_初次使用git上传代码到github远程仓库
一.新建代码库 注册好github登录后,首先先在网页上新建代码库. 点击右上角"+"→New repository 进入如下页面:按照要求填写完成后,点击按钮创建代码库创建成功. ...
最新文章
- Swift -布局框架SnapKit使用
- js中的装饰器执行顺序
- vscode如何设置自动保存时自动格式化代码
- msp430g2553串口接受数据_MSP430G2553串口通信
- php 逗号运算符,基础篇PHP运算符总结宝典
- C语言程序设计 | 模拟实现内存操作函数:strncpy, strncat, strncmp, memcpy, memmove
- shiro 删除用户session_我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录)...
- linux 查找文件夹_用python打造一个基于socket的文件(夹)传输系统
- 从Mysql某一表中随机读取n条数据的SQL查询语句
- Struts2中Session的使用
- servlet url-pattern配置中 / 和 /* 的区别 记录
- 脉脉第一干货贴,互联网职场那点事,关于面试、绩效、晋升、职业规划。
- python selenium po_python+selenium基于po模式的web自动化测试框架
- 21天Jmeter打卡Day10线程用户之setUp和tearDown
- wordpress建立数据库连接时出错
- opencv学习笔记(三)颜色转换 cvtColor
- 40163 php,【PHP】微信支付JsApi 40163错误,_PHP_ 少侠科技
- c语言编程利用泰勒级数,C语言程序设计:用泰勒级数计算cos
- 单链表的逆置(递归和非递归)
- 前端开发者思考:假如5年后你是开发总监
热门文章
- c语言strlen用法,如何使用c语言中的strlen()函数
- 百度定位实时获取位置android,通过百度定位sdk获取实时位置
- 【智能工厂】PPT案例分享:智慧工厂解决方案
- 【云扩RPA】HowToEmailAutomation
- 百度智能小程序巡检调度方案演进之路
- win10下解决编译环境find_fast_cwd: WARNING: Couldn't compute FAST_CWD pointer
- Java开发的几个就业方向
- 大数据生态(六)zookeeper集群部署(Linux和Windows[含一键启动脚本])
- win10下的dos基本命令
- 关于Gson的TypeToken