Verkefni 1 snýst um að útfæra bakenda sem birtir gögn fyrir „prótótýpuvef af fyrirlestravef“ sem byggð var sem seinna hópverkefni í vefforritun 1, 2018. Í því verkefni voru gögn búin til og birt aðeins á framenda. Í þessu verkefni skal birta þau frá bakenda.
Útfæra skal Express vefþjón sem birtir yfirlit yfir fyrirlestra úr möppu á disk og möguleika á að skoða hvern fyrirlestur.
Fylgja skal útliti sem gefið er í hópverkefni 2, leyfilegt er að afrita CSS sem búið er til útfrá Sass í sýnilausn af verkefni. Keyra þarf upp verkefnið til að nálgast dist/styles.css
sem verður til þegar npm run sass
er keyrt. Til að útlit virki þarf að fylgja því HTML sem búið er til fyrir framenda í src/lib/list.js
og src/lib
. Gott getur verið að keyra upp verkefni og skoða með DevTools.
Birta þarf upplýsingar úr lectures.json
bæði á yfirlitssíðu og fyrir hvern og einn fyrirlestur. Lesa má nánar um uppsetningu á json skrá í lýsingu á hópverkefni 2.
Titill skal vera „Fyrirlestrar“ fyrir forsíðu en titill fyrirlesturs fyrir hvern stakan fyrirlestur. Hver fyrirlestur skal svara á /:slug
, þ.e.a.s., setja skal upp dýnamísk route með express.
Fyrir hvern fyrirlestur þarf að birta efni úr content
fylki fyrirlesturs. Hægt er skrifa virkni frá grunni eða nýta þá virkni sem gefin er í sýnilausn af hópverkefni 2. Ef sú virkni er notuð er mælt með að sækja jsdom
sem leyfir okkur að nota HTML staðla á bakenda, þ.e.a.s., fá aðgang að window
og document
og geta þannig búið til HTML ótengt vafra. Til að fá HTML niðurstöðu eftir að búið er að tengja jsdom
, þarf að kalla í outerHTML()
fall á nóðu sem skila á. Gott er að útbúa fall sem tekur inn fylki af efni (content
) og skilar streng sem er HTML, sjá app.js
. Hægt er að endurnýta kóða að öllu leiti, aðeins þarf að breyta því hvernig módúll er notaður (eða nota --experimental-modules
) og hvernig kóði fær document
(þá frá jsdom
, ekki global breyta frá vafra).
Sýnidæmi um notkun á jsdom
með node.
Fyrirlesa skal lesa asynchronously af disk með callbacks, promises eða async await
.
Ekki þarf að útfæra „filtera“ á forsíðu eða það að geta klárað fyrirlestur.
Notast skal við EJS template til að útbúa HTML. Útbúa skal header.ejs
og footer.ejs
sem önnur template nota. views/
ætti að innihalda template.
Setja skal upp villumeðhöndlun fyrir almennar villur og ef beðið er um slóð sem ekki er til (404). Skilaboð skulu birt notanda um hvað gerðist („Síða fannst ekki“ – „Villa kom upp“).
app.js
skal setja upp Express vefþjón en virkni sem les greinar og útbýr routes fyrir þær skal útfærð í lectures.js
.
public/
inniheldur þau gögn sem ættu að vera aðgengileg með static middleware í express. CSS ætti að vera geymt í þessari möppu. public/img/
inniheldur myndir sem lectures.json
notar.
Öll dependency skulu skráð í package.json
. eslint
pakkar eru nú þegar uppsettir sem devDependency
.
npm start
skal keyra upp vefþjón á localhost
porti 3000
.
Gott getur verið að setja upp dev
script sem keyrir nodemon
.
Verkefni þetta er sett fyrir á GitHub og almennt ætti að skila því úr einka (private) repo nemanda. Nemendur geta fengið gjaldfrjálsan aðgang að einkarepos á meðan námi stendur, sjá https://education.github.com/.
Til að byrja er hægt að afrita þetta repo og bæta við á sínu eigin:
> git clone https://github.com/vefforritun/vef2-2019-v1.git
> cd vef2-2019-v1
> git remote remove origin # fjarlægja remote sem verkefni er í
> git remote add origin <slóð á repo> # bæta við í þínu repo
> git push
- 10% – Snyrtilegur kóði, engar villur þegar
npm run eslint
er keyrt - 40% – Fyrirlestralisti
- 40% – Fyrirlestur með efni
- 10% – Villumeðhöndlun
Verkefni sett fyrir í fyrirlestri fimmtudaginn 10. janúar 2019.
Skila skal undir „Verkefni og hlutaprófa“ á Uglu í seinasta lagi fyrir lok dags föstudaginn 25. janúar 2019.
Skilaboð skulu innihalda:
- Slóð á GitHub repo fyrir verkefni, og dæmatímakennurum skal hafa verið boðið í repo (sjá leiðbeiningar). Notendanöfn þeirra eru
freyrdanielsson
,gunkol
,kth130
,osk
Sett verða fyrir sex minni verkefni þar sem fimm bestu gilda 6% hvert, samtals 30% af lokaeinkunn.
Sett verða fyrir tvö hópverkefni þar sem hvort um sig gildir 15%, samtals 30% af lokaeinkunn.
Verkefnahluti gildir 60% og lokapróf gildir 40%. Ná verður bæði verkefnahluta og lokaprófi með lágmarkseinkunn 5.
Útgáfa 0.2
Útgáfa | Lýsing |
---|---|
0.1 | Fyrsta útgáfa |
0.2 | Breyta npm test yfir í npm run eslint |