Български
Тема
Български
Тема
10 занятия по 4 учебни часа, общо 40 учебни часа.
Цел: задълбочено и солидно познаване на основите на JavaScript - как работи кодът, а не само какво да се напише - за да четете и пишете JavaScript с лекота и увереност. Приложено към вашата работа: в края на курса четете и пишете уверено правила за проверка върху JSON документи и можете да изградите, тествате и документирате малка помощна библиотека за JSON на един продукт.
Всяка тема е показана върху данните, с които работите: JSON отчетът на едно устройство (doc) и правило за проверка.
Датите може да се променят: Календарът винаги показва актуалните.
| Дата | Тема | |
|---|---|---|
| 1 | вт 06.10 | Първи стъпки: настройка за курса, как се изпълнява една програма, какво е variable |
| 2 | ср 14.10 | Variables, типове и оператори |
| 3 | ср 21.10 | Сравнения, логика, условия и loops |
| 4 | пт 23.10 | Arrays и списъци от записи |
| 5 | пт 30.10 | Функции и четене на по-стар код |
| 6 | пт 06.11 | Обекти: дълбоки пътища, dictionaries, различни форми на данните |
| 7 | пт 13.11 | Методи на arrays: трансформиране, групиране и индексиране на данни; старт на проекта |
| 8 | пт 20.11 | Strings, regular expressions, дати и числа |
| 9 | пт 27.11 | JSON, Node.js, модули и грешки; локално изпълнение на правила |
| 10 | пт 04.12 | Тестове, JSDoc типове и качество на кода; работа с Git; преглед на проекта |
let, const (и защо не var); правила и конвенции за имената.null, undefined; typeof; NaN.++ / --, приоритет на операторите.=== срещу ==; защо "4.10" < "4.2" е true.&&, ||, !; truthy и falsy; || и ?? за стойности по подразбиране.if / else, switch, тернарният оператор; guard clauses (ранно спиране).for, while, do...while, break, continue.|| срещу ??.length; push, pop, slice, splice, at.indexOf, includes (списъкът с модели в примерното правило); split и join - също и за стойности, събрани в един string ("a;b", "key=value,key=value").for, for...of; Array.isArray.return.var срещу let / const, hoisting; защо насоките за правилата искат глобалните стойности да са const и никога да не се променят; чисти функции.function (x) {...} и като arrow functions.rule(doc).versionBelow(a, b); дълго правило, разделено на малки helper функции."Firmware Version", "12_4.20").in и Object.hasOwn; optional chaining ?..Object.keys, Object.values, Object.entries, for...in; извличане на информация от самия ключ."a.b.c": [value]).structuredClone.get(doc, path, fallback) с път като string или като array; обектът с подробности за emit, с колоните в определен ред.forEach, map, filter, find / findIndex / findLast, some, every, reduce; flat и flatMap.sort с функция за сравнение, toSorted; числа, strings, версии, няколко ключа.console.table за записи.Object.groupBy, Map); уникални стойности със Set.function (x) { ... }, forEach с push.library.js с първите helper функции.String: trim, toLowerCase, startsWith, endsWith, includes, slice, padStart, replaceAll, ...; кодиране на текста: Unicode, UTF-8, край на реда.test, match и capture groups, matchAll, replace с флага g, флагът i; четене на шаблоните в съществуващи правила.4.2.1.7-B00, 42107-C00, XR420_117): нормализиране и сравняване - една обща helper функция вместо копие във всяко правило.Date, часови зони, сравняване и изваждане на дати.Number, parseInt, toFixed, Math (max, min, round, floor, ...)."31_2.07"; възрастта на отчет при различни формати на датата.JSON.parse, JSON.stringify; какво JSON не може да съдържа; четене на примерни документи с fs.process, package.json, вградени модули, обектът console.require / module.exports, като обща library.js) и ES модули (import / export).try / catch / finally, throw, видовете грешки; защо catch, който само прави return, крие бъгове; защитен код за липсващи или странни данни.async / await и fetch - JSON от уеб API.emit() и папка с примерни документи.node:test и assert: helper функции, гранични случаи (edge cases), цели правила върху примерни документи.@typedef и // @ts-check (проверки и autocomplete в редактора, без build стъпка).След всяко занятие има малка задача върху JSON отчета. Тя се преглежда в началото на следващото занятие (около 15 мин).
Вижте Курсов проект.