JavaScript标准化模块库
2021-03-23 本文已影响0人
雷雨leiyu
标准化模块
随着ECMAScript的迅速成长以及主流浏览器的频繁更新换代,每年都会有新的API,这就引出了一个概念叫做polyfill(补丁),就是用API使得在不兼容某些特性的浏览器上使用该新特性。
core.js
- babel-polyfill的底层依赖,通过ES3实现了ES2017的原生标准库,同时还要严格遵循规范;
- 提供了es5,es6的polyfill,包括:promises, symbols, collections, iterators, typed arrays, setImmediate以及ES7+ proposals等;
es5-shim与es6-shim
- es5与es6兼容库,目的是使得低版本的浏览器能够兼容es5或者es6语法。
- 目前Chrome,Firefox,IE9+ 都是支持 es5 语法的。我们只需要对 IE 6/7/8 做兼容处理即可。
// 浏览器型号与版本
var sys = {browser:null, version: null};
var ua = navigator.userAgent.toLowerCase();
// mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko) chrome/88.0.4324.96
var match = ua.match(/(msie|firefox|chrome|opera|version)\/(\d)+/i)
sys.browser = match[1];
sys.version = match[2];
// HTML引入shim
<!--[if lt IE 9]>
<script src="es5-shim/es5-shim.min.js"></script>
<script src="es6-shim/es6-sham.min.js"></script>
<![endif]-->
// JS动态加入
var scriptNode = document.createElement('script');
scriptNode.setAttribute('type', 'text/javascript');
scriptNode.setAttribute('src', '"es5-shim/es5-shim.min.js');
document.head.appendChild(scriptNode);