html5boilerplate - HTML5 Boilerplate side-spesifikk Javascript-plassering


Spørsmål

Hvis du bruker en enkelt javascript-fil til å holde alle skriptene, hvor plasserer du skripter som bare er for én side?

Bakgrunn

Dette kan være et spørsmål om mening eller «beste praksis», men jeg er interessert i andres meninger:

Jeg bruker html5 Boilerplate på et prosjekt. De anbefaler at du plasserer all JavaScript i en enkelt fil script.js for hastighet og konsistens. Virker rimelig.

Men jeg har litt geolokasjons-skript som bare er relevant for én enkelt side, og ikke andre. Bør jeg bryte konvensjonen og bare legge dette skriptet på siden under kallene mine til JavaScript-bibliotekene det avhenger av? Bare legge inn kallene til de relevante funksjonene (som finnes i script.js)-filen, under lenkene til bibliotekene de avhenger av?

Takk!

Svar #1

De gode folkene hos html5 boilerplate anbefaler å legge all javascripten din i script.js slik at nettleseren bare trenger å laste den ene filen (sammen med de andre som h5bp bruker) og for å tillate caching av den filen.

Ideen er å ikke bli fanget opp i den «anbefalte» måten, og å tenke på ting knyttet til dine egne applikasjoner.

  • Denne geolokasjonsfilen skal bare brukes på denne ene siden, ikke sant? Den vil aldri bli brukt noe annet sted.
  • Filen script.js vil bli brukt på flere sider.

Vel, da ville det ikke gitt mening å legge et «helt skript» som bare vil være nødvendig på én side i script.js-filen. Du bør gjøre filen ekstern og kalle den separat på siden der den trengs. Dette vil hindre at script.js-filen blir oppblåst med funksjonalitet som kanskje aldri blir brukt av den brukeren.

Men hvis hele skriptet ditt for geolokalisering-funksjonaliteten er ganske lite, bør du inkludere det i script.js. Hvis det ikke øker nedlastingshastigheten for den filen, gir det mening å inkludere det der.

Essensen av alt dette er, Hva er den beste kompromissen for applikasjonen min?

Disse tingene vet vi er sanne:

  • bufrede js-filer er bra
  • færre filer å laste ned er bra
  • mindre filer å laste ned er bra
  • vedlikehold er viktig

Når du tenker på disse tingene i forhold til applikasjonen din, blir beslutningstakingen litt enklere. Og husk, beslutninger som bytter noen millisekunder vil ikke gjøre stor forskjell på brukerens "opplevelse" av hvor rask siden din er.

Svar #2

Nettleseren vil bare laste ned .js-filene én gang (med mindre noe skjer som hindrer nettleseren i å bufre dem). Så hvis du forventer at alle brukerne dine skal besøke den siden som bruker geolokasjon en gang i løpet av økten deres, kan du like gjerne gi den til dem tidlig. Hvis du forventer at kanskje en liten prosentandel av brukerne dine til slutt vil gå til geolokasjonsiden, kan det hende du vil dele dem.