innan ES6 hade Javascript modulkontrollsystem som RequireJS, CommonJS och Angular ’ s Dependency injection system. Andra verktyg som Browserify och Webpack själv har löst många problem i detta sammanhang.
i 2015 hade vi en första implementering av modulsystemet i vanilj Javascript för nod.js använder require
vi vet alla. Men det här har ännu inte kommit till webbläsare.
strikt läge
innan något vi behöver prata lite om strikt läge., Utan det kan vi inte prata absolut ingenting om moduler.
strikt läge är aktiverat som standard när vi arbetar med ES6 moduler, om du fortfarande inte vet vad strikt läge är, kommer jag att ge en grundläggande introduktion.,ad6″>, I Anropet av metoder är inte längre tvungen att göra en Object
fn.caller
och fn.arguments
, för att komma åt stacken, JavaScriptprotected
interface
) lider inte av bind
om du inte har en ledtråd ska du använda i 'use strict'
, på alla rätt ställen blir det standard i ES6, det är fortfarande en bra praxis att använda den varje gång. – herr talman!,
Export
No modelo CommonJS podemos exportar valores atribuindo eles ao module.exports
como no snippet abaixo:
No ES6, os módulos são arquivos que dão export
uma API (basicamente igual ao CommonJS)., Deklarationerna, variablerna, funktionerna och allt från den modulen finns endast i modulens omfattning, vilket innebär att alla variabler som deklareras inom en modul inte är tillgängliga för andra moduler (såvida de inte uttryckligen exporteras som en del av API: n och senare importeras till den modul som använder dem).,
exportera standard
Du kan simulera beteendet hos en CommonJS i princip, ersätta module.exports
med en export default
:
å andra sidan av modulerna i CommonJS, deklarationerna i export
, kan endast placeras på toppnivån i din kod, och inte i någon del av den., Vi antar att denna begränsning finns för att göra livet enklare för tolkar när de ska identifiera moduler, men om man tittar på det är det en mycket giltig begränsning, eftersom det inte finns många bra skäl för oss att definiera dynamisk export inom våra API-funktioner.
en annan anledning till detta finns i talet om vår kära vän William Grasel under Intercon 2017, på web app performance (som finns här).,
han säger att ett av sätten att förlänga dess prestanda är att använda moduler, det beror på att modulerna sammanställs statiskt och innan din kod ens passerar till webbläsarens tolk (som V8 till exempel). På detta sätt är det möjligt att extrahera endast de delar av koden som faktiskt används i ansökan istället för att importera hela modulen, och detta skulle bara vara möjligt om modulerna deklarerades på toppnivå, eftersom något inuti en funktion skulle bli något dynamiskt, inte statiskt.,