2014-12-16 3 views
39

В чем разница между прокладкой и обманом?Shim vs. Sham: В чем разница?

Достаточно ли включить es5-shim.min.js и es6-shim.min.js, или я должен также включить es5-sham.min.js и es6-sham.min.js?

+1

Я хотел бы иметь возможность слепо поддерживать как можно больше функций ES5 и ES6 во всех браузерах. Это более полезно? – garbanzio

+0

@garbanzio: Я не думаю, что это разумный подход. Вы не сможете использовать все функции вслепую (так как не все из них могут быть эмулированы), поэтому вам все равно придется проверять каждую функцию. И когда вы это сделаете, вы также можете решить, нужны ли вам обманы или нет. –

ответ

33

В соответствии с this Github page прокладки включают в себя все обезьяны-патчи, которые точно представляют функции ES5.

Другими словами: вы можете использовать функции, предоставляемые этими файлами, как если бы вы использовали собственно ES5.

Шаблоны, однако содержат те функции, которые нельзя эмулировать другим кодом. Они в основном предоставляют API, поэтому ваш код не сбой, но они не обеспечивают фактическую функциональность.

Какие из них вам нужны? Это зависит от того, как вы пишете свой код. Если вы используете только функции, предоставляемые прокладками, включите их. Если вы также захотите (опционально) использовать функции из shams, вам нужны оба из них.

+1

[Википедия страница на полиполках] (http://en.wikipedia.org/wiki/Polyfill#es5-shim) описывает ее также довольно лаконично. – hon2a

+1

Спасибо. Вот что я собираю из двух источников, упомянутых выше: От ES5 github repo ... «Во многих случаях это означает, что эти притворы приводят к тому, что многие методы ES5 бесшумно терпят неудачу. Решите тщательно, действительно ли это то, что вы хотите». От wikipedia ... «es5-sham.js содержит частичные реализации других методов, которые слишком сильно полагаются на базовый движок для точной работы». Я также могу видеть, какие функции поддерживаются фикцией/подставкой в ​​репо. Что было бы еще более полезно, если кто-то знает, какие функции, обычно поддерживаемые прокладкой, будут ломаться при добавлении фиктивного обмана. – garbanzio

+2

Я не пробовал это специально, но если что-нибудь в швах сломало что-нибудь в прокладках, я бы подумал об этом. –