code-js
通常使用babel會間接的引入core-js
core-js提供了es5、es6的polyfills,包括promises、symbols、collections、iterators、typed arrays等等,並可以按需加載,使用它不會污染全局命名空間。
注意點:
-
polyfills
前端通常在開發時需要考慮到瀏覽器對js,html5的支持,這些兼容都可以使用polyfills去處理。
Polyfills 是由 RemySharp 提出的一個術語。如果瀏覽器中存在該功能,則polyfill可以讓瀏覽器執行其操作,否則,polyfill會插入缺少的功能。填補了舊版瀏覽器的空白,然後就可使用缺失功能。 -
html5shim
html5shim(也就是 html5shiv) 能夠自動完成了設置 IE 瀏覽器和新語義元素的兼容性。
主要解決HTML5提出的新的元素不被IE6-8識別,這些新元素不能作爲父節點包裹子元素,因此,即使舊的 IE瀏覽器顯示了 HTML5 的新語義元素,但不能應用CSS樣式。
解決方式:
讓CSS 樣式應用在未知元素上只需執行 document.createElement(elementName)
即可實現。html5shiv就是根據這個原理創建的。使用:
<!--[if lt IE 9]>
<script type="text/javascript" src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
-
shim 和 polyfill
-
localStorage的兼容
HTML5 提供了兩種在客戶端存儲數據的新方法:
localStorage - 沒有時間限制的數據存儲
sessionStorage - 針對一個 session 的數據存儲
其中localStorage 是最常用的,但是IE8以下不支持該特性。
使用ployfiller可以讓舊版的瀏覽器也支持這樣的特性。
Storage polyfiller
store.js
AmplifyJS
Remy Sharp 的Storage polyfiller完美的模仿 HTML5 localStorage API
store.js 和 AmplifyJS 存儲模塊提供了很大範圍的舊瀏覽器兼容支持
- Modernizr
Modernizr 是一個 JavaScript 庫,用於檢測用戶瀏覽器的 HTML5 與 CSS3 特性。它內建了 html5shim 功能。