før ES6, Javascript hadde modul kontroll systemer som RequireJS, CommonJS, og Kantete er dependency injection system. Andre verktøy som Browserify og Webpack selv har løst mange problemer i denne sammenheng.
i 2015 vi hadde en første gjennomføring av modul-system i Vanilje Javascript for Node.js bruke require
vi alle vet. Men dette har ennå ikke kommet for nettlesere.
Strenge Modus
før noe vi trenger å snakke litt om Strenge Modus., Uten det kan vi ikke snakke absolutt ingenting om moduler.
strenge modus er aktivert som standard når vi arbeider med ES6 moduler, hvis du fortsatt ikke vet hva strenge modus er, jeg vil gi en grunnleggende innføring.,ad6″> i bruken av metoder er ikke lenger tvunget til å gjøre en Object
fn.caller
og fn.arguments
, for å få tilgang stabelen, JavaScriptprotected
static
interface
) ikke lider av bind
Hvis du ikke har en anelse, du er ment til bruk i 'use strict'
, i alle de riktige stedene, det er blitt standard i ES6, det er fortsatt en god praksis å bruke det hver gang.,
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)., De erklæringer, variabler, funksjoner og noe fra den modulen finnes bare i det omfang av modulen, noe som betyr at variabelen er deklarert innenfor en modul er ikke tilgjengelig for andre moduler (med mindre de er uttrykkelig eksporteres som en del av API, og senere importert til modul som bruker dem).,
Eksport-standard
du Kan simulere virkemåten til en CommonJS i utgangspunktet, skifte module.exports
av export default
:
på Den andre siden av modulene i CommonJS, de erklæringer i export
, kan bare plasseres på øverste nivå i koden din, og ikke i noen del av det., Vi antar at denne begrensningen finnes for å gjøre livet lettere for tolk når de skal identifisere moduler, men, se på det, det er en veldig gyldig begrensning, fordi det er ikke mange gode grunner for oss å definere dynamiske eksport innen våre API-funksjoner.
en annen grunn for dette kan bli funnet i de snakker om vår kjære venn William Grasel under Intercon 2017, på web app ytelse (som kan bli funnet her).,
han sier at en av måtene å utvide sin ytelse ved å bruke moduler, dette fordi modulene er satt sammen moduler statisk lenket, og før koden selv går til nettleseren tolk (V8 som for eksempel). På denne måten er det mulig å trekke ut bare deler av koden som faktisk brukes i programmet i stedet for å importere hele modulen, og dette vil bare være mulig hvis modulene ble erklært på øverste nivå, fordi noe inni en funksjon ville bli noe dynamisk, ikke statisk.,