Tento dokument môže byť v porovnaní s dokumentáciou v angličtine zastaralý. Aktuálne informácie nájdete v dokumentácii v angličtine.

Prechod na Express 5

Overview

Hoci je Express 5.0 ešte len v alpha release verzii, tu je náhľad zmien, ktoré budú v tomto release a návod ako zmigrovať vašu aplikáciu z verzie Express 4 na Express 5.

Express 5 sa od Express 4 veľmi nelíši: Zmeny v API nie sú tak veľké, ako v pŕipade prechodu z verzie 3.0 na 4.0. Hoci základné API zostáva rovnaké, sú tam niektoré podstatné zmeny; inými slovami, existujúca Express 4 aplikácia nemusí po upgrade na Express 5 fungovať.

Pre nainštalovanie poslednej alpha verzie Express 5, spustite v hlavnom priečinku vašej aplikácie nasledujúci príkaz:

$ npm install "express@^5.0.1" --save

Potom môžete spustiť vaše automatizované testy, aby ste videli čo padá a opravili tieto problémy podľa informácií nižšie. Potom, ako identifikujete padajúce testy, spustite aplikáciu, aby ste videli aké errory nastávajú. Okamžite zistíte, či aplikácia používa niektorú z metód, alebo properties, ktoré nie sú podporované.

Zmeny v Express 5

Tu je zoznam zmien (týkajúcich sa verzie alpha 2 release), ktoré vás, ako používateľa Express aplikácie, môžu ovplyvniť. Pozrite sa na zoznam pull request-ov všetkých plánovaných zmien.

Odstránené metódy a properties

Zmenené

Vylepšenia

Odstránené metódy a properties

Ak používate niektorú z nasledujúcich metód, alebo properties vo vašej aplikácii, aplikácia bude padať. Preto budete musieť vykonať zmeny vo vašej aplikácii, aby fungovala aj po update na veziu 5.

app.del()

Express 5 už viac nepodporuje app.del() funkciu. V prípade použitia tejto metódy nastane error. Namiesto nej použite pre zaregistrovanie HTTP DELETE route-ov funkciu app.delete().

Pôvodne bola funkcia del používaná namiesto delete, pretože delete je v JavaScript-e rezervované kľúčové slovo. Avšak od ECMAScript 6, delete a ďalšie rezervované klúčové slová môžu byť bezpečne použité ako názov property.

app.param(fn)

Zápis app.param(fn) bol používaný pre modifikovanie správania app.param(name, fn) funkcie. Tento zápis bol označený ako deprecated už od v4.11.0 a Express 5 ho už nepodporuje vôbec.

Pluralizované názvy metód

Nasledujúce názvy metód boli pluralizované. Používanie pôvodných názvov v Express 4 viedlo k deprecation warning-om. Express 5 ich už nepodporuje vôbec:

req.acceptsCharset() bola nahradená za req.acceptsCharsets().

req.acceptsEncoding() bola nahradená za req.acceptsEncodings().

req.acceptsLanguage() bola nahradená za req.acceptsLanguages().

Dvojbodka (:) na začiatku v name argumente volania app.param(name, fn)

Dvojbodka (:) na začiatku v name argumente volania app.param(name, fn) funkcie je pozostatkom z Express 3 a v záujme spätnej kompatibility ju Express 4 podporoval s deprecation warning-om. Express 5 ju bude ticho ignorovať a používa name parameter bez prefixu počiatočnej dvojbodky.

Táto zmena by nemala ovplyvniť váš kód v prípade, ak postupujete podľa dokumentácie k Express 4 app.param, kde sa žiadna počiatočná dvojbodka už nespomína.

req.param(name)

Táto potenciálne mätúca a nebezpečná metóda získania dát z formulára bola odstránená. Odteraz budete musieť pozrieť na konkrétny názov parametra v req.params, req.body, alebo req.query objektu.

res.json(obj, status)

Express 5 už viac nepodporuje zápis res.json(obj, status). Namiesto toho nastavte status a zreťazte ho s res.json() volaním, takto res.status(status).json(obj).

res.jsonp(obj, status)

Express 5 už viac nepodporuje zápis res.jsonp(obj, status). Namiesto toho nastavte status a zreťazte ho s res.jsonp() volaním, takto: res.status(status).jsonp(obj).

res.send(body, status)

Express 5 už viac nepodporuje zápis res.send(obj, status). Namiesto toho nastavte status a zreťazte ho s res.send() volaním, takto: res.status(status).send(obj).

res.send(status)

Express 5 už viac nepodporuje zápis res.send(status), kde status je číslo. Namiesto toho použite funkciu res.sendStatus(statusCode), ktorá nastavuje status kód HTTP response hlavičky a odošle jej textovú verziu spolu s: “Not Found”, “Internal Server Error”, a podobne. Ak potrebujete poslať pomocou funkcie res.send() číslo, uveďte ho v úvodzovkách, aby ste ho pretypovali na string, takže to Express nevyhodnotí ako pokus o nepodporovaný zápis.

res.sendfile()

Funkcia res.sendfile() bola v Express 5 nahradená camel-cased verziou res.sendFile().

Zmenené

app.router

Objekt app.router, ktorý bol v Express 4 odstránený, bol v Express 5 vrátený späť. V novej verzii je tento objekt len referenciou na základný Express router, kým v Express 3 ho bolo nutné explicitne načítať.

req.host

Funkcia req.host v Express 4 nekorektne odstraňovala číslo portu, ak bol definovaný. V Express 5 je číslo portu ponechané.

req.query

V Express 4.7 a od Express 5, query parser parameter akceptuje hodnotu false pre zakázanie parsovania query stringu v prípade, ak chcete použiť vlastnú funkciu na parsovanie.

Improvements

res.render()

Táto metóda si odteraz vynucuje asynchrónne správanie všetkých view engine-ov, čím predchádza chybám spôsobenými view engine-ami, ktorých implementácia je synchrónna a porušuje doporučený interface.