JavaScript is een van de meest populaire programmeertalen onder webontwikkelaars. Tijdens het leren van JavaScript begint iedereen met de basis en het bouwen van eenvoudige applicaties met behulp van DOM-manipulatie.
In dit artikel leert u hoe u een woordenboek kunt bouwen met JavaScript en DOM-manipulatie. Dit artikel verwacht dat je de basis van JavaScript kent voordat je het leest.
Een kijkje nemen in de API
API staat voor Application Programming Interface . API's vereenvoudigen de ontwikkeling en innovatie van software door applicaties in staat te stellen eenvoudig en veilig gegevens en functionaliteit uit te wisselen.
Dit project maakt gebruik van de API Dictionaryapi.dev . Dit is een gratis API die meerdere definities, fonetiek en andere grammaticale termen biedt met betrekking tot woorden die u zoekt.
De link naar de API is als volgt:
https://api.dictionaryapi.dev/api/v2/entries/en/word
Front-end lay-out van het project
De frontend layout van dit project is gebouwd met HTML en TailwindCSS . U kunt TailwindCSS in uw HTML-bestand importeren met behulp van het onderstaande CDN.
De HTML-pagina heeft een invoer en een knop waar de gebruiker het te zoeken woord kan invoeren. Er zijn nog drie divs om de woordsoort, meerdere definities en audio weer te geven waarmee u het woord correct kunt uitspreken. Standaard hebben deze drie div's een display-eigenschap van geen. Wanneer de gegevens van de API worden opgehaald, wordt de weergave-eigenschap van deze divs ingesteld op block.
Dictionary
<>
type="text"
placeholder="Enter the word"
id="word"
class="
py-2
w-1/4
focus:outline-none
border-2 border-green-600
rounded
px-3
"
/>
<>
id="search"
class="bg-green-600 text-white text-xl px-4 py-2 rounded">
Search
Deze frontend ziet er zo uit
Functionaliteit toevoegen met JavaScript
Voordat u de gegevens via API ophaalt en weergeeft, moet u toegang krijgen tot HTML-elementen met behulp van hun id's. U kunt toegang krijgen tot de id's met behulp van de JavaScript-methode getElementById() .
const word = document.getElementById("word"); const search = document.getElementById("search"); const display = document.getElementById("display"); const partOfSpeechDiv = document.getElementById("partOfSpeechDiv"); const partOfSpeechHeader = document.getElementById("partOfSpeechHeader"); const partOfSpeechPara = document.getElementById("partOfSpeechPara"); const meaningDiv = document.getElementById("meaningDiv"); const audioDiv = document.getElementById("audio"); const meaningHeader = document.getElementById("meaningHeader");
De gebeurtenislistener toevoegen
Het invoerelement in de HTML-pagina heeft een id met de naam woord . Nadat u toegang hebt gekregen tot het invoerelement, kunt u de waarde van de tekst in het invoerelement ophalen met behulp van het .value attribuut.
De zoekknop heeft de id genaamd search . Je moet een toe click event listener de gebeurtenis te activeren en maak een functie aan te roepen om de gegevens op te halen door middel van API.
Async en wachten
Sinds 2017 heeft JavaScript het concept van async geïntroduceerd en wachten op het uitvoeren van asynchrone verzoeken. U gebruikt async-wachten in plaats van .then en .catch op te lossen en beloften te verwerpen.
Gerelateerd: Synchroon versus asynchrone programmering: hoe verschillen ze?
search.addEventListener("click", async () => { try { let url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word.value.toLowerCase()}`; const res = await fetch(url); const data = await res.json(); displayData(data); } catch (error) { console.log(error); } });
Als u met beloften wilt werken die async-wait gebruiken , moet u het sleutelwoord async vóór de functiedefinitie toevoegen. En wanneer u een verzoek doet of een functie aanroept, moet u het wait- sleutelwoord ervoor toevoegen.
Het wait- sleutelwoord pauzeert de verdere uitvoering van de functie totdat het vorige verzoek niet is voltooid.
U moet de volledige async-wait- belofte-actie uitvoeren in het try-catch- blok. Als de belofte de gegevens niet kan ophalen, wordt de fout in het catch- blok weergegeven. Voordat het woord aan de API wordt doorgegeven, moet het in kleine letters staan voor nauwkeurige resultaten. U kunt de tekenreeksmethode .lowercase() gebruiken om het woord te converteren.
De ophaalmethode haalt de gegevens op uit de API. U moet het wait- sleutelwoord toevoegen, zodat de functie op dat moment pauzeert terwijl de fetch-methode de gegevens ophaalt.
Nadat u de gegevens hebt opgehaald, moet u deze in JSON- indeling converteren met behulp van de .json()- methode in het antwoord.
De gegevens op de webpagina weergeven
Nadat u de gegevens hebt opgehaald en naar JSON- indeling hebt omgezet , moet u deze op de webpagina weergeven. U moet de methode displayData() aanroepen en de gegevens eraan doorgeven.
De structuur van het API-antwoord is als volgt:
De API retourneert de woordsoort, meerdere definities en fonetiek van de woorden in het antwoord.
U kunt alle definities van het gegeven woord krijgen met:
const meanings = data[0].meanings[0].definitions;
De variabele betekenissen is een array die alle definities van het gegeven woord bevat.
Om de woordsoort van het gegeven woord te krijgen:
const partOfSpeech = data[0].meanings[0].partOfSpeech;
U kunt de woordsoort van het woord toevoegen met het kenmerk .innerHTML . In de HTML-code had de woordsoort div standaard de eigenschap display none, maar in de JavaScript-code moet u na het ophalen van de gegevens de eigenschap display op block instellen .
De definities weergeven
U moet een variabele maken met de naam betekenisLijst . Nadat u alle definities aan deze variabele hebt toegevoegd, moet u er het .innerHTML- kenmerk aan toewijzen om het op de webpagina weer te geven.
Gerelateerd: De HTML Essentials Cheat Sheet: Tags, attributen en meer
Loop door de betekenisreeks en houd een enkele definitie bij en de index waarin deze aanwezig is. Voeg de enkele definitie en index toe aan de variabele betekenisList in het alinea-element van HTML.
Als je eenmaal uit de lus bent, moet je het doorgeven aan het .innerHTML- attribuut van betekenisDiv .
Geef het audio-element weer op de webpagina
Het antwoord dat door de API wordt ontvangen, bevat fonetiek die gebruikers helpt de uitspraak van het woord te begrijpen. Om dit geluid aan de webpagina toe te voegen, moet je een audio-element maken en fonetiek doorgeven in het src- attribuut van dat element. Ten slotte moet u het audio-element in de audioDiv plaatsen met behulp van het .innerHTML- attribuut.
const displayData = (data) => { console.log(data); const partOfSpeech = data[0].meanings[0].partOfSpeech; const meanings = data[0].meanings[0].definitions; partOfSpeechDiv.className = "bg-gray-100 px-2 py-3 flex flex-col w-1/4 justify-center items-center border-2 border-green-500 rounded block"; partOfSpeechHeader.innerHTML = "Part of Speech"; partOfSpeechPara.innerHTML = partOfSpeech; let meaningList = ``; meanings.forEach((meaning, ind) => { meaningList += `
${ind + 1}) ${
meaning.definition
}
`;
});
betekenisDiv.className =
"text-center w-1/4 bg-grey-100 my-6 border-2 border-green-500 afgerond blok";
betekenisHeader.innerText = "Betekenissen";
betekenisDiv.innerHTML = betekenisLijst;
laat aud = `
`;
audioDiv.className = "blokkeren";
audioDiv.innerHTML = aud;
};
Voeg nog een project toe aan je lijst
Nu je hebt geleerd een woordenboek-app te bouwen met JavaScript, is het tijd om zelf een aantal spannende projecten te bouwen. Het bouwen van projecten zal niet alleen je basiskennis opfrissen, maar ook projecten toevoegen aan je cv.
Op zoek naar meer oefening in JavaScript- en DOM-manipulatieconcepten? Hier is nog een project dat je kunt bouwen om je vaardigheden te versterken.