2014-12-16 3 views
39

shim과 a sham의 차이점은 무엇입니까?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

에 따르면 shim에는 ES5 기능을 충실하게 나타내는 모든 원숭이 패치가 포함되어 있습니다.

즉,이 파일에서 제공하는 기능을 ES5를 올바르게 사용하는 것처럼 사용할 수 있습니다.

그러나 shams에는 다른 코드로 에뮬레이션 할 수없는 기능이 포함되어 있습니다. 그들은 기본적으로 API를 제공하므로 코드가 충돌하지는 않지만 실제 기능을 제공하지는 않습니다.

어떤 것이 필요합니까? 그것은 코드를 작성하는 방법에 따라 다릅니다. shim에서 제공하는 기능 만 사용하는 경우이를 포함하십시오. Shams의 기능을 (선택적으로) 사용하려면 두 가지 기능이 모두 필요합니다.

+1

[polyfills에 대한 위키 피 디아 페이지] (http://en.wikipedia.org/wiki/Polyfill#es5-shim)도 꽤 간결한 방식으로 설명합니다. – hon2a

+1

감사합니다. 위에서 언급 한 두 가지 출처에서 수집 한 내용은 다음과 같습니다. ES5 github repo ... "많은 경우, 이는 이러한 가짜로 인해 많은 ES5 방법이 자동으로 실패하는 것을 의미하므로, 이것이 원하는 것인지 신중하게 결정하십시오." 위키 백과에서 ... "es5-sham.js에는 기본 엔진에 너무 많이 의존하여 정확하게 작동하는 다른 방법의 부분 구현이 포함되어 있습니다." repo에서 sham/shim이 지원하는 기능을 확인할 수도 있습니다. 훨씬 더 도움이되는 것은 누군가가 가짜를 추가 할 때 심에 의해 일반적으로 지원되는 기능이 중단된다는 것을 아는 것입니다. – garbanzio

+2

나는 그것을 구체적으로 시도하지 않았지만, shams에있는 것이 shim에서 아무 것도 부러 뜨리면 버그라고 생각할 것입니다. –

관련 문제