Hogyan hozzunk létre újrafelhasználható kódot a JavaScriptben tervezési minták használatával

Hogyan hozzunk létre újrafelhasználható kódot a JavaScriptben tervezési minták használatával

Ha valaha is szeretne újrafelhasználható JavaScript -kódot létrehozni, vagy együttműködni egy fejlesztői csapattal, akkor tudnia kell, hogyan kell használni és azonosítani a nyelv különböző tervezési mintáit.





A JavaScriptben a tervezési minta kifejezés a kód írásának meghatározott módjára utal, és gyakran programozási sablonnak tekintik. Az érdekes dolog az, hogy a címke tervezési mintája bármire alkalmazható az egész alkalmazástól az egyszerű kódblokkig.





A tervezési minta széles körű téma, de ha megérti a modulmintát és a gyári módszert, meg kell értenie azt.





A modul minta

A JavaScript modulokat 2009 -ben vezették be, a programozási nyelv ES5 verziójával. A modulok használatával a fejlesztők mostantól egyéni kódrészleteket hozhattak létre és exportálhattak, hogy felhasználhassák őket egy JavaScript -alkalmazás más szakaszaiban.

A modulminta alapstruktúrája


(function(){
//Declare private variables and functions
//Declare and return public variables and functions
})();

A fenti példában a modulmintákat mindig egy azonnal meghívott függvénykifejezés (IIFE) zárja. Ez azt jelenti, hogy egy modulminta végrehajtásra kerül, amint meg van határozva. Fontos megjegyezni, hogy a modul minta két különálló részből áll.



Az első szakasz privát változók és függvények deklarálására szolgál, amelyek csak a modulminta keretein belül érhetők el.

A második szakasz egy visszatérési értékből áll, amely nyilvános változókat és függvényeket foglal magában, amelyek a modulminta hatókörén kívül érhetők el.





A modulminta használata alkalmazás létrehozásához

Tekintsünk egy egyszerű alkalmazást, például egy feladatkezelőt. A modulminta használatával egyedi modulokat kell létrehoznia minden szakaszhoz. Ezek a következők lehetnek:

  • Feladatvezérlő
  • UI vezérlő
  • Tároló vezérlő
  • Egy alkalmazásvezérlő

Összefüggő: Programozási projektek kezdőknek





A feladatvezérlő minden új feladat létrehozására szolgál. A felhasználói felület vezérlője a felhasználói felülethez kapcsolódó funkciók vezérlésére szolgál, mint például a gombnyomásra való figyelés vagy a megjelenített adatok módosítása. A tárolóvezérlő minden új feladat adatbázisba mentésére szolgál. Az alkalmazásmodul az alkalmazás végrehajtására szolgál.

Példa a modulminta használatával felhasználói felület vezérlő létrehozására


const UIController = ( function() {
//the private section of the module
let component = 'Replacement Text';
const changeComponent = function() {
//change all the h1 text to what is in the component variable above
const element = document.querySelector('h1');
element.textContent = component;
}
//the public section of the module
return{
callChangeComponent: function() {
changeComponent();
}
}
})();

A fenti példa világosan bemutatja azt a két szakaszt, amelyek a modulmintában találhatók - privát és nyilvános.

A függvény privát részében az összetevőváltozó és a changeComponent függvény egyaránt privát. Ezért, ha meg szeretné változtatni az összes h1 szöveget egy weboldalon, akkor hibaüzenetet kap, ha a következő kódot írja.

Helytelen módszer a changeComponent példa meghívására


UIController.changeComponent();

A hibaüzenet kifejezetten kimondja, hogy a changeComponent () nem az UIController függvény funkciója. Ez a modul minta szépsége; a privát részben létrehozott változók és függvények soha nem érhetők el közvetlenül a függvény hatókörén kívül.

Bár a privát változók nem érhetők el közvetlenül, ezek azonban közvetve (a nyilvános részből) érhetők el. A fenti felhasználói felület -vezérlő példából kivonható, hogy a modul minta nyilvános szakaszát mindig a return tulajdonság jelöli.

A visszatérési tulajdonság paraméterein belül közvetett hozzáférést kapunk a changeComponent függvényhez. Most a következő kódsor segítségével (a fenti modulmintával) hatékonyan megváltoztathatjuk a megcélzott weblap összes h1 szövegét helyettesítő szövegre.

Példa a változtatás meghívásának helyes módjára


UIController.callChangeComponent();

A gyári minta

A gyári minta (más néven gyári módszer) egy másik népszerű JavaScript tervezési minta. A modul minta akkor ragyog, amikor adatbeágyazásra van szükség, és a gyári minta akkor a leghasznosabb, ha különböző objektumok gyűjteményével van dolgunk, amelyek bizonyos szempontból hasonlóak.

Visszatérve a fenti feladatkezelőnkhöz; ha megengednénk a felhasználónak, hogy minden egyes létrehozott feladathoz hozzárendeljen egy típust, akkor az alkalmazásnak ezt a aspektusát (meglehetősen hatékonyan) létrehozhatjuk a gyári minta használatával

