2014-12-16 9 views
39

Was ist der Unterschied zwischen einem Shim und einem Schein?Shim vs. Sham: Was ist der Unterschied?

Ist es genug, es5-shim.min.js und es6-shim.min.js aufzunehmen, oder sollte ich auch es5-sham.min.js und es6-sham.min.js einschließen?

+1

Ich möchte in der Lage sein, blind wie viele ES5 und ES6 Funktionen wie möglich in allen Browsern zu unterstützen. Ist das hilfreicher? – garbanzio

+0

@garbanzio: Ich denke nicht, dass das ein vernünftiger Ansatz ist. Sie werden nicht alle Funktionen blind nutzen können (da nicht alle emuliert werden können), so dass Sie trotzdem nach jedem Merkmal suchen müssen. Und wenn Sie das tun, können Sie auch entscheiden, ob Sie die Shams brauchen oder nicht. –

Antwort

33

Nach this Github page die Beilagen sind alle Affen-Patches, die treu die ES5 Funktionen darstellen.

Mit anderen Worten: Sie können die Eigenschaften von diesen Dateien zur Verfügung gestellt verwenden, als ob Sie ES5 ordnungsgemäße Verwendung wurden.

Die shams enthalten jedoch jene Funktionen, die nicht mit anderem Code emuliert werden. Sie stellen im Grunde die API bereit, sodass Ihr Code nicht abstürzt, aber nicht die tatsächliche Funktionalität bereitstellt.

Welche diejenigen brauchen Sie? Das hängt davon ab, wie Sie Ihren Code schreiben. Wenn Sie nur Funktionen verwenden, die von den Shims zur Verfügung gestellt werden, fügen Sie diese hinzu. Wenn Sie auch (optional) Funktionen aus den Shams verwenden möchten, benötigen Sie beide.

+1

Die [Wikipedia-Seite über Polyfills] (http://en.wikipedia.org/wiki/Polyfill#es5-shim) beschreibt sie auch auf eine sehr kurze Art und Weise. – hon2a

+1

Danke. Hier ist, was ich aus den beiden oben genannten Quellen zusammen: Von ES5 Github Repo ... "In vielen Fällen bedeutet dies, dass diese Schanden verursachen viele ES5-Methoden im Stillen fehlschlagen. Entscheiden Sie sorgfältig, ob das was Sie wollen." Von wikipedia ... "es5-sham.js enthält teilweise Implementierungen der anderen Methoden, die zu sehr auf die zugrunde liegende Engine angewiesen sind, um genau zu funktionieren." Ich kann auch in der Repo, welche Funktionen werden unterstützt durch den Schein/Shim sehen. Was noch hilfreicher ist, ist, wenn jemand weiß, welche Funktionen, die normalerweise von dem Shim unterstützt werden, beim Hinzufügen des Sham brechen werden. – garbanzio

+2

Ich habe das nicht speziell versucht, aber wenn irgendetwas in den Shams irgendwas in den Shims kaputt machen würde, würde ich das als Fehler betrachten. –

Verwandte Themen