2014-12-16 25 views
39

Qual è la differenza tra uno spessore e una finzione?Shim vs. Sham: Qual è la differenza?

È sufficiente includere es5-shim.min.js e es6-shim.min.js o dovrei includere anche es5-sham.min.js ed es6-sham.min.js?

+1

Mi piacerebbe essere in grado di supportare ciecamente il maggior numero di funzionalità ES5 ed ES6 possibile in tutti i browser. È più utile? – garbanzio

+0

@garbanzio: Non penso che sia un approccio ragionevole. Non sarai in grado di utilizzare tutte le funzionalità ciecamente (poiché non tutte possono essere emulate), quindi dovrai comunque controllare ciascuna funzionalità. E quando lo farai, potresti anche decidere se hai bisogno di shams o meno. –

risposta

33

In base allo this Github page gli shim includono tutte le patch per le scimmie che rappresentano fedelmente le funzioni dell'ES5.

In altre parole: è possibile utilizzare le funzionalità fornite da questi file come se si stesse utilizzando ES5.

Gli shams, tuttavia, contengono quelle funzioni che non possono essere emulate con altro codice. Fondamentalmente forniscono l'API, quindi il tuo codice non si arresta in modo anomalo ma non fornisce la funzionalità effettiva.

Quali sono necessari? Dipende da come scrivi il tuo codice. Se si utilizzano solo le funzionalità fornite dagli shim, includerlo. Se vuoi anche (facoltativamente) utilizzare le funzionalità degli shams, allora hai bisogno di entrambi.

+1

La [pagina Wikipedia su polyfill] (http://en.wikipedia.org/wiki/Polyfill#es5-shim) la descrive in modo abbastanza succinto. – hon2a

+1

Grazie. Ecco cosa raccolgo dalle due fonti menzionate sopra: Da repository github ES5 ... "In molti casi, questo significa che questi shams fanno sì che molti metodi ES5 falliscano silenziosamente, decidendo attentamente se questo è ciò che si desidera." Da wikipedia ... "es5-sham.js contiene implementazioni parziali degli altri metodi che si basano troppo sul motore sottostante per funzionare con precisione." Posso anche vedere quali funzionalità sono supportate dalla finzione/shim nel repository. Ciò che sarebbe ancora più utile, è che qualcuno sappia quali funzionalità normalmente supportate dallo shim si romperanno quando si aggiungerà la finzione. – garbanzio

+2

Non l'ho provato in modo specifico, ma se qualcosa negli shams ha rotto qualcosa negli shim, lo considererei un bug. –

Problemi correlati