Példa a gyári minta használatával a feladattípus hozzárendeléséhez


//Factory pattern function
const TaskFactory = function(){
this.createTask = function(name, type){
let task;
//check the type the user selected
if(type === 'urgent'){
task = new UrgentTask(name);
}else if(type === 'trivial'){
task = new TrivialTask(name);
}
//set the type selected in the if statement to the one received as a property
task.type = type;
//used to print the task and its type to the console
task.define = function(){
console.log(`${this.name} (${this.type}): ${this.priority}`)
}
return task
}
}

A fenti kód a gyári módszert használja az új feladatok létrehozásához, a típus ellenőrzéséhez (sürgős vagy triviális), és a megfelelő tulajdonság hozzárendeléséhez, mielőtt kinyomtatja az új feladatot a konzolra.

A createTask belső függvény határozza meg, hogy egyszerre több feladatot kell létrehozni, de mielőtt új feladatokat próbálnánk létrehozni, van néhány további kód, amelyet be kell illesztenünk a projekt ezen szakaszába.

A fenti kódban létrehozunk egy új UrgentTask -t vagy egy új Trivialtask -t, ha egy adott feltétel teljesül. Projektünkben azonban nincs funkció vagy osztály ezekkel a nevekkel - ez a probléma könnyen megoldható a következő kód bevezetésével a projektünkbe.

Sürgős és triviális feladattípusok létrehozása


//Create the urgent task type
const UrgentTask = function(name){
this.name = name;
this.priority = 'as soon as possible'
}
//create the trivial task type
const TrivialTask = function(name){
this.name = name;
this.priority = 'when you can'
}

A fenti kód miatt mostantól minden új feladathoz hozzárendelhetjük az UrgentTask vagy TrivialTask ​​tulajdonságot. A következő lépés most egy új feladat létrehozása, de előtte létre kell hoznunk egy adatbázist, amely minden új feladatot a létrehozásakor tárol.

Tekintettel arra, hogy az adatbázis létrehozása önmagában egy teljes cikk, az adatbázist adatszerkezettel (tömbvel) helyettesítjük.

Tömb példa létrehozása


//create an array to host the different task
const task = [];

Most végre létrehozhatunk egy új feladatot.

Példa új feladatok létrehozására


//create two new tasks
const factory = new TaskFactory();
task.push(factory.createTask('Clean the house', 'urgent'));
task.push(factory.createTask('Reach level 30 in Candy Crush', 'trivial'));

A fenti kóddal most két új feladatot hozhat létre az eredetileg létrehozott TaskFactory függvénnyel. Amikor minden új feladatot létrehozunk, a tulajdonságok (név és típus) már túl vannak a createTask függvényen, amely a TaskFactory függvényben található, amelyet a gyári minta alapján hoztunk létre.

Miután minden feladat átjutott a TaskFactory -n, és hozzárendelték a megfelelő típusú tulajdonságot. Ezután a korábban létrehozott feladatsorba kerül.

Az egyetlen dilemmánk most az, hogy honnan tudjuk, hogy ez a két feladat létrejött, vagy hogy a gyári mintánk működött? Ha adatbázist használtunk volna, akkor egyszerűen ellenőrizhetnénk az adatbázist, hogy nem jött -e létre két új feladat.

Térjen vissza a fenti Gyári minta használata a feladattípus hozzárendelésére példához, közvetlenül a feladat nyomtatásához használt típus alatt, és annak típusát a konzol megjegyzéséhez. a konzolra az alábbiak segítségével tömb módszer .


//print each task to the console
task.forEach(function(task){
task.define();
});

Látnia kell, hogy a következő kimenet jelenik meg a konzolon.


Clean the house (urgent): as soon as possible
Reach level 30 in Candy Crush (trivial): when you can

Mostantól tervezési mintákat használhat JavaScript -projektjeiben

Ebben a szakaszban meg kell értenie a JavaScript tervezési mintáit, és meg kell értenie, hogyan lehet a tervezési minták felhasználásával újrafelhasználható kódot létrehozni, és megkönnyíteni a projektben részt vevő összes fejlesztő életét.

Most már tudja, hogyan működik két népszerű JavaScript tervezési minta, és képesnek kell lennie arra, hogy hatékonyan alkalmazza őket egy alkalmazás fejlesztéséhez.

Kép jóváírása: Alltechbuzz/ Pixabay

hogyan menthet képeket a pinterestről
Részvény Részvény Csipog Email A változók deklarálása a JavaScriptben

A JavaScript használatához meg kell értenie a változókat. Íme három módszer a változók deklarálására a JavaScriptben.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • JavaScript
A szerzőről Kadeisha Kean(21 cikk megjelent)

Kadeisha Kean Full Stack szoftverfejlesztő és műszaki/technológiai író. Megvan az a képessége, hogy leegyszerűsítse a legösszetettebb technológiai fogalmakat; olyan anyagot állít elő, amelyet minden technológiai kezdő könnyen megért. Szenvedélyesen ír, érdekes szoftvereket fejleszt és utazik a világban (dokumentumfilmeken keresztül).

Bővebben: Kadeisha Kean

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide