JavaScript là một trong những ngôn ngữ lập trình phổ biến nhất của các nhà phát triển web. Trong khi học JavaScript, mọi người đều bắt đầu với những điều cơ bản và xây dựng các ứng dụng đơn giản bằng cách sử dụng thao tác DOM.
Trong bài viết này, bạn sẽ tìm hiểu cách bạn có thể xây dựng một từ điển bằng cách sử dụng JavaScript và thao tác DOM. Bài viết này mong bạn biết những kiến thức cơ bản về JavaScript trước khi đọc.
Xem qua API
API là viết tắt của Giao diện lập trình ứng dụng . API đơn giản hóa việc phát triển và đổi mới phần mềm bằng cách cho phép các ứng dụng trao đổi dữ liệu và chức năng một cách dễ dàng và an toàn.
Dự án này sử dụng API Dictionaryapi.dev . Đây là một API miễn phí cung cấp nhiều định nghĩa, ngữ âm và các thuật ngữ ngữ pháp khác liên quan đến các từ mà bạn tìm kiếm.
Liên kết đến API như sau:
https://api.dictionaryapi.dev/api/v2/entries/en/word
Bố cục giao diện người dùng của dự án
Bố cục giao diện người dùng của dự án này được xây dựng bằng HTML và TailwindCSS . Bạn có thể nhập TailwindCSS trong tệp HTML của mình bằng CDN được cung cấp bên dưới.
Trang HTML có một đầu vào và một nút để người dùng có thể nhập từ cần tìm. Có thêm ba dấu chia để hiển thị phần lời nói, nhiều định nghĩa và âm thanh giúp bạn phát âm từ đó một cách chính xác. Theo mặc định, ba div này có thuộc tính hiển thị là không. Khi dữ liệu được tìm nạp từ API, thuộc tính hiển thị của các div này sẽ được đặt thành khối.
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
Giao diện người dùng sẽ trông như thế này
Thêm chức năng bằng JavaScript
Trước khi tìm nạp dữ liệu thông qua API và hiển thị nó, bạn cần có quyền truy cập vào các phần tử HTML bằng id của chúng. Bạn có thể truy cập vào id bằng phương thức JavaScript 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");
Thêm trình xử lý sự kiện
Phần tử đầu vào trong trang HTML có một id tên là từ . Sau khi có quyền truy cập vào phần tử đầu vào, bạn có thể truy xuất giá trị của văn bản trong phần tử đầu vào bằng cách sử dụng thuộc tính .value .
Nút tìm kiếm có id được đặt tên là tìm kiếm . Bạn phải thêm trình xử lý sự kiện nhấp chuột để kích hoạt sự kiện và thực hiện một lệnh gọi hàm để tìm nạp dữ liệu thông qua API.
Async và Await
Kể từ năm 2017, hoạt Javascript đã giới thiệu các khái niệm về async và chờ đợi để thực hiện yêu cầu không đồng bộ. Bạn sử dụng async-chờ đợi thay vì .Sau đó và .catch để quyết tâm và từ chối những lời hứa.
Liên quan: Lập trình đồng bộ và không đồng bộ: Chúng khác nhau như thế nào?
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); } });
Để làm việc với các hứa hẹn bằng cách sử dụng async-await , bạn cần thêm từ khóa async trước định nghĩa hàm. Và bất cứ khi nào bạn thực hiện một yêu cầu hoặc gọi một hàm, bạn phải thêm từ khóa await vào trước nó.
Các chờ đợi từ khóa tạm dừng việc thực hiện thêm các chức năng cho đến khi yêu cầu trước đó không được hoàn thành.
Bạn cần thực hiện toàn bộ hành động hứa hẹn không chờ đợi trong khối try-catch . Nếu lời hứa không thể tìm nạp dữ liệu thì nó sẽ hiển thị lỗi trong khối bắt . Trước khi chuyển từ tới API, nó phải ở định dạng chữ thường để có kết quả chính xác. Bạn có thể sử dụng phương thức chuỗi .lowercase () để chuyển đổi từ.
Phương thức tìm nạp sẽ truy xuất dữ liệu từ API. Bạn phải thêm từ khóa await để hàm tạm dừng tại thời điểm đó trong khi phương thức tìm nạp đang truy xuất dữ liệu.
Sau khi truy xuất dữ liệu, bạn cần chuyển đổi dữ liệu đó ở định dạng JSON bằng phương thức .json () trên phản hồi.
Hiển thị dữ liệu trên trang web
Sau khi truy xuất dữ liệu và chuyển đổi nó sang định dạng JSON , bạn phải hiển thị nó trên trang web. Bạn cần gọi phương thức displayData () và truyền dữ liệu cho nó.
Cấu trúc của phản hồi API như sau:
API trả về một phần của giọng nói, nhiều định nghĩa và ngữ âm của các từ trong phản hồi.
Bạn có thể lấy tất cả các định nghĩa của từ đã cho bằng cách sử dụng:
const meanings = data[0].meanings[0].definitions;
Các nghĩa của biến là một mảng chứa tất cả các định nghĩa của từ đã cho.
Để có được Phần bài phát biểu của từ đã cho:
const partOfSpeech = data[0].meanings[0].partOfSpeech;
Bạn có thể thêm Phần Lời nói của từ bằng thuộc tính .innerHTML . Trong mã HTML, phần của speech div có thuộc tính không hiển thị theo mặc định, nhưng trong mã JavaScript, sau khi tìm nạp dữ liệu, bạn cần đặt thuộc tính hiển thị để chặn .
Hiển thị các định nghĩa
Bạn phải tạo một biến có tên là NghiaList . Sau khi thêm tất cả các định nghĩa cho biến này, bạn cần gán cho nó thuộc tính .innerHTML để hiển thị nó trên trang web.
Liên quan: Bảng Cheat HTML Essentials: Thẻ, Thuộc tính, và hơn thế nữa
Lặp lại mảng ý nghĩa và theo dõi một định nghĩa duy nhất và chỉ mục mà nó hiện diện. Nối định nghĩa và chỉ mục duy nhất vào biến NghiaList bên trong phần tử đoạn văn của HTML.
Khi bạn ra khỏi vòng lặp, bạn phải vượt qua nó để .innerHTML thuộc tính của meaningDiv .
Hiển thị phần tử âm thanh trên trang web
Phản hồi mà API nhận được chứa ngữ âm giúp người dùng hiểu cách phát âm của từ. Để thêm âm thanh này trên trang web, bạn cần tạo một phần tử âm thanh và chuyển ngữ âm vào thuộc tính src của phần tử đó. Cuối cùng, bạn cần đặt phần tử âm thanh vào audioDiv bằng thuộc tính .innerHTML .
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
}
`;
});
NghiaDiv.className =
"text-center w-1/4 bg-gray-100 my-6 border-2 border-green-500 khối tròn";
NghiaHeader.innerText = "Ý nghĩa";
NghiaDiv.innerHTML = NghiaList;
let aud = `
`;
audioDiv.className = "block";
audioDiv.innerHTML = aud;
};
Thêm một dự án khác vào danh sách của bạn
Bây giờ bạn đã học cách xây dựng ứng dụng từ điển bằng JavaScript, đã đến lúc bạn tự mình xây dựng một số dự án thú vị. Các dự án xây dựng sẽ không chỉ nâng cao những điều cơ bản của bạn mà còn thêm các dự án vào sơ yếu lý lịch của bạn.
Tìm kiếm thêm thực hành về các khái niệm thao tác JavaScript và DOM? Đây là một dự án khác mà bạn có thể xây dựng để củng cố kỹ năng của mình.