Skip to content

Latest commit

 

History

History
134 lines (90 loc) · 2.89 KB

09.3.modules.md

File metadata and controls

134 lines (90 loc) · 2.89 KB
title
Fyrirlestur 9.3 – JavaScript einingar

Fyrirlestur 9.3 – JavaScript einingar

Vefforritun 1 — TÖL107G

Ólafur Sverrir Kjartansson, osk@hi.is


Einingar

  • Þegar við vinnum með forrit er þeim yfirleitt skipt upp í einingar
  • Safnar saman virkni á einum stað, inniheldur föll og breytur
  • Skilgreinum API (Application Programming Interface) fyrir einingu

Einingar – kostir

  • Einfaldar að hugsa um forritið, ákveðin eining gerir ákveðin hlut
  • Getur hjálpað við að stýra flækjustigi
    • Þurfum ekki að „halda öllu forritinu í hausnum“ í einu

  • Skilgreinum namespace, minnkar líkur á að við skemmum fyrir öðrum eða aðrir skemmi fyrir okkur
    • Sérstaklega í JavaScript með global og local scope
  • Ýtir undir endurnýtingu á kóða

Einingar – ókostir

  • Getur verið flókið að ákveða hvernig og hvenær skipta eigi forriti upp
  • Að skrifa gott API er erfitt
  • Lærum hægt og rólega með því að skrifa sjálf og nota önnur forritasöfn

// forrit sem reiknar lengd milli a og b
// hvaða skil eru „best“?
program.doStuff(a, b);
program.calculate(a, b);
program.calulateDistance(a, b);
program.distance(a, b);

Einingar í JavaScript

  • Þurfum að geta búið til sérstakt scope fyrir hverja einingu
  • Einingar eru ekki studdar í ECMAScript 5 en getum notað nafnlaus föll
  • Einingar eru studdar í ECMAScript 6 með import og export
    • Stuðningur ekki mikill í vöfrum eða node, þurfum tól

Immediately-invoked function expression

  • Eða IIFE, „iffy“
  • Sjálfkeyrandi nafnlaus föll
  • Býr til fall sem heldur hlutum utan global scope
  • Notað til að búa til einingar í JavaScript

Föll keyrð strax

((i) => {
  console.log(i * 2);
})(10);
// 20

Module pattern

  • Nýtir lokun til að einangra forritið okkar
  • Aðeins nafnið á einingu í global scope, ekki öll föll eða allar breytur
  • Skilum hlut sem skilgreinir API forrits

const Module = (() => {
  const privateVar = 1;
  function privateMethod() { return privateVar; }

  return { // má ekki vera í sér línu!
    publicVar: 2,
    publicMethod: () => privateMethod(),
  };
})(); // köllum í fallið og búum til hlut

Flóknari einingar

  • Búið að staðla nokkrar aðferðir til að vinna með einingar, t.d. CommonJS, AMD
  • Getum því sótt aðrar einingar til að nota í forritinum okkar, þarf þó uppsetningu með tólum
  • npm er stærsta samansafn af einingum skrifuðum í JavaScript, bæði fyrir framenda og bakenda