Эцсийн төсөл
Та хувьсагч, функц, массив, объект, async/await, DOM, OOP, модулиуд, тест — JavaScript-ийн бүрэн суурийг эзэмшлээ. Одоо тэр мэдлэгийг нэг бодит апп болгон нэгтгэх цаг болжээ. Энэ хичээл бол шинэ зүйл сурах биш — сурснаа бататгах, бие даан бодох, алдааг өөрөө засах дасгал юм.
Юу бүтээх вэ?
Доорх гурван санаанаас нэгийг сонгоно — эсвэл өөрийн санааг хэрэгжүүл. Гол шаардлага: ажиллаж, хэрэглэгч ашиглаж болох байх.
Сонголт А — Даалгаврын жагсаалт (Todo App) Хамгийн сонгодог дасгал. Гэхдээ дараах шаардлагыг биелүүлснээр нарийсна:
- Даалгавар нэмэх, устгах, дуусгасан гэж тэмдэглэх
localStorage-д хадгалж, хуудас шинэчилсэн ч мэдээлэл үлдэх- Дуусаагүй / дууссан / бүгд гэж шүүх
Сонголт Б — Цаг агаарын апп (Weather App)
- Хэрэглэгч хот оруулна → OpenWeatherMap эсвэл Open-Meteo API-аас (үнэгүй) мэдээлэл авна
- Температур, чийгшил, дүрслэл харуулна
- Алдааг зохицуулж, ачааллаж байгааг мэдэгдэнэ
Сонголт В — Үг цээжлэх апп (Flashcard App)
- Монгол-Англи үгсийн карт үүсгэх
- Санамсаргүй дарааллаар харуулах
- Мэдэх / мэдэхгүй гэж тэмдэглэх, оноо хуримтлуулах
Код зохион байгуулалт
Ямар апп сонгосон ч дараах бүтцийг баримтал:
project/
├── index.html
├── style.css
└── src/
├── main.js ← эхлэх цэг
├── ui.js ← DOM-тэй харилцах функцүүд
├── storage.js ← localStorage уншиж бичих
└── utils.js ← туслах цэвэр функцүүд
// storage.js — модуль болгон зохион байгуулсан жишээ
export function хадгалах(түлхүүр, өгөгдөл) {
localStorage.setItem(түлхүүр, JSON.stringify(өгөгдөл));
}
export function унших(түлхүүр, анхны_утга = null) {
try {
const хадгалсан = localStorage.getItem(түлхүүр);
return хадгалсан ? JSON.parse(хадгалсан) : анхны_утга;
} catch {
return анхны_утга;
}
}
// utils.js — цэвэр функцүүд, тест бичихэд хялбар
export function id_үүсгэх() {
return `${Date.now()}_${Math.random().toString(36).slice(2, 7)}`;
}
export function огноо_формат(огноо = new Date()) {
return огноо.toLocaleDateString("mn-MN", {
year: "numeric",
month: "long",
day: "numeric",
});
}
export function текст_хайрцаглах(текст, урт = 60) {
return текст.length > урт ? текст.slice(0, урт) + "…" : текст;
}
Алхам алхмаар явах нь чухал
// main.js — Todo App-ийн жишээ эхлэл
import { хадгалах, унших } from "./storage.js";
import { id_үүсгэх, огноо_формат } from "./utils.js";
import { жагсаалт_дүрслэх, оролт_цэвэрлэх } from "./ui.js";
let даалгаврууд = унших("даалгаврууд", []);
function даалгавар_нэмэх(текст) {
if (!текст.trim()) return;
const шинэ = {
id: id_үүсгэх(),
текст: текст.trim(),
дууссан: false,
үүсгэсэн: огноо_формат(),
};
даалгаврууд = [...даалгаврууд, шинэ]; // immutability
хадгалах("даалгаврууд", даалгаврууд);
жагсаалт_дүрслэх(даалгаврууд);
оролт_цэвэрлэх();
}
function даалгавар_устгах(id) {
даалгаврууд = даалгаврууд.filter((д) => д.id !== id);
хадгалах("даалгаврууд", даалгаврууд);
жагсаалт_дүрслэх(даалгаврууд);
}
// Эхлэх
жагсаалт_дүрслэх(даалгаврууд);
document.querySelector("#нэмэх_товч").addEventListener("click", () => {
даалгавар_нэмэх(document.querySelector("#оролт").value);
});
Дуусгасны дараа
Апп ажиллаж байвал дараах зүйлсийг нэмж бататга:
utils.js-ийн функцүүдэд Jest тест бич- GitHub-д байршуул (
git init→git add .→git commit) - GitHub Pages эсвэл Vercel дээр нийтэд нээлттэй болго — үнэгүй
Баяр хүргэе. Та JavaScript-ийн суурийг эхнээс эцэс хүртэл туулж гарлаа — хувьсагчаас эхлээд OOP, async, тест, performance хүртэл. Энэ бол жижиг ололт биш. Цаашдын зам: React, Node.js, TypeScript — гэхдээ тэдгээрийн суурь нь та энд сурсан зүйлс юм. Код бичихээ зогсоохгүй байгаарай.
Дараагийн хичээлд:
Энэ курс дууслаа — гэхдээ таны аялал дөнгөж эхэллээ. TypeScript курс дээр уулзацгаая!