background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Практика JavaScript с нуля за 2 часа. Сделаем целый сайт!"

input logo icon
Теги видео
|

Теги видео

javascript
js
уроки js
уроки javascript
типы данных javascript
курс javascript
webpack
практика javascript
javascript приложение
практика js
parcel
javascrip плагин
владилен
владилен минин
минин
конструктор сайтов
конструктор сайтов js
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:02
данному курсу потому что я уверен что
00:00:04
здесь на нефть для себя много чего
00:00:06
полезного и интересного про java script
00:00:08
что позволит тебе также с
00:00:10
прогрессировать как будет построим
00:00:12
процесс обучения в данном курсе я буду
00:00:15
показывать тебе с нуля создании
00:00:17
приложения без библиотеки и без
00:00:19
фреймворков на чистом java-script то
00:00:21
есть ты увидишь каждый мой шаг который
00:00:23
позволит с нуля написать приложение и
00:00:25
позже залить его на удаленный хостинг
00:00:28
для того чтобы другие также смогли
00:00:29
посмотреть на твой результат
00:00:31
также процесс обучения я построил
00:00:33
итеративно это означает что мы в начале
00:00:36
будем решать задачу и после будем искать
00:00:39
более оптимальное более красивое до него
00:00:41
решение то есть будем оптимизировать и
00:00:43
улучшать наш код то есть чтобы ты
00:00:46
понимал откуда и зачем берутся те или
00:00:48
иные решения также мы говорим поговорим
00:00:50
про настройка инфраструктура и зачем
00:00:53
нужны те или иные инструменты и какие
00:00:55
проблемы они решают в общем контента
00:00:57
здесь действительно будет много он будет
00:00:59
очень насыщенный и интересный
00:01:00
какие у меня есть рекомендации к
00:01:03
прохождению данного курса безусловно в
00:01:06
начале лучше смотреть что я пишу но
00:01:08
очень важно чтобы ты так же переписывал
00:01:11
для того чтобы набивать руку чтобы тоже
00:01:13
практиковаться и чтобы у тебя был
00:01:15
какой-то результат в идеале
00:01:17
если тебе на каком-то медь моменте будет
00:01:19
все понятно и ты остановишь ролик и
00:01:22
попробуешь из этого состояния сделать
00:01:24
что-то свое я буду подсказывать где это
00:01:26
можно будет сделать и по итогу мы
00:01:29
получим уже готовый результат который ты
00:01:30
сможешь использовать как тебе будет
00:01:32
угодно такие водные слова поэтому теперь
00:01:35
давай начинать и начнем пожалуй с самого
00:01:38
основного это с текстового редактора где
00:01:41
мы будем вести разработку в
00:01:43
дополнительных материалах к данному
00:01:45
видео я оставлю ссылки на два текста
00:01:47
выходе доктора которые я считаю идеально
00:01:50
подойдут для данного курса
00:01:51
лично я же буду использовать текстовый
00:01:53
редактор в шторм и вот и можешь найти
00:01:56
вот по такому запросу если не хочешь
00:02:01
смотреть дополнительные материалы
00:02:02
то есть это умная среда разработки для
00:02:04
java скрипт на сайте jabra.com
00:02:06
вот сам редактор является платным однако
00:02:09
у него есть бесплатная версия на 30 дней
00:02:11
то есть можно скачать
00:02:12
будет все то же самое что и у меня если
00:02:15
тебе нравится бесплатные но не менее
00:02:16
крутые решения то тогда тебе подойдет
00:02:18
вот такой редактор visual studio код он
00:02:21
уже от компании microsoft
00:02:24
тут его можно скачать и установить себе
00:02:26
на компьютер и в принципе все будет
00:02:28
похоже то есть интерфейс будет другой но
00:02:30
в конечном итоге нам важно чтобы мы
00:02:32
написали работающее приложение
00:02:34
то есть этого мы начнем я буду
00:02:37
использовать веб шторм то есть при
00:02:39
запуске он выглядит таким образом и
00:02:41
первое что мы делаем мы создаем наш
00:02:44
проект нажимаю кнопочку create project и
00:02:46
давай я его назову то есть мы чтобы
00:02:48
разрабатываем сейчас конструктор сайтов
00:02:50
на чистом java-script приложение будет
00:02:52
динамичная и интересная я назову его
00:02:56
допустим джесс конструктор посмотрим
00:03:02
есть ли у меня такой проект еще такого
00:03:04
нет все и я получаю абсолютно чистый
00:03:07
проект то есть на самом деле это всего
00:03:08
лишь папочка да где я буду складировать
00:03:11
все файлы которые мне потребуются для
00:03:12
разработки и на самом деле начать нам
00:03:16
стоит того что мы разрабатываем с тобой
00:03:19
в браузере да поэтому я создаю здесь
00:03:22
файл индекса html который будет является
00:03:24
заглавным файлам для нашего приложения
00:03:26
далее здесь мы можем воспользоваться
00:03:29
такой интересной функции как поставить !
00:03:33
и нажать tab это эммет то есть плагин
00:03:36
позволяющий оптимизировать работу с html
00:03:39
чтобы быстрее писать чтимой потому что
00:03:41
тут структура принципе очевидно какая
00:03:43
вот и тем самым мы генерируем начальный
00:03:46
шаблон в visual studio код примерно та
00:03:49
же самая история то есть там тоже ты
00:03:51
получишь примерно такой же результат на
00:03:53
самом деле из главного нам здесь нужно
00:03:55
только чтобы был доктоp html head
00:03:59
возможно этот так тайтл и открытой body
00:04:02
то есть вот этот вот так в принципе мы
00:04:04
можем и удалить чтобы он нам не мешал
00:04:10
давай здесь мы задаем к нибудь тайтон
00:04:12
пример java-script
00:04:15
конструктор
00:04:18
и далее для того чтобы нам упростить
00:04:23
взаимодействие со стилями потому что
00:04:25
весь акцент мы будем делать на java
00:04:26
script я подключусь с с фреймворк он
00:04:29
называется bootstrap находится по адресу
00:04:33
get bootstrap точка ком здесь мы можем
00:04:36
перейти в поле keys to that то есть нам
00:04:39
здесь жалких не потребуется нам
00:04:40
потребуется только его с.с.
00:04:42
поэтому я беру копируем данный css
00:04:45
перехожу в web шторм и вставляю просто в
00:04:48
секцию head
00:04:50
да то есть таким образом у меня
00:04:51
получился bootstrap и я смогу его
00:04:53
использовать теперь давай зададим
00:04:55
базовую разметку
00:04:56
то есть опять же на стилем и сильные
00:04:58
обращать внимание здесь не будем тем не
00:05:00
менее про них не стоит забывать
00:05:01
для начала у нас будет класс который
00:05:05
называется контейнер fluid здесь я также
00:05:09
использую м то есть пишу точку селектор
00:05:11
класса дальше нажимаем тab и получаю
00:05:13
целый div внутри нам потребуется 2
00:05:16
класса
00:05:17
это bg light для того чтобы задать серый
00:05:22
цвет тому месту где у нас будет
00:05:24
находиться непосредственно сам
00:05:26
конструктор и я еще 21 класс который
00:05:29
назову sidebar это уже будет свой класс
00:05:31
который я буду сам стилизовать и также
00:05:33
мне потребуется здесь кто-нибудь другой
00:05:35
класс который я назову например контент
00:05:38
теперь я задам айдишники данным блоком
00:05:40
для того чтобы впоследствии с ними было
00:05:42
проще работать корневом блока я задам
00:05:44
айди об потому что сокращенно от
00:05:47
applications и здесь были храниться все наше
00:05:49
приложение допустим этому devon это у
00:05:52
нас sidebar да то есть здесь у нас будет
00:05:54
форма где мы будем конструировать наш
00:05:56
будущий сайт допустим я назову а идея
00:05:58
пену и здесь допустим я задам айди
00:06:02
скажем сайт а почему бы и нет
00:06:05
далее я хочу стилизовать все эти блоки
00:06:08
для этого в корне я создам новый файл
00:06:10
которую назову main .
00:06:12
css и вставлю сюда заранее готова и
00:06:15
стиля на самом деле они очень просты и
00:06:17
то есть блоку с и диап я задаю позиций
00:06:21
армейцев
00:06:22
контенту я сдаю позицию абсолют и отступ
00:06:25
слева 200 пикселей
00:06:26
что равняется ширине как ростки сайдбары
00:06:29
но сайдбары здесь позишн fix
00:06:31
и есть определенные стили типа по 1 га
00:06:34
бог shadow и так далее то есть это что
00:06:37
касается стилей не забываем подключить
00:06:39
данный стиль и после bootstrap а файл
00:06:43
называется main . css и теперь в
00:06:46
принципе мы можем посмотреть на то что
00:06:48
мы уже получили значит если ты работаешь
00:06:51
в web штормит то наведя на правый
00:06:54
верхний угол тут есть такие иконочки и
00:06:56
учитывая что я работаю в храме то я могу
00:06:59
нажать на кнопочку хрома откроется
00:07:02
некоторый локалхост и здесь мы можем
00:07:05
видеть тот проект который мы только что
00:07:07
и создали
00:07:08
теперь соответственно мы можем
00:07:10
поговорить про наполнение самого сайта
00:07:13
да это как раз таким block content
00:07:16
значит из чего наш сайт будет состоять
00:07:18
вначале я хочу все это определить в html
00:07:22
чтобы впоследствии было проще переносите
00:07:24
в java script для этого мы будем
00:07:27
использовать очень простую конструкцию
00:07:29
то есть для того чтобы создать один блок
00:07:33
я создаю div с классом ролл и дальше
00:07:36
буду пользоваться другим классом внутри
00:07:39
то есть части реагирует быстро по трубы
00:07:41
называется call с м такой структуре
00:07:45
будет определяться у нас один блок ну и
00:07:47
допустим мы рассмотрим некоторые типы
00:07:49
блоков скажем для начала я веду
00:07:51
заголовок h1 например хеллоу ворлд
00:07:55
естественно
00:07:56
впоследствии все текстом и конечно же
00:07:59
заменим то есть это у нас бы blogs
00:08:01
тайтлом допустим теперь я задам блок
00:08:04
например с текстом в параграфе p здесь
00:08:08
кстати мы можем вести вот такое сниппет
00:08:10
написать lorem и дальше количество слов
00:08:12
которые нам нужно например 10 нажать tab
00:08:15
и вы получаем мог выйти кст который нам
00:08:19
служит для разработки
00:08:21
значит копируем данную структуру
00:08:25
допустим мы будем также рассматривать
00:08:27
еще вариант с колонками колонки я буду
00:08:31
определять таким образом то есть у меня
00:08:33
будет несколько блоков с классом колосом
00:08:38
например и внутри будет некоторый текст
00:08:40
и также нам необходимо рассмотреть
00:08:43
картинку
00:08:44
но картинку давай рассмотрим чуть позже
00:08:45
да пока вот пойдем с этими тремя блоками
00:08:48
нам этого будет достаточно для понимания
00:08:50
собственно переходим браузер обновляем
00:08:52
страницу и вот мы получаем наш исходный
00:08:55
результат то есть пока это все не очень
00:08:57
красиво но тем не менее мы видим что
00:08:59
есть бог с названием есть текст и есть
00:09:03
колонки да то есть нам нужно нужно было именно
00:09:05
эта структура соответственно в чем
00:09:08
заключается следующая наша задача в том
00:09:10
чтобы создать какой-нибудь java script и
00:09:13
уже динамически выводить весь этот
00:09:15
контент для этого я создаю новый файл в
00:09:19
корне который назову например яндекс .
00:09:21
джесс и безусловно мне необходимо его
00:09:24
будет подключить подключить его лучшие
00:09:26
перед закрывающем тэгом body
00:09:28
если пишу скрипт и указываю source
00:09:32
атрибут source на файл индекс .
00:09:36
джесс по сути теперь я хочу уже
00:09:39
порассуждать то есть в чем заключается
00:09:41
теперь идея понятна для того чтобы
00:09:44
встроить
00:09:45
сайт через java script вот эти все еще
00:09:48
нам необходимо будет сдавать динамически
00:09:50
то есть все вот эти вот блоки роу нам
00:09:53
необходимо будет создавать через java
00:09:55
скрипт сам блок контент или айди сайт он
00:10:00
должен быть у нас пустой соответственно
00:10:02
нам нужно придумать
00:10:03
модель модель это просто некоторые
00:10:06
java-script объект некоторая сущность
00:10:08
которые может описать вот этот вот и
00:10:10
чтимый блок учитывая что у нас тут есть
00:10:14
явный список да то есть вот один элемент
00:10:17
вот другой элемент вот третий элемент и
00:10:20
так далее да то есть сам стоит сайт
00:10:22
строится именно по боковым
00:10:24
мы можем это все описать в массиве да то
00:10:29
есть массив это набор как раз таки
00:10:31
различных объектов которые мы можем
00:10:33
сохранить то есть наша задача сводится к
00:10:36
тому чтобы придумать такой массив
00:10:38
который сможет в java script описать эти
00:10:40
блоки и дальше с помощью этой модели
00:10:43
этого массива уже сформировать такой из
00:10:45
темы на самом деле все это выглядит очень
00:10:47
просто но и пробуем значит я создаю
00:10:51
константу зову ее модель это будет у
00:10:55
меня массив
00:10:56
безусловно в массиве мы можем хранить
00:10:58
как и стройке так и числа но также мы
00:11:01
можем хранить в них и объекты
00:11:04
объект java script такая универсальная
00:11:07
сущность которая по сути является
00:11:09
некоторой группировкой свойств да то
00:11:12
есть тут мы можем хранить все что
00:11:14
пожелаем и в этом объекте вот допустим я
00:11:18
хочу описать первый блок блок называется
00:11:20
тайтл
00:11:21
дату здесь мы храним некоторые название
00:11:23
соответственно какие у него должны быть
00:11:25
значения ну во первых я хочу вести здесь
00:11:28
поле type
00:11:29
так который будет указывать какой же тип
00:11:32
да у этого блока и тут я сам придумывает
00:11:35
название например тайтл дальше значит на
00:11:39
самом деле мы примерно понимаем
00:11:40
структуру шаблона до этого блока и нам
00:11:43
нужно вот это вот значение потому что
00:11:45
именно его мы сможем конструировать как
00:11:47
раз таки через нашу форму и я предлагаю
00:11:50
называете это поле целью да то есть пока
00:11:53
мы можем его просто писать как low
00:11:55
world from jis например и на самом деле
00:12:00
этого в принципе для начала нам будет
00:12:02
достаточно
00:12:03
то есть теперь наша задача чтобы мы по
00:12:07
сути придумали такие же объекты которые
00:12:09
будут описывать и другие блоки
00:12:10
собственно идем дальше смотрим значит
00:12:12
здесь у нас уже текст до поэтому если
00:12:15
пишу тает текст и также вылью здесь будет
00:12:20
меня какое-то значение текста я воин гол
00:12:25
вы сам текст да пока это просто
00:12:28
временное решение поэтому могу себе
00:12:30
позволить то есть тут я пишу сама
00:12:33
значение текста потому что структуры я
00:12:35
понимаю и здесь у нас находится параграф
00:12:37
п
00:12:38
какие что касается теперь колонок с ними
00:12:42
в принципе то же самое то есть я назову
00:12:45
тип например column
00:12:50
и в данном случае в эти у нас будет не
00:12:53
просто как строка да потому что тут у
00:12:56
нас уже множество элементов
00:12:59
соответственно раз это множество то это
00:13:01
у нас массив
00:13:02
да поэтому здесь я пишу массив который
00:13:04
будет состоять из различных строк ну
00:13:06
допустим пока что чтобы нам просто
00:13:09
определить что мы делаем все правильно
00:13:11
значит я поставлю вот такие вот классные
00:13:15
строчки которые позволят нам определить
00:13:18
сколько всего у нас будет колонны чик в
00:13:22
данном блоке и теперь получается что у
00:13:25
нас есть модель и теперь мы можем с
00:13:27
помощью этой модели сгенерить нужные и
00:13:29
чтим и таким образом ну для начала нам
00:13:32
необходимо понять куда мы хотим
00:13:34
рендерить весь этот контент до
00:13:36
соответственно это нас blog site поэтому
00:13:39
я могу начали должен получить доступ до
00:13:42
этого блока с помощью документ к вере
00:13:46
selector и дальше описываю здесь обычный
00:13:50
css селектор что с меня интересует сайт
00:13:53
как результат я получаю переменную
00:13:55
которую назвал например сайт здесь я
00:13:59
придерживаюсь такой идеи что те
00:14:02
переменные которые я получаю который
00:14:05
является дом элементами ну например
00:14:07
которые возвращаются из методы кайри
00:14:09
селектор я обозначаю через доллар
00:14:11
то есть эта практика пришла из старинных
00:14:15
времен когда мы использовали джейк вере
00:14:17
вот сейчас magic вере почти не
00:14:18
используем но при этом так проще
00:14:20
отличать какие элементы у нас являются
00:14:22
дом элементами какие просто являются
00:14:24
переменными то есть со знаком доллара
00:14:27
можно его не ставить и дальше получается
00:14:30
что сюда нам нужно положить весь этот
00:14:34
контент соответственно нам нужно пробежаться по
00:14:36
массиву моду и сгенерировать html
00:14:40
зависимости от каждой
00:14:41
модельки до от каждого объекта для этого
00:14:44
мы можем обратиться к нашему массиву
00:14:46
модом и вызвать у него метод который
00:14:49
называется for each то есть этот цикл
00:14:51
позволяющие пробегаться по каждому
00:14:53
элементу где на каждой итерации мы
00:14:55
получим элемент блок и
00:14:59
в foreach мы придаем кабака функцию
00:15:01
здесь я пишу встречную функцию
00:15:03
и теперь если мы посмотрим например в
00:15:06
консоли что такое у нас блок
00:15:09
1-ю страницу
00:15:11
открою консоль то вот мы получаем объект
00:15:17
который как раз таки мы описывали в
00:15:20
нашем массиве
00:15:22
отлично теперь как сформировать html для
00:15:26
данного объекта для начала нам нужно
00:15:29
определиться а какой вообще html
00:15:31
сформировать то есть тут мы зависим
00:15:33
именно от типа данного блока поэтому
00:15:36
самое простое что я могу сделать это
00:15:37
написать если блок
00:15:40
type датой с помощью именно типа мы
00:15:43
определяем какой чтимой нам нужно будет
00:15:44
сделать
00:15:45
допустим равняется тайтл то в таком
00:15:49
случае я хочу сформировать некоторые
00:15:53
темы 2 его создам здесь что мы силы .
00:15:56
по умолчанию это будет пустая строка
00:15:58
здесь я использую лет потому что html у
00:16:01
меня будет изменяться в зависимости от
00:16:03
условия и соответственно пишу что в
00:16:06
таком случае если это той тута html
00:16:08
будет равняться здесь внимательно
00:16:10
я ставлю такие обратные кавычки потому
00:16:12
что в них я могу сказать форматирование
00:16:15
строк и вставляешь организацию в java
00:16:18
script
00:16:19
то есть я беру дальше и копирую всю эту
00:16:21
структуру на самом деле могу и даже
00:16:24
вырезать отсюда потому что она точно не
00:16:26
потребуется и вставить прямо сюда
00:16:29
матирование то есть мы получаем вот
00:16:31
такой вот шаблон но теперь нам нужно
00:16:35
использовать как то еще вот этого
00:16:36
значения всю да потому что если мы
00:16:38
останемся в таком виде то каждый раз у
00:16:41
нас будет статический текст
00:16:42
поэтому не все удаляю ставлю такие
00:16:44
символы доллар и здесь в горные скобочки
00:16:48
которые позволяют прямо внутри строчки
00:16:50
писать java script и значение которое
00:16:54
нам нужно находится в поле в илью то
00:16:56
есть если пишу блог .
00:16:58
целью собственного дальше мы делаем то
00:17:04
же самое проверяем что если блок стоит 1
00:17:07
равняется например текст дату и
00:17:10
следующему типу то это означает что
00:17:12
переменные и системы нам необходимо
00:17:15
присвоить
00:17:16
шаблон блока текст поехали тоже могу
00:17:21
вырезать отсюда ставить сюда про и
00:17:24
форматирование убрать лишний
00:17:26
enter и то же самое что тут нас другой
00:17:30
шаблон в параграфе мы вставляем также
00:17:32
блог ольга у нас есть еще один блок else
00:17:38
if блок type равняется columbus
00:17:45
то пока я оставлю здесь пустое
00:17:50
пространство если у тебя есть идеи как
00:17:52
это реализовать то напиши лучше это
00:17:54
самостоятельно потом проверь с моим
00:17:55
решением пока что я хочу протестировать
00:17:58
то что у нас уже получилось да
00:18:01
соответственно что у нас есть у нас есть
00:18:03
некоторые переменной html она является
00:18:06
обычной строчкой и по сути дальше нам
00:18:09
просто это ты чтим и необходимо
00:18:10
поместить как контент в более сайт blog
00:18:13
site да соответственно мы можем
00:18:15
обратиться к нашему сайту дальше у дом
00:18:20
элементов таких которым мы получаем есть
00:18:22
метод который называется insert adjacent
00:18:29
html
00:18:30
этот метод позволяет вставляете в
00:18:33
определенное место и чтим и на который
00:18:36
представлен в виде строчки первый
00:18:38
параметр мы здесь указываем куда именно
00:18:41
нам необходимо вставить этот контент а
00:18:43
вторым параметром мы в общем то
00:18:45
описываем ту строчку который является
00:18:46
html в нашем случае вот этот метод он
00:18:50
принимает себя первым параметром 4
00:18:55
фиксированные строчки допустим месяц и
00:18:57
не знаю что можно скопировать название
00:18:59
данного метода перейти в google
00:19:01
кстати тоже очень важное умение находить
00:19:03
информацию и
00:19:05
любую документацию я рекомендую читать
00:19:07
на сайте девелопер mozilla арк вот у нас
00:19:10
есть описание этого метода все что
00:19:13
джастин элемент тут все на русском языке
00:19:16
то есть
00:19:18
написано чем он отличается например и
00:19:20
нарочь тем или почему уже его
00:19:21
использовать и вот первый параметр это
00:19:23
позиция значит у него есть четыре как я
00:19:28
говорю в ряд
00:19:29
это by forbidden то есть до самого
00:19:31
элемента до открывающего тега автор
00:19:34
бегин после открывающего тега before and
00:19:37
after and вот наглядный пример того как
00:19:40
это выглядит то есть в нашем случае сам
00:19:42
элемент это элемент п если это by
00:19:44
forbidden то он идет до параграфа если
00:19:47
автор bigint то сразу же после открытия
00:19:50
before and или autorent логично что раз
00:19:55
мы поочередно вставляем эти блоги то нам
00:19:57
нужно использовать параметр by four and
00:20:00
то есть каждый раз блок будет
00:20:02
вставляться перед концом и в общем то
00:20:04
идти вниз вот тут есть различные примеры
00:20:07
как это использовать
00:20:08
но мы сейчас сами с этим и
00:20:10
попрактикуемся то есть нас интересует
00:20:12
параметр by far and кстати наверняка ты
00:20:18
обратил внимание вот на эту штуку на
00:20:20
случай написано в.р.
00:20:21
этот текст и я не пишу это подсказка
00:20:24
редактора которая говорит мне как
00:20:26
называется параметр то есть то что так
00:20:29
вот выглядит это просто подсказочка
00:20:31
называется натэйша да здесь тоже
00:20:33
то есть ничего нет никакого текста
00:20:36
поэтому его ни в коем случае нельзя
00:20:37
переписывать вот все что меня здесь
00:20:39
написан да если я скопирую вот это не
00:20:43
перенесу сюда то ты ешь нет никакого
00:20:45
здесь селектора да то есть это просто
00:20:47
подсказка о марте на это внимание и так
00:20:51
мы поместили значит в наш сайт html и в
00:20:55
принципе можно даже уже посмотрите что
00:20:56
получилось то есть я обновляю страницу и
00:20:58
вот у нас есть колонки до которые мы
00:21:01
пока еще не убрали и сочтем или но тем
00:21:04
не менее у нас уже есть то что мы
00:21:07
описали в модели круто
00:21:09
на мой взгляд естественно это круто
00:21:10
значит теперь если вернуться к коду и
00:21:13
посмотреть вот на то что мы написали то
00:21:16
конечно же это все работает но это
00:21:18
решение абсолютно не масштабируемая
00:21:19
потому что ну если нам потребуется давай
00:21:23
сюда еще колонке мы будем писать здесь
00:21:25
отдельные функционал короче говоря я
00:21:27
хочу чтобы теперь мы подумали о по
00:21:29
небольшой оптимизации всего этого кода и
00:21:31
сделали его красивым значит вот такие
00:21:35
вещи лучше вырастить в функцию да я
00:21:38
создам функцию которая самом деле будет
00:21:40
являться таким никита
00:21:41
которым компонентом позволяющий на
00:21:43
основе параметры блок генерировать нам
00:21:45
нужны и чтим и таким образом мы сможем
00:21:47
вынести его отсюда и разгрузить данный
00:21:50
блок например я создам функцию значит
00:21:55
здесь мы работаем so tight вам поэтому я
00:21:57
так и назову ее тайтл и я хочу чтобы эта
00:22:00
функция принималось себя параметр
00:22:03
блок на выходе она будет нам возвращать
00:22:07
вот такую строчку то есть я сюда и
00:22:10
вырезаю и вставляю сюда то есть по сути
00:22:13
данная функция она принимает себя объект
00:22:15
и возвращает нам уже готовые each темы и
00:22:18
теперь у нас определение выглядит таким
00:22:20
вот образом
00:22:21
вызываем функцию тайтл не сюда передаем
00:22:23
сам блок кстати из интересного здесь я
00:22:29
создал эту функцию через ключевое слово
00:22:31
function естественно я мог создать эту функцию
00:22:33
через допустим ключевое слово const как
00:22:36
встречную функцию но ты можешь
00:22:40
попробовать и у тебя будет ошибка потому
00:22:42
что только те функции которые были
00:22:46
определены с помощью ключевого слова
00:22:47
фанкшн мы можем вызывать до того момента
00:22:50
как они были определены
00:22:52
эта особенность java-script поэтому
00:22:54
здесь для того чтобы точно избежать
00:22:56
каких-либо проблем я ее создаю через
00:22:58
фанкшн и
00:22:59
это точно все будет работать
00:23:01
соответственно дальше я беру вырезаю то
00:23:04
что мы делали для текста
00:23:06
буду звать функцию текст когда я буду
00:23:08
передавать блок да и то же самое из
00:23:10
фанкшн
00:23:12
текст вам принимает себя бог и он также
00:23:15
нам возвращает вот такой шаблон то есть
00:23:20
если мы посмотрим то ничего не
00:23:21
изменилось дай при этом наш кот стал
00:23:23
более читаемым
00:23:25
драйвер самый сделан для колонок то есть
00:23:28
сразу же создал эту функцию пусть ему за
00:23:33
вы и колун она будет принимать себя блок
00:23:35
сейчас подумаем как ее реализовать
00:23:38
здесь мы будем писать html равно колонн
00:23:41
и сюда мы передаём параметр блок в
00:23:46
качестве чтим или я вырежу все это и
00:23:49
теперь получается что у нас есть
00:23:51
абсолютно пустой
00:23:52
div
00:23:53
с айди сайт но при этом все остальное мы
00:23:55
делаем через java script здесь я
00:23:58
возвращаю
00:23:59
вот такой вот шаблон теперь как нам
00:24:03
сформировать динамически вот эти вот
00:24:05
блоки да потому что сейчас мы указали
00:24:07
здесь три колонки
00:24:10
но мы же можем здесь допустим указывать
00:24:12
и например 4 колонки нам нужно чтобы мы
00:24:18
не изменяли нашу функцию и при этом
00:24:21
генерируя с необходимое количество
00:24:22
колонок для этого нам нужен цикл по
00:24:26
массиву потому что мы знаем что в block
00:24:28
value нас находится массив и по сути тут
00:24:31
такая же идея да просто мы в самой
00:24:33
функции calans будем генерить отдельно
00:24:35
вот этот контент
00:24:36
значит безусловно мы можем пойти сложным
00:24:40
путём например написать html
00:24:42
но пустая строка дальше мы допустим
00:24:45
сделаем блок целью это мастиф нас да то
00:24:49
есть мы можем сделать вич допустим есть
00:24:52
у нас будет ой там где этом
00:24:55
это как раз таки контент до данного
00:24:57
массива и дальше нам необходимо к строке
00:25:00
html
00:25:01
допустим таким вот способом добавить
00:25:04
шаблон
00:25:05
то есть его отсюда вырезаю вставляю сюда
00:25:10
и только вместо этого фиксированного
00:25:12
текста я добавляю здесь и далее вот этот
00:25:18
вот статический текст и отсюда вырезаю у
00:25:20
нас уже есть готовый each темы которые я
00:25:23
просто могу вставить вот сюда
00:25:24
peace of each темы дай теперь если мы
00:25:27
посмотрим 1-ым страницу вот получается
00:25:30
нас есть наша колонки причем обрати
00:25:33
внимание что мы не меняли
00:25:35
java-script и при этом у нас есть четыре
00:25:37
колонки если мы хотим здесь 5 колонок
00:25:39
или 6 колонок например то вот они сами
00:25:43
генерируются да это как раз таки то что
00:25:46
позволяет нам делать цикл
00:25:48
вот естественно данный код можно намного
00:25:51
круче написать давай сразу же посмотрим
00:25:53
потому что это совсем не очень хорошо
00:25:57
помимо методов урыть в массивах
00:25:59
присутствует такой метод как мы
00:26:01
позволяющий сразу же трансформировать
00:26:03
массив во что-то
00:26:05
то есть мы можем написать следующим
00:26:07
образом блок целью
00:26:09
дальше вызываем метод move
00:26:12
метод мэп он также принимает себя call
00:26:14
back где на каждой итерации мы получаем
00:26:17
объект ой там он точно такой же как и
00:26:19
здесь и тут уже на выходе мы можем
00:26:22
вернуть строчку да то есть учитывая что
00:26:26
я пишу стрелочный функции одну строчку
00:26:28
не не нужно писать и certain хотя мы
00:26:30
обязаны здесь что-то возвращать дальше я
00:26:33
оставляю данный div закрывают div и сюда
00:26:37
вставляю наш ой там соответственно на
00:26:43
выходе я получаю переменную html и вот
00:26:45
это вот все мы теперь можем уже убрать
00:26:47
то есть теперь мы все это написали в
00:26:49
одну строчку и посмотрим обновляю
00:26:51
страницу все хорошо только здесь есть
00:26:54
запятые потому что метод map
00:26:56
он возвращает нам массив и когда мы
00:27:00
пытаемся массив вывести в строчку то он
00:27:04
соединяется запятыми для того чтобы эти
00:27:07
, убрать мы можем сами соединить этот
00:27:09
массив с помощью метода join с помощью
00:27:12
пустой строке чтобы убрать , и тем самым
00:27:14
мы получаем вот такой вот тот же самый
00:27:18
результат только теперь он намного более
00:27:20
лаконичной и красивый теперь давай
00:27:23
поговорим про четвертый тип блоков
00:27:25
который у нас будет эта картинка значит
00:27:28
сейчас я создам новую директорию которую
00:27:31
назову этот
00:27:32
я сюда вставлю картинку картинку то
00:27:35
сможешь найти в дополнительных
00:27:36
материалах к данному курсу
00:27:40
нас есть теперь картинка и давай то же
00:27:42
самое сделаем для нее
00:27:44
то есть дети напишу type допустим это
00:27:49
будет и матч то есть мы уже работаем
00:27:51
исключительно через java script белье
00:27:56
допустим у него будет путь месяц имидж .
00:28:01
png теперь тоже самое делаем для
00:28:06
картинки
00:28:08
и мяч и здесь мы вызываем функцию и мяч
00:28:13
которые естественно пока еще не создали
00:28:17
принимает себя блок и здесь мы будем
00:28:22
возвращать строчку
00:28:23
значит div с классом row и допустим
00:28:34
сразу же будем выводить картинку без
00:28:36
колонки чуть позже мне это потребуется
00:28:39
для того чтоб правильностью стилизовать
00:28:40
то есть таким же и source мы указываем
00:28:45
на блок вылью но и посмотрим сохраняю
00:28:51
обновляю страницу да и вот мы получаем
00:28:53
нашу картинку то есть как видишь данная
00:28:57
система у нас заработала и
00:28:58
пока что все хорошо теперь если мы
00:29:01
посмотрим на данный файл то мы найдем
00:29:04
здесь большое количество проблем
00:29:06
в том плане что файл довольно таки
00:29:08
большой получается и тут есть разные
00:29:11
сущности которые отвечают за абсолютно
00:29:14
разные действия то есть есть модель есть
00:29:17
какие-то селекторы
00:29:19
какой-то цикл функции отдельные то есть
00:29:22
хочется чтобы все это было по модуль на
00:29:24
расположенное не находилась в одном
00:29:26
файле то есть вообще в идеале все
00:29:28
декомпозировать для того чтобы в одном
00:29:30
файле было как можно меньше кода для
00:29:32
того чтобы прочим с этим
00:29:33
взаимодействовать
00:29:36
безусловно может возникнуть вопрос а как
00:29:41
модульную систему эту правильно
00:29:42
организовать и сейчас я покажу тебе
00:29:45
очень крутой инструмент который очень
00:29:47
прост в настройке и при этом он
00:29:49
позволяет нам создавать очень крутые
00:29:51
приложения то есть сейчас во первых нам
00:29:54
нужно модульность в java script
00:29:56
естественно мы можем создавать отдельные
00:29:57
файлы в корне но это не очень удобно
00:30:00
плюс не очень удобно что каждый раз мне
00:30:02
приходится заходить в браузер обновлять
00:30:04
страницу вручную хочется чтобы это все
00:30:06
делалось
00:30:07
автоматически поэтому переходим google и
00:30:09
ищем вот такую штуку как парсел джесс
00:30:13
точка орг сразу же перешел на сайт эта
00:30:15
технология
00:30:16
эта технология называется партию и
00:30:19
прелесть ее заключается в том
00:30:21
по он очень быстрый он требует вообще не
00:30:25
требует на фигура ция никакой и он
00:30:27
служит для того чтобы собирать web
00:30:29
applications то что нам как раз таки
00:30:31
нужно можно еще почитать здесь про
00:30:33
прелесть как его использовать ну и
00:30:35
перейдём в get started
00:30:36
и вот как нам необходимо его установить
00:30:39
но для того чтобы сделать такую команду
00:30:43
чтобы все работало нам безусловно
00:30:45
потребуется но джесс установлен на
00:30:47
компьютере потому что мы здесь
00:30:49
пользуемся npm им если у тебя вдруг не
00:30:51
стоит но джесс кстати проверить это
00:30:54
можно следующим образом
00:30:55
открыть какой-нибудь терминал и написать
00:30:58
такую команду not минус в если у тебя
00:31:02
выдается версия то на всякий случай
00:31:04
проверим pen винус в
00:31:06
если выдается версия то все хорошо если
00:31:10
эти команды не работают тогда переходи
00:31:12
на сайт но джесс на это серверный
00:31:18
java-script
00:31:19
скачиваешь текущую версию то есть просто
00:31:22
скачиваем архив
00:31:23
устанавливаешь на компьютер и все больше
00:31:24
нечего делать то мне придется тут нет
00:31:26
никаких сложных шагов и после этого
00:31:29
снова проверю в консоли чтобы у тебя
00:31:30
выдавалась такая команда собственно
00:31:33
теперь с помощью and emma терминалами
00:31:35
буду пользоваться прямо внутри в шторм а
00:31:37
мы будем уже по настоящему генерировать
00:31:40
наше приложение
00:31:42
чуть позже нам это очень сильно поможет
00:31:44
с точки зрения различных билдов пока что
00:31:46
делаем следующее то есть нам необходимо
00:31:48
начали проинициализировать наше
00:31:50
приложение и для этого мы можем написать
00:31:52
команду npm и нет нажимаю enter и для
00:31:58
начала мы проходим некоторые шаги
00:31:59
позволяющие нам настроить будущий файл
00:32:02
то есть здесь можно нажать enter
00:32:04
название проекта версия пусть будет по
00:32:07
умолчанию допустим скрип чем будет java
00:32:10
script и your applications
00:32:14
ну тут можно любой descripcion вставлять
00:32:17
entry point у нас будет индекс джесс
00:32:19
оставляю по умолчанию тестовые команды
00:32:22
пропускаю пропускаю ключевые слова можно
00:32:25
здесь написать например джесс
00:32:28
java-script
00:32:31
автор обычно здесь пишется с таким
00:32:33
образом то есть я пишу свое имя и дальше
00:32:35
в треугольном сколько шу почта например
00:32:38
в mail.ru
00:32:41
пишу несуществующую почту просто чтобы
00:32:44
объяснить принцип лицензия по умолчанию
00:32:46
нажимаю and рокки в корне мы получаем
00:32:50
файл hex . джейсон где в принципе
00:32:52
написаны все эти вещи которые мы только
00:32:53
что делали из консоли на самом деле
00:32:56
данный файл нам потребуется для того
00:32:58
чтобы установить зависимость то пока нет
00:33:00
поля deep and nice но сейчас она
00:33:02
появится и для того чтобы все это
00:33:05
установить посмотрим на сайте мы просто
00:33:09
должны написать либо
00:33:11
как глобальную установку млн 100 минус
00:33:14
же партию bunlar либо тут где-то есть
00:33:16
установка локальной а вот если мы хотим
00:33:20
добавлять его к нашему проекту это то
00:33:23
что нам нужно в данном случае
00:33:24
соответственно я копирую данную команду
00:33:28
вставляю ее в консоль здесь происходит
00:33:31
следующее что мы обращаемся к м тему
00:33:33
говорим что нам нужно что-то установить
00:33:35
название пакета и дальше флаг с iv tf
00:33:39
для того чтобы мы записали данный пакет
00:33:43
как зависимость именно для разработки то
00:33:46
есть это у нас
00:33:47
инструмент позволяющий нам просто
00:33:48
удобнее разрабатывать но никак не писать
00:33:51
сам функционал дальше просто ждем потому
00:33:55
что mpm скачивает необходимый пакет
00:33:58
устанавливает его локально на компьютер
00:33:59
на это потребуется некоторое количество
00:34:01
времени
00:34:02
но это того точно стоит то сейчас
00:34:05
увидишь в чем вообще прелесть
00:34:08
использование различных
00:34:09
баннеров в том числе паршиво когда все
00:34:13
закончилось мы можем обновить проект и
00:34:15
мы получаем здесь следующую значит новую
00:34:18
картину то есть мы получаем папку но от
00:34:20
мобиус
00:34:21
здесь присутствует большое большое
00:34:23
количество различных файлов на самом
00:34:26
деле можешь на них внимание не обращать
00:34:27
потому что это всего лишь зависимости то
00:34:31
что нам важно у нас появилось поле dvd
00:34:33
pendants и появился пакет парсел bunlar теперь мы
00:34:38
сможем его использовать но для начала я
00:34:40
хочу немножечко видоизменить теперь наш
00:34:42
проект потому
00:34:43
видишь теперь есть проблема в том плане
00:34:44
что все идет в перемешку сейчас да и
00:34:47
какие то папке файлы
00:34:49
то есть тут есть некоторые конфигурации
00:34:52
например вот моде us epa пищи . джейсон
00:34:55
те файлы которые относятся нас именно к
00:34:57
проекту
00:34:58
я хочу занести в папку source сердце
00:35:01
этого общепринятое название я просто
00:35:04
беру переношу сюда все это дело и также
00:35:07
переношу папку assets of в папку source
00:35:10
то есть теперь мы знаем что в папке
00:35:13
source вас лежат все исходники
00:35:14
все что в другом месте это относится уже
00:35:17
непосредственно к нашему проекту
00:35:20
теперь значит у нас тут есть поле скрипт
00:35:25
и мы можем его модифицировать значит
00:35:28
сейчас я покажу как этим пользоваться
00:35:30
факт в том что давай назовем запустим
00:35:34
скрипт который будет запускать нам
00:35:36
приложение surf здесь мы обращаемся к
00:35:40
по всему то есть просто пишем здесь пар
00:35:42
сюда это обычная строчка и дальше по
00:35:45
сути мы просто указываем точку входа то
00:35:47
есть чего ему стоит начать работу нам
00:35:49
нужно начать работу здесь с яндекс и
00:35:51
чтим и то есть это у нас является точкой
00:35:53
входа
00:35:54
поэтому мы так и пишем что мы переходим
00:35:56
в папку source и я нахожу файл который
00:35:59
называется индекс html на самом деле это
00:36:02
все то есть вот наша команда
00:36:03
и как ее теперь запустить переходим в
00:36:07
консоль и учитывая что мы назвали скрипт
00:36:09
surf ты кстати можешь назвать его как
00:36:11
угодно мы пишем npm дальше для того
00:36:15
чтобы запустить скрипт и мы пишем ран
00:36:17
это его отдельная команда
00:36:18
и дальше просто название нашего скрипта
00:36:20
например surf нажимаю enter и теперь нам
00:36:26
партию говорит что он запустился на локу
00:36:30
хост один два три четыре мы можем на
00:36:32
него нажать и вот наш проект то есть он
00:36:36
неизменен отправишь что-нибудь изменить
00:36:38
здесь например заголовок
00:36:40
поставим здесь восклицательных знаков
00:36:43
нажимаю controls по всему перри собрал
00:36:46
прихожу браузер а тут уже все изменено
00:36:48
круто конечно круто но это не все кишки
00:36:51
паршивой только его начала час мы увидим
00:36:53
как его
00:36:55
что он вообще нам предлагает
00:36:57
единственное что сейчас для того чтобы
00:37:00
остановить процесс я нажму kontrol ц так
00:37:02
чтобы выйти из него потому что это
00:37:04
продолжительное действие
00:37:05
я хочу немножечко настроить данный
00:37:07
партию потому что мне не нравится что он
00:37:10
спускается на борту один два три четыре
00:37:12
я хочу сделать другой порт с помощью
00:37:16
параметра минус п
00:37:17
например 4200 или например 3000 я ставлю
00:37:22
4200 но здесь можешь прописать
00:37:25
какой-нибудь кастомный порт плюс я хочу
00:37:28
добавить здесь
00:37:29
параметр alpen который позволит в
00:37:32
автоматическом режиме открываете окно
00:37:33
браузера и теперь если я напишу npm ран
00:37:36
surf то автоматически мы попадаем уже на
00:37:42
лоб около 4200 casio настроен партию
00:37:45
окей круто теперь поговорим про
00:37:48
модульность потому что я хочу теперь и
00:37:51
допустим модель вынести в отдельный файл
00:37:52
и учитывая что у нас есть партию теперь
00:37:55
нам все это делать намного проще в папке
00:37:58
source я создаю новый файл который
00:37:59
называл например моду . джесс и что беру
00:38:03
и переношу эту модель то есть именно в этом файле
00:38:05
мы будем описывать целиком наш сайт для
00:38:09
того чтобы эту константу видели другие
00:38:11
модули я пишу экспорт и теперь видишь у
00:38:15
меня здесь нет сейчас
00:38:16
переменную моду потому что мне
00:38:17
необходимо ее импортировать
00:38:19
импортировать
00:38:20
таким образом моду и дальше название
00:38:24
переменной моду в фигурных скобках
00:38:27
потому что мы тут делаем такой вот
00:38:30
именованный экспорт посмотрим все
00:38:34
работает теперь мы можем допустим
00:38:37
перенести в другой файл вот эти вот
00:38:40
функции а потому что они являются москве
00:38:42
functions то есть те функции которые
00:38:44
работают не зависит ни от какого
00:38:46
глобального контекста они зависят только
00:38:48
от параметров это классный концепт из
00:38:50
функционального программирования и
00:38:52
поэтому мы его здесь используем допустим
00:38:56
я создам file template . джесс и вынесут
00:39:01
а все эти функции
00:39:06
пока что это сломается
00:39:08
значит теперь я напишу здесь экспорт
00:39:11
экспорт экспорт и и еще раз экспорт
00:39:17
теперь соответственно я могу их
00:39:19
импортировать мы импортируем разную
00:39:22
сущности из файла template
00:39:25
и нас интересует здесь тайтл текст
00:39:28
columbus единичный сохраним все еще
00:39:33
работает то есть пока что мы разнесли
00:39:36
разные функции на разные файлы но теперь
00:39:38
наш код выглядит намного более чисто
00:39:41
теперь я хочу сделать небольшое
00:39:44
небольшое улучшение учитывая что мы
00:39:46
начали работать с архивом и бандера
00:39:48
нашего проекта потому что изначально мы
00:39:50
подключаем css в html и теперь я хочу
00:39:55
чтобы все раз подключался у нас именно
00:39:57
через java script написав вот таким вот
00:40:00
образом перейдя в инвиз . джесс и я буду
00:40:03
импортировать стиль здесь потому что это
00:40:06
позволит нам лучше взаимодействие потом
00:40:08
со стилями и в автоматическом режиме их
00:40:10
оптимизировать здесь я просто пишу main
00:40:14
css2 я принесу их в отдельную папку
00:40:17
зовут стайлз сюда принесу майн css
00:40:27
так значит импортом и поправили да
00:40:30
потому что добавили сюда папочку
00:40:33
ставился сохраним да все работать как
00:40:36
прежде это можно пока убрать теперь
00:40:41
перед тем как мы еще будем улучшать
00:40:43
данный код я хочу поговорить про партию
00:40:46
и про разные его режима сборки
00:40:48
потому что сейчас мы работаем это
00:40:52
временное ошибка можешь не мешать
00:40:53
внимание сейчас мы работаем только с
00:40:57
режимом разработки и он запускает нам dv
00:41:01
сервер который позволяет автоматически
00:41:02
все это обновлять но нам хочется также
00:41:05
собирать весь этот проект для того чтобы
00:41:07
потом его например диплом на удаленный
00:41:10
сайт поэтому теперь в поле scripts я
00:41:13
могу добавить еще один скрипт назову
00:41:15
например его билд и с помощью паршивая
00:41:19
буду собирать весь этот проект значит и
00:41:22
спешу партию дальше вызываю команду бьют
00:41:25
и дальше указываю точку входа
00:41:27
source индекс с темой то же самое и
00:41:30
теперь внутри что нам это дает тут
00:41:33
кстати есть какая-то папка dist
00:41:34
временная
00:41:36
мы можем я удалить она все равно
00:41:38
генерируется автоматически мы запускаем
00:41:41
команду mpm ран бьют партию будет нам
00:41:49
проект и вот мы видим его output то есть
00:41:51
то что он нам сделал значит папки диск у
00:41:53
нас есть теперь
00:41:55
source pp + сами файлы
00:41:58
если мы посмотрим на диск вот наш индекс
00:42:01
html причем он абсолютно мини fits
00:42:03
ированный да то есть тут удалены лишние
00:42:05
пробелы enter и и это круто потому что
00:42:08
это позволяет сайту быстрее грузится
00:42:10
есть css и за счет того что мы загрузили
00:42:13
о через партию он тоже у нас мини
00:42:14
фиксированный полностью есть java script
00:42:18
и как видишь он тоже минимизированы
00:42:20
да то есть партию за нас все это
00:42:23
оптимизировал нам даже ни чего не нужно
00:42:25
делать агенстве на и что здесь мы
00:42:29
получаем различные source п.п.
00:42:31
то есть это больше нужно для наверное
00:42:35
какой-то разработки да и в случае
00:42:37
эстетики это ошибки но мы можем эти
00:42:40
source мы по брать помощью параметра но
00:42:43
у
00:42:45
source мэпс
00:42:47
а теперь если мы удалим папку dist и
00:42:51
заново попробуем собрать проект
00:42:55
то вот мы получаем всего лишь три файла
00:42:58
в папке dist вот 3 файлов отлично то
00:43:01
есть теперь у нас готовая инфраструктура
00:43:04
и теперь мы можем продолжать комфортную
00:43:06
разработку ok возвращаемся к нашему
00:43:10
index.htm или давайте посмотрим что
00:43:12
можно улучшить
00:43:13
здесь потому что на самом деле тут
00:43:15
присутствует вот такая вот некрасивая
00:43:17
конструкция давай запустим сборку
00:43:20
проекта прям lancer
00:43:26
закрываем здесь присутствует такая вот
00:43:31
некрасивая конструкция потому что здесь
00:43:33
присутствуют различные дубликаты коды да
00:43:35
по сути мы формируем html в зависимости
00:43:38
от типа понятно что если у нас появится
00:43:42
еще какой-нибудь и блоков то нам
00:43:44
придется писать этот iv что в общении
00:43:46
неправильно поэтому здесь мы можем пока
00:43:50
что оптимизировать данную конструкцию
00:43:52
следующим образом учитывая что тип и
00:43:57
название функции у нас совпадает но мы
00:44:01
сами так сделали то мы можем
00:44:02
воспользоваться синтаксисом объектов в
00:44:05
java script и получать по ключу из
00:44:09
объекта эту функцию как это выглядит
00:44:11
допустим в файле template . джесс я
00:44:14
больше не буду экспортировать эти все
00:44:16
функции они останутся локальными для
00:44:18
этого файла и на выходе я буду
00:44:23
экспортировать всего лишь одну константу
00:44:25
которую назову template
00:44:28
это будет у нас объект где я буду
00:44:32
хранить по ключам наша функция ну
00:44:34
допустим в той ту я буду хранить той то
00:44:37
в тексте текст в
00:44:41
image image и что у нас осталось column
00:44:46
column
00:44:48
то есть просто экспортируете функция
00:44:50
единственное что тут мы можем не
00:44:52
дублировать код так кого java-script
00:44:55
если ключ в объекте и значение его
00:44:57
совпадают то мы можем просто написать
00:44:59
здесь вот таким образом что много более
00:45:02
красиво получается теперь мы
00:45:05
экспортируем 10 template
00:45:07
это объект да мы должны его здесь
00:45:09
собрались теперь у нас нет этих функций
00:45:12
но учитывая что это объект и мы можем
00:45:16
допустим к нему обратиться так вот это
00:45:18
все закомментируем
00:45:20
чтобы она не вызывала у нас ошибки
00:45:22
посмотрим в окон свой логин примерно
00:45:24
template что это такое открываю консоль
00:45:28
смотрю это просто нас объект до у
00:45:31
которого есть нужные ключи это означает
00:45:33
что к какому-то ключу я могу обратиться
00:45:35
например как тайтл да и получить эту
00:45:39
функцию которая там хранится по плечу
00:45:41
то есть смотрю вот эта функция до
00:45:44
соответственно если я сюда передам то
00:45:47
есть это возвращает нам функцию если я
00:45:50
сюда передам например какой-нибудь
00:45:55
объект у которого будет значение в илью
00:46:00
тест или текст то на выходе мы получаем
00:46:04
некоторые шаблон да то есть это означает
00:46:06
что функция работает берем эту функцию
00:46:11
соответственно маленький экскурс в java
00:46:13
script если у нас есть допустим
00:46:14
переменная со строчкой той ту дату мы
00:46:18
также можем получить по этой переменной
00:46:22
какое-либо значение в объекте таким вот
00:46:25
образом но если мы посмотрим то вот
00:46:27
опять наша функция тайтл соответственно
00:46:30
у нас есть блок type и именно поэтому
00:46:33
блок type мы можем получить необходимую
00:46:35
нашу функцию то есть для того чтобы не
00:46:38
писать всю эту длинную конструкцию и
00:46:40
примерно выглядеть это будет следующим
00:46:42
образом здесь я напишу
00:46:44
допустим создаем переменную ту html и
00:46:49
здесь я буду хранить
00:46:51
функцию да мы будем получать ее из
00:46:53
объекта template и сюда я буду
00:46:56
передавать название ключа
00:46:59
который хранится в блог
00:47:00
и соответственно эта функция которая
00:47:04
принимает себя параметр блог да потому
00:47:06
что все эти функции принимаю параметр
00:47:08
блок и она возвращает нам уже html
00:47:11
нужного блока
00:47:12
здесь могу написать то html и сюда
00:47:15
передайте сам бог сохранил и вот наш
00:47:22
сайт снова работает то есть видишь
00:47:24
насколько более лаконичный стал наш код
00:47:26
и теперь в случае если мы добавим новый
00:47:29
элемент то нам не придётся добавлять
00:47:30
новые iv и то есть это я все убираю
00:47:34
тестова вещь я убираю единственное что
00:47:36
нам нужно проверить что если у нас
00:47:38
вообще определена функция то есть м и
00:47:41
то тогда мы будем уже вставлять этот код
00:47:44
до если допустим нет такого ключа и мы
00:47:47
получили здесь он define the
00:47:48
потенциальная застройщик может вызвать
00:47:50
ошибку да поэтому мы здесь проверяем что
00:47:52
в и чтим или что то есть кстати перед
00:47:56
тем как продолжить дальше я бы хотел еще
00:47:58
сказать что мы сейчас пользуемся парс
00:48:01
вам и это как наиболее простой
00:48:03
инструмент для сборки таких проектов и
00:48:05
он подходит больше для маленьких проект
00:48:08
в те действительно мы разрабатываем
00:48:10
какие-то локальные вещи где не нужно
00:48:11
вдаваться в глубь настроек но
00:48:14
присутствует более популярный инструмент
00:48:16
он называется в пак который позволяет
00:48:19
более точечно детально и профессионально
00:48:22
настраивать сборку проектов он чуть
00:48:24
сложнее в настройки но при этом он дает
00:48:26
намного больше возможностей про него
00:48:29
кстати я рассказываю в отдельном курсе
00:48:32
теперь вернемся к оптимизации нашего
00:48:36
кода и посмотрим что можно улучшить
00:48:37
теперь здесь здесь я бы хотел перейти в
00:48:41
file template
00:48:42
и посмотреть какие вещи можно
00:48:46
оптимизировать здесь то есть например мы
00:48:48
видим что структуру каждого блока очень
00:48:50
похожи да например тут присутствует
00:48:52
die frau к сэм и так далее то есть везде
00:48:56
эта структура у нас проглядывается
00:48:57
почему бы нам вместо того чтобы каждый
00:49:00
раз писать такой вот статический текст
00:49:02
не создать функцию утилиту которая
00:49:05
позволит нам это дело автоматизировать
00:49:07
более удобно настраивать
00:49:10
сказано сделано поэтому переходим в
00:49:13
он значит корень проектов в папку source
00:49:16
и здесь я создам новый фактор назову
00:49:18
utils . джесс обычно в таких файлов
00:49:21
хранятся какие то вспомогательные
00:49:24
функции тоже performance до которая
00:49:26
зависит только от входных параметров
00:49:28
которые являются утилитами например
00:49:31
здесь я буду сразу же экспортировать
00:49:33
функцию которую назову скажем ролл что
00:49:37
будет делать данная функция
00:49:39
она будет принимать себя некоторый
00:49:41
контент и возвращать и нам будет нам
00:49:44
шаблон который мы один раз пропишем да
00:49:47
точно будет див с классом ролл и сюда мы
00:49:52
просто ставим этот контент то есть это
00:49:53
просто некоторое будет обертка
00:49:55
по аналогии я сделаю функцию которую
00:49:59
назову кол тоже будет понимать все
00:50:01
контент только она будет оборачивать в
00:50:03
класс кол с м да который мы до этого
00:50:07
использовали теперь как на может это
00:50:10
помочь для начала мы можем это все
00:50:12
импортировать то есть мы переходим в
00:50:16
utils
00:50:17
и нас интересует ролл и кол теперь вот
00:50:21
этот код попробуй переписать
00:50:23
самостоятельно использование этих
00:50:24
функций коменданте 2 секунды окей значит
00:50:30
две секунды что на паузу поставить
00:50:31
разумеется но выглядит теперь это будет
00:50:34
следующим образом то есть учитывая что
00:50:35
нам нужно все вернуть в
00:50:37
роу я так и пишу использую функцию roll
00:50:40
дальше нам нужно обернуть все в колонку
00:50:43
поэтому 10 шум кол и дальше уже
00:50:46
непосредственно сам контент в нашем
00:50:48
случае это будет пока что такое вот
00:50:50
заголовок то есть вот теперь как
00:50:52
выглядит наша функция и делает она то же
00:50:55
самое что и до этого на мой взгляд так
00:50:57
намного круче по аналогии мы можем
00:51:01
сделать перед для текста только вместо
00:51:04
контента здесь вот такой вот контент да
00:51:06
и вообще поменять самостоятельно
00:51:09
попробуй меня сюда вот для всех
00:51:10
остальных функций и это тоже буду делать
00:51:14
значит здесь мы можем вот так вот
00:51:18
улучшить до например вот этот строчку
00:51:21
вообще убрать и просто написать кол ой
00:51:25
там
00:51:26
а здесь написать вот получать наш
00:51:30
контент писать
00:51:32
row и что передать html а то есть уже
00:51:36
без строк но при этом все равно выглядит
00:51:39
лаконично и круто ну и на мой взгляд
00:51:42
естественно понятно значит здесь у нас
00:51:45
будет ролл лично мы придаем наш контент
00:51:50
ok посмотрим все ли так все так да то
00:51:55
есть все блоки нас присутствуют кроме
00:51:59
одного блока с картинкой которые мы
00:52:00
потеряли
00:52:01
почему мы его потеряли потому что мы
00:52:03
исправили пути но мы можем перейти в
00:52:07
модель и уже воспользовавшись парси вам
00:52:10
сделать по-умному то есть сейчас мы
00:52:11
будем
00:52:12
не прописывать статический путь до
00:52:15
картинки а мы будем прямо и импортировать в java
00:52:18
script из папки сны матч . png и теперь
00:52:23
вот здесь будет храниться путь до
00:52:25
картинки за который нам не стоит переживать
00:52:27
теперь сохраняем и смотрим да вот наша
00:52:31
картинка прекрасно так template
00:52:36
значит здесь ещё есть один такой момент
00:52:38
который хотел бы показать вот например
00:52:41
здесь здесь видно что в момент мы
00:52:45
передаем кубик функцию она принимает
00:52:47
себя а этом и возвращает call айтен но
00:52:50
когда мы с помощью какой-то функции
00:52:52
понимающий параметр преобразовываем
00:52:54
таким способом то на самом деле вот эта
00:52:56
вот запись полностью идентично тому если
00:52:59
бы написал вот так то есть передал сюда
00:53:01
бы эту функцию как референс и позже она
00:53:03
бы вызвалась с нужным параметрам то есть
00:53:06
теперь мы можем написать таким вот
00:53:09
образом сохраним все то же самое да но
00:53:11
при этом стал код лаконичнее опять же
00:53:14
соответственно теперь вот мы даже можем
00:53:17
метод jojen отнести сюда и написать
00:53:21
такую цепочку мне кажется так удобнее
00:53:25
когда идет такая цепочка преобразование
00:53:26
в массиве круто теперь я предлагаю
00:53:31
усложнить наш сайт потому что мы
00:53:33
научились выводить какой-то текст хорошо
00:53:35
значит что нам с этим делать
00:53:38
потому что хотелось бы какой-нибудь
00:53:39
стилистике например и как-то сайт вообще
00:53:41
раскрашивать то есть как с этим
00:53:43
поступить на самом деле я предлагаю
00:53:46
завести еще одно свойство в нашей модели
00:53:49
которые допустим будет универсально
00:53:52
называться общин но это будет свойства
00:53:54
это будет у нас объект
00:53:55
где мы будем хранить какие-то
00:53:58
необходимые свойства для конкретно этого
00:54:02
блока ну например самый простой вариант
00:54:06
скажем мы не всегда хотим использовать
00:54:08
заголовок h1
00:54:10
то есть я бы хотел чтобы это заголовок я
00:54:13
мог сам настраивать
00:54:14
будет пусть это будет либо h5 либо h1
00:54:17
либо аж два и так далее соответственно я
00:54:20
могу завести здесь новое свойство
00:54:22
которое назову например так и например
00:54:25
это у меня будет аж два то есть я
00:54:28
передаю сюда об шанс и как теперь нам из этих опций
00:54:32
превратить шаблон но в функцию до
00:54:37
которая генерирует нам его мы принимаем
00:54:39
как раз таки весь этот блок то есть
00:54:41
здесь если мы посмотрим на блог об шанс
00:54:46
сохраним то вот мы получаем в краске эти
00:54:49
опции до соответственно теперь мы можем
00:54:51
спокойно это использовать например если
00:54:55
могу создать отдельную переменную com'st
00:54:58
так равно блок общем так если его нет то
00:55:03
тогда по умолчанию пусть будет h1 да это
00:55:06
такой специальный оператор который в
00:55:07
случае если эта штука отсутствует то
00:55:09
тогда мы даем по умолчанию так это
00:55:13
просто на строчка на и поэтому мы можем
00:55:15
заменить ее прямо в html здесь и
00:55:18
соответственно здесь мы посмотрим теперь
00:55:22
ты должен быть у нас аж два дайте перед
00:55:26
h2 если мы в модели поменяем допустим на
00:55:28
скажем h6 например то вот он совсем
00:55:33
маленький до 6 я думаю теперь иди и ясно
00:55:37
верну на h2 мне нравится h2 теперь
00:55:41
допустим давая сразу поменяем названия
00:55:43
на нормальное скажем здесь я напишу
00:55:45
com
00:55:46
ну тоже сайтов на чистом
00:55:53
java-script естественно название ты
00:55:57
можешь самостоятельно придумывать я
00:55:59
что-то более внятно здесь написал теперь
00:56:02
если посмотрим то вот как выглядит наш
00:56:03
заголовок и дальше я хочу его
00:56:06
стилизовать то есть я хочу написать для
00:56:08
него нормальные стиля и для этого я
00:56:10
воспользуюсь
00:56:11
объектом absence где я напишу ещё одну
00:56:14
поле который будет называться например
00:56:16
ставилась и это у меня будет пока что
00:56:19
строчка где просто буду перечислять в
00:56:22
онлайн формате определенные стили
00:56:24
естественно пока что все это упрощает
00:56:26
для того чтобы имитировать
00:56:29
время данного курса но я хочу здесь
00:56:31
передать именно саму суть допустим 10
00:56:33
напишем сейчас я вставлю просто чтобы не
00:56:36
подбирать заранее стиль в качестве
00:56:39
бэкграунда линейный
00:56:41
линиях градиент дальше так что совместно
00:56:44
коллаж будет ффф дальше в принципе пока
00:56:49
этого достаточно чтобы именно
00:56:50
протестировать сам функционал то есть мы
00:56:52
сюда просто передали определенные
00:56:54
свойства как теперь их обработать
00:56:57
переходим в template
00:56:59
и здесь мы также можем получить объект
00:57:02
styles стайлз общем стайлз а если нет то
00:57:09
по умолчанию ничего не будет неважно
00:57:11
теперь
00:57:13
как нам эти стили применить то есть если
00:57:16
мы применим и для просто т.к. то ничего
00:57:19
хорошего не получится можно конечно
00:57:20
попробовать написать здесь 100 его равно
00:57:24
поставился мы посмотрим но не ожидаю
00:57:28
ничего позитивного от этого
00:57:29
тут он белый цвет есть нет даже
00:57:31
линейного градиента поэтому эти онлайн
00:57:36
стиле нам лучше применять к самой
00:57:38
строчке то есть корову road у нас
00:57:41
функция до которая просто делает контент
00:57:43
но никто нам не мешает в этой функции
00:57:46
принимать второй параметр да сразу его
00:57:48
опишем который будет называться ставился
00:57:52
и пусть по умолчанию это будет
00:57:55
просто пустая строчка теперь мы можем
00:58:02
добавить
00:58:03
онлайн стиль ставим куда передать эти
00:58:06
ставился
00:58:08
соответственно теперь в шаблоне относят
00:58:11
параметр и мы просто его передаем как второй
00:58:14
параметр в функцию roll то есть вот
00:58:16
таким вот образом и теперь если мы
00:58:18
посмотрим
00:58:20
то у нас ничего пока нет нужно
00:58:22
разобраться почему то есть я беру
00:58:24
инспектируя данный элемент здесь мы
00:58:30
видим что у нас не валидная сеса
00:58:31
свойства да потому что найдет в кавычках
00:58:34
то есть сейчас чтобы подробнее было вот
00:58:37
элемент style видишь он не может читать
00:58:39
background да потому что они понимают
00:58:41
что это за кавычки что это за синтаксис
00:58:43
логично поэтому стоит удалить черт
00:58:46
кавычки здесь сохраняем вуаля вот наш
00:58:52
градиент да на блоке понятно что стиле
00:58:55
просто и здесь но опять же я хочу
00:58:57
передать именно саму суть то есть
00:58:59
принципе стилистика работает что мы
00:59:01
можем еще дописать здесь например
00:59:03
например текст оnline с центр например и
00:59:10
пусть будет поединках 1.5 м вот например
00:59:14
такие стиля
00:59:15
чуть лучше их смотрим уже неплохо на мой
00:59:18
взгляд уже даже очень неплохо то есть
00:59:20
вот получили мы первый блок
00:59:26
соответственно также хочу улучшить это
00:59:29
место потому что тут есть определенно
00:59:30
дубликаты код например тик-так стайлз
00:59:33
ставился с помощью синтаксиса java
00:59:35
script мы можем написать то же самое
00:59:37
только в одну строчку мы говорим из
00:59:39
какого объекта нам необходимо забрать
00:59:41
определенные поля
00:59:42
то есть нас интересует блок absence
00:59:45
здесь мы используем такое понятие как
00:59:47
где структуризация мы его кости
00:59:49
используем также и в им портах и здесь
00:59:52
пишем нужные поля так и например
00:59:53
ставился то есть это вот идентично тому
00:59:56
что написано
00:59:57
если мы хотим какое-то значение по
00:59:59
умолчанию как здесь то мы можем просто
01:00:02
написать равно h1 все то есть теперь
01:00:06
тоже мы улучшили код и теперь он стал
01:00:08
более лаконичен
01:00:10
соответственно я хочу теперь все то же
01:00:13
самое сделать и для остальных блоков
01:00:15
чтобы мы остальные блоки смогли
01:00:17
стилизовать но перед этим пока мы еще не
01:00:20
спроецировали все это на остальные блоки
01:00:22
я хочу внести еще одно улучшение которое
01:00:25
позволит нам проще взаимодействовать с
01:00:27
моделью потому что сейчас стиль мы
01:00:29
определяем как просто такой длинный
01:00:32
длинную строчку до состоящую из онлайн
01:00:35
стиле короче отнюдь читаем а как сделать
01:00:37
так чтобы это было читаем то есть
01:00:39
закомментируем круто если бы мы смогли
01:00:43
все это описывать в формате объекта
01:00:45
например стайлз и дальше здесь описать
01:00:48
уже нужные нам свойства например
01:00:50
background равно вот этот наш линейный
01:00:56
градиент
01:00:57
хотим следующее свойство допустим color
01:00:59
без проблем значение ффф значит хотим
01:01:06
padding тоже пишем 1 м там нас 15
01:01:11
торрент
01:01:12
и что касается текст оnline новейшим
01:01:15
через дефис напишет написан поэтому есть
01:01:17
мы должны взять кавычки текст оnline
01:01:21
центр то есть я хочу теперь чтобы стиле
01:01:25
задавались вот таким вот образом потому
01:01:26
что это намного удобнее описывать их это
01:01:29
можно удалить но если мы сохраним то эти
01:01:32
стили мне применяются потому что если мы
01:01:35
посмотрим здесь нас объект объект потому
01:01:38
что мы головки поджидает строчка мы
01:01:43
придаем ему объект нам потребуется еще
01:01:47
одна утилита позволяющая преобразовывать
01:01:49
такой объект в строчку стилей и мы можем
01:01:52
создать и действительно в файле utils я
01:01:55
назову эту функцию css который будет
01:01:59
принимать себе объект
01:02:00
стилей и пусть по умолчанию он равняется
01:02:03
именно по этому объекту дальше
01:02:06
существует большое количество способов
01:02:07
как сделать итерацию по объекту я покажу
01:02:10
наиболее оптимальный есть такой
01:02:13
глобальный класс в java script который
01:02:16
называется объект и у него мы можем
01:02:18
вызвать метод keys
01:02:21
куда мы передаем сам объект на выходе мы
01:02:25
получаем здесь массив keys
01:02:29
если мы на него посмотрим что такое keys
01:02:32
по вы сейчас вы видим это в консоль для
01:02:35
того чтобы использовать эту функцию на
01:02:38
моменте когда мы формируем шаблон то
01:02:42
есть в сам ролл мы уже должны передать
01:02:44
строчку до чтобы он здесь не думаю как
01:02:46
все взаимодействовать с различными
01:02:48
объектами значит здесь соответственно
01:02:51
вот нас объект этот мы хотим его
01:02:53
привести к строчке да поэтому я могу
01:02:57
просто вот так вот вызвать функцию css и
01:02:58
естественное и импортировать и свеж все
01:03:02
построено на функциях но при этом это
01:03:04
будет работать значит обновляем смотрим
01:03:07
в качестве keys мы получаем ключ и
01:03:10
то есть массив этих ключей этого объекта
01:03:15
соответственно дальше мы можем допустим
01:03:18
пробежаться по этому массива с помощью
01:03:21
map где на каждой итерации мы получаем
01:03:24
определённый kia и здесь нам необходимо
01:03:29
преобразовать то есть вернуть новую
01:03:32
строчку из объекта уже в стиле то есть
01:03:35
сам ключ он на тоже найти вначале
01:03:37
поэтому есть мы пишем киев дальше там
01:03:40
синтаксис двоеточие и после этого нам
01:03:43
необходимо указать значение а значение
01:03:45
мы берем из объекта стайлз по ключу ки
01:03:47
таким вот образом соответственно мы
01:03:51
здесь получаем некоторые рей этих стилей
01:03:56
и возвращать мы будем рей
01:03:58
которые должны соединить через точку
01:04:02
запятой потому что таковы правила в css
01:04:05
сохраняю смотрим все работает классно но
01:04:10
работающий код это не всегда финальный
01:04:14
код потому что его можно улучшать
01:04:16
соответственно это место тоже можно
01:04:18
очень круто улучшить и написать
01:04:20
красивее то есть закомментируем чтобы
01:04:25
видно было старое решение и видно было
01:04:27
новое решение мы можем сделать то же
01:04:30
самое только красивые значит мы
01:04:32
прибегаем ся по момент без некоторые
01:04:38
сложности с управлением клавиатура
01:04:39
мы продвигаемся по объекту стайлз и мы
01:04:43
знаем что вот эта штука нам вернет как
01:04:46
бы массив keys да то есть это у нас
01:04:49
просто будет массив
01:04:50
но у массива мы сразу же можем вызвать
01:04:52
метод мэн до который нам будет
01:04:55
преобразовывать всю эту структуру
01:04:57
начинать будет кии и есть мы получаем
01:05:00
можно без зрительно написать вот эту
01:05:02
строчку и на самом деле здесь мы сразу
01:05:07
же можем вызвать метод
01:05:08
jojen по точки запятой то есть мы теперь
01:05:14
написали эту функцию в одну строчку но
01:05:18
опять же супер лаконичность не всегда
01:05:21
есть хорошо и порой лучше некоторая
01:05:23
декларативность так когда мы точно
01:05:26
обозначаем что делает методы то есть
01:05:29
например мы можем вот эту строчку тоже
01:05:30
сделать красивее я ее обозначить теперь
01:05:34
как отдельную функцию за выйдет у string
01:05:37
и тут я возьму и эту функцию
01:05:43
напишу отдельно то есть теперь у меня
01:05:44
есть отдельная функция которая делает
01:05:47
приводит к строке данный стиль и теперь
01:05:51
смотри как красиво получается то есть
01:05:53
вот теперь наш весь метод описан и и это
01:05:56
все некрасивые мы можем убрать да то
01:05:59
есть теперь понятно что мы берем
01:06:01
ключевой объект а дальше с помощью мы
01:06:03
приводим к строке каждый элемент и
01:06:05
дальше соединяем все же точку , если мы
01:06:07
посмотрим то ничего не изменилось теперь
01:06:12
я хочу чтобы мы чтобы я поставлю на
01:06:17
паузу так как теперь необходимо будет
01:06:20
заполнить все остальные блоки возможно
01:06:22
ты поиграешь со стилизацией их пишут
01:06:25
какие-то свои собственные стили да то
01:06:27
есть попробуешь создать этот сайт по
01:06:28
конструировать его со своими заголовками
01:06:31
текстами
01:06:32
я же в свою очередь сейчас поставлю на
01:06:35
паузу и вставлю свои данные но
01:06:38
естественно если тебе захочется пойти с
01:06:41
моим конфигом для сайта то ты сможешь в
01:06:43
дополнительных материалах к этому видео
01:06:45
скачать
01:06:46
то же самое что написано и у меня и так
01:06:50
я надеюсь что ты поигрался теперь давай
01:06:52
посмотрим что получилось у меня то есть
01:06:54
тай туй оставят таким который он был
01:06:57
дальше второй блок нас идёт блок и матч
01:07:00
но тоже самое только у него есть вот
01:07:02
такие вот свойства отдельные стиля
01:07:06
колонки теперь в качестве вылью это
01:07:09
массив определенный текст и стиле вот
01:07:13
такие и последний блок это текст у которого в
01:07:16
илью равняется переменный текст я просто выше
01:07:19
его определил чтобы там не было много
01:07:21
написано и здесь у нас вот такие стиля
01:07:25
то есть я сделал все то же самое что мы
01:07:28
уже проговорили вот текст целиком но на
01:07:31
сайте час посмотрим
01:07:32
и это выглядит пока что вот таким вот
01:07:34
образом то есть еще не до конца красиво
01:07:36
по той причине что мы в других блоках не
01:07:40
определили стилистику на давай поэтому
01:07:43
перейдём сюда и попробуем то есть я
01:07:45
надеюсь что ты смог уже самостоятельно
01:07:47
это сделать попрактиковаться
01:07:49
но тем ни менее нам тоже нужно это
01:07:51
сделать поэтому посмотрим что как это
01:07:53
выглядит здесь собственно говоря нам
01:07:57
просто нужно передать определенный стиль
01:07:59
в качестве текста поэтому я могу
01:08:00
написать здесь блог об шанс ставился до
01:08:06
в ролл в колонке в принципе то же самое
01:08:10
то есть блок общем стайлз и в
01:08:15
и мать тоже вторым параметром брал я
01:08:17
передаю блог об шанс стайлз так
01:08:25
посмотрим не сработало почему но и
01:08:29
посмотрим
01:08:33
потому что в ров мы передаем объект да а
01:08:37
мы сделали так что нам нужно все это
01:08:40
оборачивать в функцию с.с.
01:08:42
поэтому я запишу css в принципе можно
01:08:46
скопировать таким образом отлично теперь
01:08:52
что-то более-менее внятное получилось то
01:08:55
есть вот у нас есть потрясающие
01:08:56
градиенты большая картинка который
01:09:00
хочется сейчас исправить но при этом уже
01:09:02
сайт более-менее вырисовывается это
01:09:05
хорошо теперь что касается картинки
01:09:08
да то есть здесь мы пока что можем
01:09:10
влиять только на стиле самого блока out
01:09:13
на стиле самой картинки мы влиять не
01:09:15
можем до из за этого получается что она
01:09:18
у такого как от произвольного размера
01:09:19
поэтому нам ничто не мешает допустим
01:09:22
перейти в модель найти картинку на и мяч
01:09:25
и добавить новые свойства в общем
01:09:28
которые например и назову и матч
01:09:32
ставился это будет объект ну и кстати
01:09:36
для картинки мы можем придумать параметр
01:09:38
например alt если напишу это картинка ну
01:09:43
или любой другой аль который будет
01:09:45
выгоден в качестве стиле здесь я
01:09:47
допустим напишу вы например 500 пикселей
01:09:53
и height of the
01:09:58
теперь естественно ничего не изменится
01:10:01
да потому что нам этот параметр
01:10:02
необходимо обработать в соответствующей
01:10:04
функция
01:10:05
значит вот у нас функция и матч здесь мы
01:10:10
можем получить отдельно из блок общем
01:10:14
так мы до этого делали можем получить
01:10:16
image styles alt и просто вставил сюда
01:10:21
для того чтобы вот каждый раз так не
01:10:23
писать соответственно здесь нас будет
01:10:25
написано просто styles alt
01:10:28
пусть будет по умолчанию равняться
01:10:31
пустой строке alt alt
01:10:36
и что касается и мечтают то мы можем
01:10:38
задать их прямо для нашей картинки то
01:10:41
есть ставил и сюда мы передаем css и
01:10:46
матч ставился посмотрим да теперь эта
01:10:50
картинка более красиво выглядит на мой
01:10:52
взгляд но кстати тоже и запросов
01:10:55
оптимизации из того что java script
01:10:57
умеет с . получается довольно таки
01:11:00
большой не очень удобно читать все есть
01:11:02
сократить допустим имущества с название
01:11:05
перемен это будет это более удобно
01:11:07
поэтому есть такой синтаксис когда мы
01:11:10
говорим вы какую переменную эту перемену
01:11:12
необходимо положить например в будет
01:11:15
иметь ставился из или просто с на и
01:11:21
соответственно теперь данная строчка
01:11:22
будет чуть покороче посмотрим все
01:11:25
работает теперь я хочу поговорить про
01:11:31
модель то есть она уже довольно-таки
01:11:33
объемная у нас она полностью состоит из
01:11:35
объектов и это здорово но я хочу пойти
01:11:38
дальше ведь в java script присутствует
01:11:40
также и класс и класс на самом деле в
01:11:43
java script это просто конструкции
01:11:45
позволяющие более удобно создавать
01:11:47
объекты но это пример сейчас мы каждый раз здесь
01:11:50
пишем type вылью об шанс наверняка
01:11:54
где-то мы можем совершить ошибку
01:11:55
где-то например написав там opi он
01:11:59
сможет в этом духе и потом будем гадать
01:12:01
а почему у нас тут блин почему то не
01:12:03
работает но это такой базовый пример то
01:12:05
есть на самом деле класс решает
01:12:07
множество задач мы сейчас посмотрим
01:12:08
какие я предлагаю теперь определение
01:12:11
этих объектов создать именно через
01:12:13
классы для этого я создам новую
01:12:16
директорию в проекте назову ее close as
01:12:20
например и здесь я создал файл который
01:12:24
будет называться блокс .
01:12:27
джесс здесь я создам свой первый класс
01:12:30
который называл например блок синтаксис
01:12:34
у него подобный то есть для начала я
01:12:37
создаю здесь конструктор и сразу говорю
01:12:39
какие параметры данный класс в
01:12:41
конструктор принимает нашем случае этот
01:12:43
type потом идет в илью
01:12:46
потом идет об шанс то есть больше нам
01:12:49
тут и ничего знать не нужно все что мы
01:12:51
будем здесь делать мы будем заносить это
01:12:53
все в приватную
01:12:54
в локальную переменную из то есть
01:12:57
например вы стайп равно type вы с целью
01:13:02
равно белье из общей он все равно общем
01:13:09
все это все что мы сделаем то есть таким
01:13:12
образом мы просто создадим объект у
01:13:14
которого были ключи type вылью и общем
01:13:17
то что нам как раз такие нужны чтобы
01:13:20
воспользоваться этим классом я его буду
01:13:22
экспортировать и теперь в модели
01:13:24
импортируя import from class с blogs
01:13:29
и файл будет называться точнее
01:13:32
переменной будет называться блок теперь
01:13:35
чтобы а3 factory данную модель я напишу
01:13:38
здесь new blog данная штука вернет мне
01:13:42
объект точно такой же по сути только
01:13:45
теперь я и тот же объект будут создавать
01:13:48
немного иначе то есть первым параметрами
01:13:50
принимаю здесь type toi tu подсказочка
01:13:53
вылью
01:13:55
просто его беру передаем и absence беру
01:13:59
и копирую весь этот объект
01:14:01
смотрим где он заканчивается он
01:14:03
заканчивается здесь
01:14:04
копирую и вставляю и не получилось
01:14:10
попробуем тогда вот таким вот образом
01:14:14
нам нужно здесь причастил такие ключи
01:14:16
где-то рядом лишнего захватила здесь не
01:14:20
забываем , все теперь получается вот это
01:14:23
вот мы можем просто убрать
01:14:25
сохраним посмотрим ничего не изменилось
01:14:29
на то есть как я и говорю класс в данном
01:14:31
случае просто нам возвращает
01:14:32
определенный объект но теперь вот эти
01:14:35
вот параметры нам не нужно описывать
01:14:37
например писать type вылью это все
01:14:40
делает за нас автоматически сам класс
01:14:41
теперь попробуем 3 factory
01:14:43
самостоятельно все остальные объекты я
01:14:46
это буду делать по сути с тобой сейчас
01:14:49
бог значит здесь у нас и мы и матч и
01:14:55
набор опций попробуем еще раз так
01:14:59
сделать до сработала соответственно
01:15:03
теперь-то можно удалить
01:15:04
10 запятую не и бог опять из нас будет
01:15:08
уже колонн в качестве вэлью массив и в
01:15:14
качестве избитую не забываем опции
01:15:22
объекта удаляем нее блок текст текст и
01:15:30
вот этот объект
01:15:36
отлично
01:15:37
сохраним посмотрим все работает как и
01:15:41
прежде посмотрим может быть сможем
01:15:45
console.log вывести здесь например вот
01:15:46
на блок до что он теперь себя
01:15:48
представляет смотрим на блок консоли то
01:15:53
есть по сути тот же самый объект что я
01:15:55
буду до этого только теперь умный chrome
01:15:57
подсвечивает что он является иностранцем
01:16:00
класса блок на хотя в прототипе у него
01:16:03
идет конструктор блоко это все дальше
01:16:05
идет тоже самый объект подробнее про
01:16:08
прототипы и про классы и также
01:16:10
рассказываю либо на ю тубе либо еще
01:16:13
более подробно в курсе да пока мы
01:16:15
рассматриваем такие вот совершенно
01:16:16
базовые вещи теперь я хочу поговорить
01:16:24
про по сути настоящее значение классов
01:16:30
модели потому что сейчас мы можем уже
01:16:33
написать более крутой и более
01:16:36
масштабируемый код с использованием
01:16:38
одного из принципов
01:16:39
solid который называется опыт клаус
01:16:42
принципу
01:16:43
и на этом примере
01:16:46
во-первых разобраться зачем все это
01:16:47
нужно разобраться зачем нужна open самом
01:16:50
деле ки проблема она решает ну одной из
01:16:52
проблем на как раз таки примере вот
01:16:55
этого нашего кода
01:16:57
потому что сейчас у нас есть один
01:17:00
некоторый общий класс блок и он
01:17:03
принимает очень
01:17:04
похожие параметры но дальше мы
01:17:06
конфигурируем например с помощью строчки
01:17:08
какого типа этот будет блок в нашем
01:17:12
случае здесь допустим то эту им еще так
01:17:14
далее а что если мы создадим
01:17:16
отдельные классы которые сразу же будут
01:17:20
создавать нам допустим блок с типом то
01:17:23
это блок с типом и мочи и так далее то
01:17:27
есть как минимум нам уже не придется
01:17:29
писать вот эту строчку а выглядит это
01:17:31
все очень просто то есть начнет мерс
01:17:34
тайтла здесь я буду экспортировать новый
01:17:37
класс который должен наследоваться от
01:17:40
блока именно из за того что у него есть
01:17:42
этот конструктор
01:17:43
допустим я назову его той то блок и для
01:17:48
того чтобы расследовать я использую
01:17:50
ключевое слово extends где пишу название
01:17:53
класса блок здесь а также реализовываю
01:17:57
конструктор но теперь здесь уже мы будем
01:17:59
принимать только в илью и только absence
01:18:03
по той причине что мы уже знаем тип
01:18:05
этого элемента
01:18:07
да и нам не нужно здесь дополнительную
01:18:09
строчку делать безусловно здесь мы можем
01:18:14
то есть когда мы пишем здесь супер дамы
01:18:16
таким образом вызываем инициализацию
01:18:18
этого конструктора для того чтобы
01:18:20
появились все эти переменные да то есть
01:18:22
это такой синтаксис учитывая что тип нам
01:18:27
данном случае уже не нужен то тип я могу
01:18:29
здесь удалить
01:18:32
потратился с типом мы его обязательно
01:18:34
удалим но не сегодня сейчас значит пока
01:18:38
что мы оставляем его фиксированным
01:18:39
потому что мы знаем за что отвечает этот
01:18:41
класс и дальше сюда передаем в рио и
01:18:45
об шанс то же самое нам нужно сделать и
01:18:50
для остальных четырех блоков то есть
01:18:52
дальше у нас идут кто идет и мяч потом
01:18:56
колонн и
01:18:57
текст создаем соответственно
01:19:02
и мяч блок дальше там передаем димыч
01:19:05
потому мы создаем колонн
01:19:09
клаус и да есть мы создаем текст блог
01:19:14
где указываем значение текст что нам это
01:19:17
дало
01:19:18
теперь кстати класс блок можем не
01:19:20
экспортировать он будет здесь локальным
01:19:22
да и вообще допустим если сильно нужно
01:19:24
на эти классы можно перенести в
01:19:26
отдельные файлы но тут у нас не будет
01:19:28
очень много кода и поэтому я решил
01:19:31
оставить их все в одном файле теперь мы
01:19:35
импортируем все эти классы текст блок
01:19:37
тайтл бог колумб блок и матч блок и
01:19:42
смотри здесь мы пишем здесь нам нужно
01:19:44
про ниц и лидировать тайтл блок поэтому
01:19:46
теперь опишу
01:19:47
close to the block убираю эту тайну
01:19:50
потому что он у нас теперь автоматически
01:19:53
добавляется в самом классе и все теперь
01:19:55
мы просто описываем его необходимые
01:19:57
свойства есть то же самое image image
01:20:03
блог удаляем строчку и мяч дальше колонн
01:20:10
с блок удаляем строчку каллум и текст
01:20:18
блок до соответственно с модулями .
01:20:21
текст теперь наши модели к она выглядит
01:20:25
более красивый
01:20:27
да по той причине что мы не описывались
01:20:29
какие-то дополнительные поля ставит все
01:20:32
еще работает и это потрясающе и теперь
01:20:37
на самом деле вот то что мы сейчас
01:20:39
удалили вот эти вот типы это не самоцель
01:20:42
бой это лишь маленькое побочное значение
01:20:44
было на самом деле теперь за счет того
01:20:46
что у нас есть для каждого типа блоков
01:20:48
отдельный класс
01:20:50
мы можем прямо внутри этого класса
01:20:52
определить шаблон и полностью избавиться
01:20:55
от file template
01:20:56
как это сделать значит переходим блоки
01:21:00
допустим начнем с это эту блока для
01:21:04
начала в родительском классе блок я
01:21:07
реализую
01:21:08
один метод который назову например ту из
01:21:09
темы называть его можно как угодно и по
01:21:13
умолчанию он будет мне выкидывать ошибку
01:21:17
full new era
01:21:19
где я напишу метод ту html должен быть
01:21:26
реализован то есть если в каком-то
01:21:32
классе я не определение тату и чтим
01:21:35
альта у меня будет здесь ошибка да если
01:21:37
я вызову
01:21:38
это делается для того чтобы в каждом
01:21:40
классе я реализовал этот метод теперь
01:21:45
собственно говоря я пишу что допустим в
01:21:48
tightly боги я хочу реализовать метод
01:21:50
the html и именно этот метод будет
01:21:54
приводить мне вот этот блок к html здесь
01:21:59
я должен формировать его шаблон каким
01:22:02
образом вот таким вот образом то есть я
01:22:03
беру копирую все что находится в этой
01:22:05
функция перехожу в блоке и вставляю сюда
01:22:09
значит по умолчанию в шторм не
01:22:12
автоматически импортировал все эти
01:22:14
утилиты
01:22:15
вот если они не импортировались обратите
01:22:17
внимание чтобы вот такой импорт был
01:22:19
прописан и здесь у нас есть другая
01:22:22
проблема в том плане что у нас нет
01:22:24
параметр блок здесь
01:22:25
но вот это вот об шанс на самом деле
01:22:29
теперь хранится вы ключевом слове из за
01:22:31
счет того что мы наследуем всего блока и
01:22:35
вылью в том числе то есть мы просто
01:22:38
меняем с блок на dice и все это все что
01:22:40
нужно сделать теперь соответственно
01:22:42
датой то блок мы реализовали метод то
01:22:44
есть м и допустим теперь можешь
01:22:47
поставить на паузу и попробовать
01:22:48
самостоятельно сделать то же самое для и
01:22:50
матч блока да и для остальных блоков
01:22:53
надеюсь что поставил на паузу потому что
01:22:55
я теперь хочу сам написать все это
01:22:58
реализовать то есть для имиджа
01:22:59
у меня это будет выглядеть таким образом
01:23:08
здесь мы меняем бог на виз
01:23:13
так дальше у нас идет к луны блок точки
01:23:18
мы копируем каллум за таким вот образом
01:23:25
меняем блок на выс так ну и собственно
01:23:30
говоря текст бог туч тем l это тут все
01:23:38
копирую и вставляю сюда здесь меня опять
01:23:41
же на бис
01:23:44
ok давайте старой 1-я закомментирую
01:23:49
здесь в точь темы
01:23:50
потому что сейчас мы будем с ним
01:23:52
работать значит что вообще нам это дало
01:23:55
в принципе дало нам это следующее что в
01:23:58
файле индус . джесс мы до этого
01:24:04
получали шаблоны из отдельного объекта
01:24:09
template теперь он нам вообще не нужен по той
01:24:12
причине что но это к это закомментируем здесь
01:24:17
допустим сразу напишу фолз чтобы он
01:24:19
автоматически не заходил в данный блок и
01:24:21
давай посмотрим на то что у нас такое
01:24:24
блок теперь темплейт ему удалили смотрим
01:24:29
на самом деле блок теперь является одним
01:24:32
из инстансов данного класса например той
01:24:34
the block
01:24:35
вот у него есть все необходимые
01:24:36
параметры до которые мы указывали и
01:24:39
также у него
01:24:40
если мы раскроем прототип есть метод
01:24:43
тушь темы
01:24:44
то есть у этого объекта ровно как и у
01:24:47
других объектов присутствует метод учтем
01:24:49
или кроме текстового блока потому что
01:24:51
здесь то есть тема лежит в прототипе
01:24:54
прототипы да он как бы идет от базового
01:24:58
теперь например я могу написать
01:25:01
у этого объекта раз у него есть method
01:25:03
to each темы вот таким вот образом tube
01:25:05
и чтим и давай посмотрим что получится
01:25:10
а получаем мы во-первых ошибку сейчас мы
01:25:13
до нее доберемся но мы получаем здесь
01:25:15
вот которые уже html а потому что теперь
01:25:18
определение шаблона хранится в
01:25:20
соответствующем месте это означает что
01:25:23
теперь вот это все нам больше вообще не
01:25:26
нужно удаляем и мы просто можем здесь
01:25:32
написать блок дуешь темы очень красиво получается
01:25:37
сохраним посмотрим все работает
01:25:40
практически кроме одного места где вас
01:25:44
ошибка ошибка вызывается потому что мы
01:25:48
не реализовали для текстового блока
01:25:54
метод темы и поэтому вызвал все вот это
01:25:56
вот мета который выдал нам ошибку он
01:25:58
говорит что метод нужно реализовывать
01:26:00
обязательно моего реализовываем и вот и
01:26:06
получается у нас текст теперь на самом
01:26:09
деле это уже более крутой и
01:26:11
профессиональный код по той причине что
01:26:13
если вдруг нам потребуется добавить
01:26:15
какой то допустим новый тип блоков
01:26:17
скажем какойнибудь статы например 100
01:26:20
вместо того чтобы добавлять в file
01:26:23
template какой-то новый функцию да это
01:26:26
как то там с типами возиться
01:26:28
мы просто берем создаем новый класс по
01:26:31
аналогии
01:26:32
наследуем всего от блока и все i
01:26:35
realized the html туда дописываем
01:26:37
какие-то необходимые вещи которые
01:26:39
формируют этот шаблон
01:26:40
то есть на самом деле теперь файл темп с
01:26:42
можем взять и удалить
01:26:44
он нам больше не нужен но это еще не все
01:26:47
теперь нам не нужны и типы потому что
01:26:49
они если посмотришь на нигде не используются
01:26:51
поэтому мы удаляем везде type тоже это
01:26:55
будет лишняя штука до соответственно
01:26:58
нужно убрать его из базового класса плюс
01:26:59
из конструктора
01:27:08
проверяем что все работает да все
01:27:11
работает то есть таким образом мы
01:27:13
реализовали по сути генерацию сайта из
01:27:16
модели да естественно это все можно
01:27:18
усложнять но я думаю что здесь простор
01:27:20
для фантазии будет большой теперь наша
01:27:22
задача сводится к тому чтобы реализовать
01:27:25
sidebar до который позволит нам
01:27:27
конструировать вообще данный сайт и на
01:27:31
самом деле я бы начал со следующего
01:27:35
вообще с файла индекс .
01:27:39
джесс потому что сейчас тут тоже такой
01:27:42
код написан который как бы без
01:27:46
абстракции да то есть мы просто получаем
01:27:48
какой-то элемент или дальше в этот олень
01:27:50
и оставляем шаблон что если мы возьмем и
01:27:53
напишем какой-нибудь другой класс
01:27:55
позволяющий нам создавать условно этот
01:27:58
сайт то есть здесь мы немножечко
01:28:01
прикоснемся к тому как в принципе
01:28:02
работают фреймворке
01:28:03
то есть чтобы это больше не было магии
01:28:06
чтобы все было понятно были менее значит
01:28:09
в классах я создаю новый файл которую
01:28:12
называем например сайт . джесс и здесь я
01:28:15
буду экспортировать класс который назову
01:28:17
сайт который в конструкторе будет
01:28:20
принимать себя параметр селектор зачем
01:28:24
сейчас увидеть здесь я создаю переменную
01:28:27
ты опять же доллар я заставлю по той
01:28:30
причине что и объяснял до этого
01:28:32
да то есть это просто у нас будет дом
01:28:34
элемент и дальше я про инициализирую это
01:28:39
поле через документ вырез selector и
01:28:43
сюда я передам этот
01:28:44
селектор
01:28:47
теперь я получил здесь класс сайт чем
01:28:50
вообще мне это нужно
01:28:51
затем что теперь я могу импортировать
01:28:52
этот класс значит я перехожу в классах и
01:28:58
меня интересует files сайт класс
01:29:00
называется сайт теперь вот эту вот
01:29:03
переменную я могу создать через
01:29:07
new site и сюда передайте селектор
01:29:11
например у нас там он был по моему сайт
01:29:14
называется до нужно проверить в html
01:29:17
сайт что нам это дает потому что сейчас
01:29:24
есть и посмотрим то это все нам сломала
01:29:27
так как теперь сайта не просто дом
01:29:29
элемент а теперь нам нужно убрать отсюда
01:29:32
знак доллара на потому что теперь это у
01:29:34
нас объект у которого есть
01:29:36
краски этот дом элемент мы естественно
01:29:39
можем так уж вручную вызывать циклу
01:29:44
модели помещение html но круче было бы если бы
01:29:49
мы могли например у этого объекта просто
01:29:51
вызвать какой-нибудь метод сейчас я
01:29:53
покажу например написать сайт рендер
01:29:58
да это как раз таки вот как в реакции
01:30:00
реализовано да и вообще в принципе
01:30:01
рендер это процесс когда мы переносим
01:30:03
системы или в сам дом сама дом дерево
01:30:08
рендер и сюда например передать параметр
01:30:11
модуль а вот этого всего чтобы не было
01:30:15
то есть я хочу чтобы это выглядело таким
01:30:17
образом благо теперь с помощью того что
01:30:21
у нас есть здесь класс сделать это очень
01:30:23
просто то есть мы берем и реализовываем
01:30:25
метод рендер
01:30:28
как параметр мы здесь получаем модель
01:30:33
так ты тут модель импортном здесь не
01:30:36
нужен и теперь нам нужно только
01:30:38
поправить то здесь у нас должен быть
01:30:40
теперь не сайт а вот этот элемент
01:30:41
то есть место сайта мы пишем взыскал все
01:30:47
то есть теперь мы по модели делаем
01:30:49
итерацию и все работает сохраним
01:30:52
проверим вот наш сайт только теперь уже
01:30:54
за главный наш файл выглядит
01:30:56
действительно красиво да когда здесь нет
01:30:58
ни каких то
01:30:59
определенных циклов мы в принципе
01:31:02
объясняем на таком полу компьютер на
01:31:05
человеческом языке что вообще здесь
01:31:06
происходит теперь поговорим про sidebar
01:31:10
с ним будет чуть сложнее тут мы
01:31:12
поговорим про события но тем не менее
01:31:14
это будет несложно я также создам
01:31:17
отдельный класс для него sidebar
01:31:19
я буду экспортировать класс sidebar в
01:31:22
конструктор я буду принимать также
01:31:24
селектор
01:31:26
значит вы с будет у нас определяться как
01:31:29
документ калерия
01:31:31
селектор то есть
01:31:37
был на самом деле является корневым
01:31:39
элементом для данного блока в нашем
01:31:43
случае это будет п ну да соответственно
01:31:45
в яндекс джесс пока что мы можем создать
01:31:47
допустим const сайт бар равно new
01:31:54
sidebar и сюда мы можем передать
01:31:56
необходимый селектор п ну да класс мы
01:31:59
импортируем соответственно сюда пока вы
01:32:02
просто его про инициализировали и теперь
01:32:04
давай подумаем что нам вообще нужно от
01:32:07
этого sidebar данный клацать по сути при
01:32:10
инициализации он должен запомнить вот
01:32:13
всю эту пустоту с помощью формы с
01:32:15
помощью которой мы сможем создавать
01:32:17
динамические какой-нибудь контент для
01:32:19
нашего сайта то есть в первую очередь он
01:32:22
должен задать шаблон всей этой формы
01:32:28
самое простое что мы можем здесь сделать
01:32:30
написать вы с.л.
01:32:35
значит insert adjacent элемент допустим
01:32:39
автор бегин а то есть я уже говорю про
01:32:42
эти параметры и например пока что в
01:32:44
качестве теста я могу здесь написать
01:32:46
например h1 в общем-то тест да если мы посмотрим
01:32:51
то вот мы получаем этот заголовок теперь
01:32:55
как нам из этого сделать форму
01:32:58
начали еще поговорим про более удобное
01:33:00
использование таких вот вещей то есть мы
01:33:03
шаблон здесь будем генерировать также и
01:33:06
допустим я могу создать целый гетр в
01:33:09
классе через такой синтаксис get
01:33:12
дальше я назову метод начни get our
01:33:16
template и он обязательно должен нам что-то
01:33:21
вернуть то есть он должен вернуть ну
01:33:23
например та же самый заголовок h1 будет
01:33:29
template
01:33:30
соответственно здесь теперь мы можем
01:33:31
написать вaс обращаясь ко ын су класса
01:33:35
template только
01:33:37
учитывая что это гектор то мы здесь не
01:33:41
пишем круглые скобочки да мы просто его
01:33:43
получаем как переменную смотрим пока еще
01:33:46
работает это шикарно вообще сразу же в
01:33:52
конструкторе писать это на мой взгляд не
01:33:54
очень удобно потому что мы еще будем
01:33:56
делать некоторые подготовительные вещи
01:33:58
поэтому я просто создам вспомогательный
01:34:00
метод который будет называться и нет
01:34:02
значит и
01:34:04
в инет я возьму и перенесу вот эту вот
01:34:07
инициализацию шаблона и как только я
01:34:09
закончу с конструктором здесь я вызову
01:34:11
метод init то есть это делается просто
01:34:13
для того чтобы очень красиво можем
01:34:17
посмотреть ничего не изменилось теперь
01:34:19
что касается формы то есть мы теперь
01:34:23
формируем шаблон нам нужно здесь
01:34:25
формировать html структура для формы и
01:34:30
для этого я заранее подготовил
01:34:32
определенную структуру значит я ее
01:34:34
оставлю таким вот образом это будет у
01:34:37
нас функция блок она абсолютно идентично тому что мы
01:34:42
делали до этого то есть тут вот какая
01:34:44
идея эта функция блок принимается 5
01:34:46
некоторый тип и возвращает нам просто
01:34:50
обычные системы
01:34:51
корневой элемент это форма потому что
01:34:53
нам потребуется формы дальше идет нас
01:34:55
некоторый тип нам просто и вводим как
01:34:57
строчку и дальше идут определенные
01:35:00
классы bootstrap и то есть форм групп
01:35:03
форм control и так далее то есть тут
01:35:05
вообще нет ничего сложного и если ты
01:35:07
внимательно посмотрим что здесь мы
01:35:08
используем добавляя название в илью и
01:35:11
ставился то есть помощью конструктора
01:35:13
вот этого упрощенного которые я покажу в
01:35:15
курсе мы сможем добавлять различные поля
01:35:18
и добавить
01:35:21
записывать в них белье и записывать них
01:35:24
стиля
01:35:25
теперь значит чтобы протестировать как
01:35:29
это работает убираем этот шаблон
01:35:31
допустим вызывая функцию блок с типом
01:35:34
например текст мы же текст можем
01:35:36
создавать
01:35:37
если посмотрим то вот наша форма на если
01:35:41
мы нажимаем то у нас перезагружается
01:35:43
страница это пока нормально мы сейчас
01:35:44
это поправил если мы хотим допустим
01:35:48
здесь добавить два блока то мы можем это
01:35:50
все объединить в массив здесь написать
01:35:54
блок с типом например текст здесь будет
01:35:58
у нас блок например с типом тайтл и это
01:36:02
массив поэтому мы должны его соединить
01:36:04
через функцию join пустой строчкой если
01:36:08
посмотрим вот у нас теперь получается
01:36:10
уже два элемента то есть на мой взгляд
01:36:12
это очень удобно также я хочу перенести
01:36:15
этот блок куда-нибудь в утилиты чтобы он
01:36:21
лежал отдельно потому что все равно пьер
01:36:22
фанкшн и поэтому она может так делать
01:36:25
теперь мы импортируем 10 я нажимаю на
01:36:29
маке это общий центр и
01:36:32
enter на windows ты помоему alt-enter то
01:36:35
есть помогать в меню которое позволяет
01:36:36
автоматически импортировать подобные
01:36:38
вещи какая проблема теперь у нас лежит
01:36:42
такая что
01:36:43
формы то есть но если я нажимаю на
01:36:46
кнопку добавить то
01:36:48
словаре не хотел нажимая добавить у нас
01:36:51
перезагружается страница
01:36:52
нам это не нужно потому что вы вообще то
01:36:54
мы пишем динамичное приложение нам нужно
01:36:57
отменить это поведение для этого я
01:37:00
перехожу в редактор и как только мы
01:37:04
делаем инициализацию и как только мы
01:37:06
поместили шаблон в дом то дальше я могу
01:37:13
обратиться к нашему элементу и добавить
01:37:17
новые события то есть я добавляю одно
01:37:19
только событие на весь блок с помощью
01:37:23
метода это event леснер
01:37:29
мет которое буду слушать называется
01:37:31
сабмит и здесь сразу же я вместо
01:37:37
писать кабак функцию какое-то я опишу
01:37:41
эту функцию отдельно допустим в функция
01:37:45
методе от блог или просто например это
01:37:52
почему бы и нет пусть нас все будет с
01:37:54
одним словом реализован метод от и он
01:37:57
себя принимает
01:37:58
event теперь если мы у этого ивента
01:38:02
вызовем метод prevent дефолт таким
01:38:06
образом то давай посмотрим что
01:38:08
получилось то есть я выбираю эти каре
01:38:10
параметры нажимаю добавить теперь
01:38:14
страница не обновляется по той причине
01:38:16
что мы отменили дефолтное поведение нас
01:38:18
от мити и и теперь мы можем выполнять
01:38:21
свой какой-то код
01:38:22
наша задача сейчас сводится к тому чтобы
01:38:24
забрать вот эти вот значения которые я
01:38:26
вписываю в форму и на самом деле сделать
01:38:29
это очень просто потому что у нас есть
01:38:31
доступ уже к ивенту на соответственно мы
01:38:34
можем получить переменную type например
01:38:37
через
01:38:38
event таргет и внт таргет в данном
01:38:42
случае это и есть сама форма мы можем на
01:38:45
это посмотреть в консоли значит дети-то
01:38:49
вписывая нажимаю добавить
01:38:51
да и вот эта форма то есть иван таргет
01:38:54
это и есть то с чем мы работаем как
01:38:57
следствие мы можем допустим type
01:38:59
получить из поля name
01:39:01
сейчас посмотрю только на всякий случай
01:39:04
в утилитах на то есть вот у формы есть
01:39:06
атрибут name поэтому мы его можем
01:39:08
получить
01:39:09
далее чтобы получить значение в илью то
01:39:11
нам нужно обратиться к
01:39:15
const
01:39:16
в или обратиться к event таргет в илью и
01:39:21
здесь мы указываем значение в элиту
01:39:24
небольшой дубликат получился но только
01:39:26
из-за схожести названий
01:39:27
потому что в илью в данном случае можно
01:39:32
так посмотреть
01:39:34
это название control и то есть мы его
01:39:38
собираем до чтобы нам получить здесь
01:39:40
стайлз соответственно мы здесь и говорим
01:39:44
белье
01:39:46
стайлз вылью то есть вылью это свойство
01:39:50
которое как раз таки позволяет забрать
01:39:52
эти данные в html структуре здесь для
01:39:57
того чтобы быстренько сделать консоль во
01:40:00
всех этих вещей мы можем не писать концу
01:40:02
логия можем написать здесь дебаггер и
01:40:06
обновив страницу
01:40:08
перейдя в консоль я что-то пишу здесь
01:40:12
нажимаю добавить мы попадаем в дебаггер
01:40:16
здесь мы можем посмотреть какие значения
01:40:19
вообще у нас хранятся сейчас в этих
01:40:20
переменных то есть в той пиона странице
01:40:22
текст это правильно потому что это текст
01:40:24
в виде у нас хранится заканчивается на
01:40:28
дабл ю д ю
01:40:31
логично и ставишь вас тоже заканчивается
01:40:35
на такую то есть мы правильно получили
01:40:37
эти значения теперь собственно говоря
01:40:38
если мы что-то пишем например здесь
01:40:42
46 нажимаю добавить
01:40:44
теперь той просто тайтл вылью это 123 не
01:40:49
ставился до 56 то есть все корректно
01:40:51
работает теперь нам нужно понять как это
01:40:53
динамически добавить в нашу модель для
01:40:56
того чтобы она от рисовала нам все это
01:40:58
на сайте дебаггер нужно удалить здесь я
01:41:03
сейчас пойду на сознательное упрощение
01:41:05
по той причине что покажу суть как все
01:41:10
это сделать и дальше я оставлю же на
01:41:12
твое усмотрение что ты лучше в этом
01:41:15
проекте как это сделаешь то есть мне
01:41:18
сейчас нужно определить по типу сейчас я
01:41:23
работаю всего лишь с двумя типами текст
01:41:27
получается
01:41:28
и тайтл собственно их 2 афиша
01:41:31
потом предлагаете я просто улучшить это
01:41:33
место чтобы она работала со всеми типами
01:41:35
если тип равняется текста то тогда я
01:41:39
создам отдельную переменную
01:41:43
допустим new blog
01:41:48
тогда новый блок у нас будет равняться
01:41:51
new
01:41:53
текст блок который нам нужно
01:41:58
импортировать и соответствующего файла
01:42:00
сюда первым параметром мы придаем в рио
01:42:04
да то есть то что мы получили из формы и
01:42:06
вторым параметра мы передаем набор
01:42:08
absence в нашем случае есть мы указываем
01:42:11
styles
01:42:12
здесь мы должны указать таким образом но
01:42:14
учитывая что ключ и значение совпадают
01:42:16
то я могу написать вот так вот а иначе
01:42:20
новый блок будет равняться например то
01:42:25
это блок а потому что той будет
01:42:28
равняться tight вы тоже импортируем и мы
01:42:31
можем посмотреть в консоли на то что
01:42:33
такое a new blog
01:42:36
допустим есть напишу 123 здесь напишу
01:42:39
color green нажимаю добавить и вот мы получаем текст
01:42:44
блок то который готов уже к рендерингу
01:42:46
на странице
01:42:47
теперь значит тут ещё есть определенные
01:42:50
нюансы
01:42:51
очень важный которые стоит оговорить
01:42:53
потому что вот мы получили этот новый
01:42:55
блок как нам его передайте вообще к
01:42:59
сайту чтобы сайт понял что вообще что-то
01:43:02
обновилась и он правильно отранжировать
01:43:05
3 мент в первую очередь я хочу во первых
01:43:08
улучшить этот момент этот блок и потому
01:43:11
что он не очень красивый сейчас мы можем
01:43:13
написать через тернана и выражение
01:43:15
по-другому
01:43:16
то есть конский блок равно дальше мы
01:43:18
спросим если type равняется текст тогда
01:43:24
мы занесем сюда вот такое значение здесь
01:43:27
можно вот так допустим вынести
01:43:31
а иначе он будет у нас вот такого
01:43:38
значения и теперь вот эти вот все
01:43:39
некрасивые фы мы можем убрать это одно и
01:43:42
то же вот мы это называется тернарного
01:43:44
выражение когда мы начали прописываем
01:43:46
условие а потом через ?
01:43:48
и : пишем определенное значение которые
01:43:51
падают в
01:43:52
констант соответственно чтобы попасть к
01:43:57
в сайт у нас уже все готово здесь то
01:44:02
есть нам нужно просто здесь передать
01:44:04
обновленную модель то есть мы переходим
01:44:06
индекс джесс получается что нам нужно
01:44:09
понять что как только что-то изменится в
01:44:14
сайдбаре мы должны это что-то получить и
01:44:18
изменить модель и для этого существует
01:44:21
копейки то есть это так и напишу что я
01:44:24
сюда передаю callback который будет
01:44:26
принимать себе параметр блог или просто
01:44:29
не и блок дальше как только это кодекс
01:44:33
работает то я изменю модель то есть
01:44:36
помощью метода push я положу этот новый
01:44:39
блок в конец модели а дальше возьму и
01:44:44
просто вызову сайт рендер
01:44:47
вот таким вот образом здесь кстати вот
01:44:49
sidebar нам не нужен
01:44:52
ну и соответственно чтобы более понятно
01:44:55
мне кажется бого я могу вынести этот
01:44:56
кубок в отдельное место упустим назвать
01:44:59
его апдейт кубик и сюда я передаю этот
01:45:06
апдейт кабак но нам нужно его правильно
01:45:11
обработать то есть мы переходим в
01:45:12
sidebar и мы знаем что вторым параметром
01:45:14
в конструктор мы принимаем некоторый
01:45:16
апдейт побег его мы можем занести в
01:45:23
какую нибуть переменную скажем в дэз
01:45:26
апдейт то есть да просто сохранения
01:45:29
функции теперь у нас есть сохраненная
01:45:33
функция апдейт и мы можем ее вызвать в
01:45:36
нужном месте то есть место концу и logo
01:45:38
мы можем здесь написать из
01:45:41
best road is a des апдейт если ты
01:45:45
внимательный слушатель ты наверняка
01:45:47
сейчас увидишь ошибку но я ее сейчас
01:45:50
объясню как избежать попробуешь нибудь
01:45:53
создать значит color green нажимаю
01:45:56
добавить и мы здесь получаем ошибку
01:45:59
ошибку которая говорит что do so bad is
01:46:02
not of anger почему ведь вроде как мы
01:46:06
корректно ее сохранили она присутствует
01:46:08
здесь на самом деле если погибает
01:46:12
немножечко поди божим чуть-чуть здесь
01:46:17
пишем нажимаю добавить
01:46:19
то есть вот у нас определяются все поля
01:46:22
правильно дании блок определяются все
01:46:24
круто но если мы посмотрим на тэс то это
01:46:28
вообще не и сам класс то есть обед у
01:46:30
него отсутствует почему здесь вопрос
01:46:33
контекстом в java script и сейчас я не
01:46:36
буду подробно на этом останавливаться
01:46:37
потому что такая довольно таки большая
01:46:39
тема про то как с этим контекстом
01:46:41
грамотно взаимодействовать я очень
01:46:43
подробно рассказывал в курсе сейчас я
01:46:47
просто скажу что в java скит есть
01:46:49
встроенные вещи которые позволяют этот
01:46:52
контекст привязывать и мы можем это
01:46:55
сделать с помощью то есть вот здесь
01:46:57
когда мы передаем функцию id мы теряем
01:46:59
контекст мы можем его привязать помощью
01:47:01
метода боинг в dice и это нам очень
01:47:05
сильно поможет на самом деле это поможет
01:47:07
вообще реализовать данную проблему
01:47:09
теперь что-нибудь пишем колдер green
01:47:12
пусть будет нажимаю добавить во первых
01:47:15
не чистится форма но мы видим как только
01:47:19
что у нас появился еще один сайт то есть
01:47:21
если я сейчас еще раз продемонстрировать
01:47:23
добавить об еще один сайт появился и так
01:47:27
далее это почти то что мы хотели инфа не
01:47:31
совсем во первых нужно чистить форумы и
01:47:34
форму чистить
01:47:36
очень просто потому что мы берем и
01:47:38
говорим после того как мы сделали там
01:47:41
дают что она равняется пустой строке
01:47:42
ровно как и control со стилями то есть
01:47:46
мы просто присваиваем сюда пустую
01:47:48
строчку теперь как сделать так чтобы при
01:47:50
рендере сайт не дублировала старый сайта
01:47:54
все заново мы каждый раз вызываем рендер
01:47:56
но не чистим шаблон то есть мы можем
01:47:59
написать здесь просто перед тем как
01:48:01
рендерить модель в лнр и чтим и равно
01:48:06
пустая строка и это нам сильно бы тоже
01:48:08
поможет то есть и теперь если мы
01:48:09
посмотрим да пусть я что-то пишу пусть
01:48:13
будет текст оnline центр color red
01:48:16
нажимаю добавить вот у нас добавился
01:48:21
какой-то элемент немного со стилями здесь ошибка потому
01:48:26
что он их каким-то образом раз партию
01:48:32
сейчас сказать я вот не знаю да почему
01:48:35
так произошло поэтому давай вместе
01:48:36
посмотрим во первых то есть вместе будем
01:48:40
де бо жить до как это происходит у всех
01:48:42
программистов на самом деле то есть нам
01:48:46
нужно понять что у нас находится в
01:48:47
объекте стайлз в апреле в объекте ставим
01:48:52
сна точно находится строка
01:48:53
до которую мы передаем из формы то есть
01:48:55
идем дальше по кроличьей норе и смотрим
01:48:59
значит
01:49:00
допустим мы текст бог да реализовывали
01:49:02
поэтому переходим в классах blogs
01:49:05
не смотрим что у нас сделать текст блог
01:49:09
мы берём и в функцию css оборачиваем
01:49:13
ждет стиля
01:49:14
да мы можем посмотреть то что эта штука
01:49:16
возвращает нам будет пока
01:49:19
переменная temp
01:49:25
и давай посмотрим на то что такое у нас
01:49:27
темп чтобы посмотрите что нам возвращает
01:49:32
эта вся конструкция значит что-то
01:49:35
без вы нажимаю добавить ничего не
01:49:38
получилось плане стилистике но при этом
01:49:41
мы видим что вот что на самом деле там
01:49:43
происходит почему потому что мы сюда
01:49:47
передаем строчку в момент css да вот эта
01:49:51
строчка а он сразу же начинает с ним
01:49:54
взаимодействие как с объектом и это для
01:49:58
нас небольшая проблема но на самом деле
01:49:59
не сильно потому что мы можем все
01:50:01
вернуть как было и в методе css просто
01:50:05
спросить то есть его задача приводить
01:50:07
объекты к формату строки в стилях но
01:50:10
можно спросить что а если
01:50:12
стиле который мы сюда передаем уже
01:50:14
являются строкой для этого есть оператор
01:50:16
type of то есть если type of styles
01:50:20
равно string that тогда мы просто можем
01:50:22
сделать
01:50:23
ричер стайлз и этот код выполняться не
01:50:27
будет сохраним вот наш текст
01:50:31
нажимаю добавить форма чистится и вот
01:50:34
текст который мы получаем в конце
01:50:37
добавим кто-нибудь тайтл
01:50:39
но я думаю что идея же ясно что все это
01:50:41
работает соответственно таким образом
01:50:44
можно сейчас поиграться с этим сайтом по
01:50:46
создавать что-то сделать более
01:50:48
универсальную форму мы же пойдем дальше
01:50:50
то есть последнее что я сделаю с точки
01:50:53
зрения кода это посмотрю на файл индекс
01:50:55
. джесс и здесь не то чтобы есть
01:50:59
какая-то проблема но тоже не очень
01:51:01
понятно что происходит входная . в
01:51:04
приложении она должна быть минимальная
01:51:06
то есть она явно должна говорить что
01:51:08
вообще происходит поэтому я предлагаю
01:51:10
добавить еще одну абстракцию которая
01:51:12
позволит нам все это дело объединить
01:51:15
значит здесь я создам новый файл который
01:51:17
назову об .
01:51:19
джесс это у нас будет close-up
01:51:24
в конструктор мы будем принимать модель
01:51:26
и заносите и в ключевое слово дэс в эту
01:51:32
модель и здесь я реализуем метод init
01:51:35
который буду вызывать самостоятельно ну
01:51:39
просто потому что могу могу и
01:51:41
автоматически вызывается в конструкторе
01:51:43
но в этом инете я напишу весь этот
01:51:46
функционал который служит мне для работы
01:51:49
приложения то есть здесь единственное
01:51:53
что мы не будем импортировать модель мы
01:51:55
будем работать с этой моделью то здесь
01:51:57
мы везде пишем ты с модом
01:52:02
моду и все остальное все остается как
01:52:08
есть то есть мы создаем здесь сайт мы
01:52:10
создаем добавляем рендер
01:52:13
определяем функцию которая следит за
01:52:16
обновлением мы в принципе все то есть
01:52:19
теперь для того чтобы а три factory
01:52:21
наш индекс . джесс мы можем написать
01:52:24
просто new об и сюда мы передаем модель
01:52:29
и учитывая что данная штука нам вернет
01:52:33
объект у которого есть метод init
01:52:36
позволяющий то есть скажу да есть я
01:52:38
просто оставлю таком виде то у нас
01:52:40
ничего нет но если я здесь напишу
01:52:43
и нет то появляется наш сайт либо в
01:52:47
таком формате либо этот и нет можно
01:52:50
вызывать автоматически здесь в
01:52:51
конструкторе из
01:52:53
имеет на и теперь он сайт работает тут
01:52:56
уже как удобнее будет ну мне почему-то
01:52:59
понравилось вот такая запись
01:53:01
поэтому я буду вызывать его в ручную ok
01:53:06
и на самом деле мы только что создали
01:53:09
целиком это приложение то есть на самом
01:53:12
деле как видишь здесь нет ничего
01:53:13
сложного и при этом все довольно таки
01:53:15
логично то есть мы поэтапно решать эти
01:53:17
задачи и создали неплохой такой
01:53:20
функционал поговорили про solid
01:53:22
и теперь настало время поговорить про
01:53:25
сборку этого проекта а конкретно про то
01:53:28
как залить этот проект на удаленный
01:53:30
хостинг посему я остановлю процесс сбу
01:53:35
кен и
01:53:39
для того чтобы залить проект мы будем
01:53:41
использовать бесплатный сервис от угла
01:53:43
который называется firebase для того
01:53:46
чтобы начать им пользоваться перейдем в
01:53:49
браузер и здесь я перейду на сайт
01:53:51
firebase просто пропишу его в гугле
01:53:55
перехожу по первой ссылке здесь
01:53:58
естественно для того чтобы пользоваться
01:54:00
этим сервисом необходимо чтобы был
01:54:02
аккаунт ого гугле у меня конечно есть
01:54:04
потому что здесь есть моя аватарка и
01:54:07
дальше я перехожу к консоли у меня тут
01:54:12
уже есть определенные проекты которые я
01:54:15
сделал но я добавлю новый проект скорее
01:54:17
всего у тебя просто будет этот шаг
01:54:19
добавить новый проект
01:54:21
и здесь нам нужно придумать название
01:54:23
этого проекта допустим джесс или jalas
01:54:31
рипд counter
01:54:35
ну например или конструктор 2
01:54:41
я хотел чтобы название было без
01:54:44
дополнительного кэша вот первый
01:54:45
конструктор у меня уже был тем не менее
01:54:48
здесь можно писать любое название и
01:54:51
нажимаем продолжить мы пока создаем
01:54:53
проект нужно ли аналитика
01:54:57
решать тебе я не люблю включать поэтому
01:55:00
просто создаю проект не буду добавлять
01:55:03
свои данные в google их и так много у
01:55:07
него любом случае мы сейчас ждем пока
01:55:11
про инициализируется наш проект потому
01:55:14
что на самом деле в firebase
01:55:15
присутствует большое количество полезных
01:55:17
вещей то здесь мы допустим можем
01:55:19
бесплатно содержать облачную базу данных
01:55:22
например для нашего проекта делать
01:55:24
авторизацию есть различные главные
01:55:28
функции то есть очень много чего крутого
01:55:29
даже машин learning есть и синхронизация
01:55:32
то там со ios и android сервис реально
01:55:35
крутой и сейчас мы будем использовать у
01:55:38
него хостинг да то есть мы можем перейти в
01:55:40
поле хостинг то он будет у нас
01:55:43
бесплатный для проекта нажимаем начать
01:55:47
и
01:55:49
здесь нам нужно выполнить следующие шаги
01:55:51
то есть например для начала нам
01:55:53
необходимо установить глобальную такой
01:55:55
инструмент который называется firebase
01:55:57
туз копируем эту строчку то есть здесь
01:56:00
мы также работаем с объемом истина
01:56:05
windows то просто пишешь эмпиемы стол
01:56:07
минус g fireboy стук если ты например на маке то
01:56:10
лучше написать через суду потому что
01:56:13
добавляет право
01:56:14
чтобы в глобальную область видимости
01:56:18
установить данный пакет знать и ждем
01:56:27
пока он остановится пока можем
01:56:29
посмотреть что нам делать дальше то есть
01:56:32
как только все это установится нажимаем
01:56:33
далее и после этого нам необходимо будет
01:56:37
войти в аккаунт google с помощью команды
01:56:41
firebase логин здесь восстановилась с
01:56:47
помощью команды clear я очищу консоль
01:56:49
значит и здесь я пишу теперь команду
01:56:54
firebase плагин он на спрашивает
01:57:00
разрешить или fair базу
01:57:02
коллекционировать какие то данные о чем
01:57:04
не хотим чтобы он ничего
01:57:06
коллекционировал
01:57:07
значит здесь я перехожу на свой аккаунт
01:57:12
логин был успешно произведен чего-то не
01:57:15
делать дальше дальше нужно написать
01:57:17
firebase и нет значит перед тем как
01:57:24
писать firebase и нет я предлагаю
01:57:25
почистить все вот эти вот
01:57:29
системные папки диск и кэш и перед тем
01:57:34
как опять же инициализировать проекта
01:57:35
firebase
01:57:36
я напишу npn ран билд для того чтобы
01:57:42
сбить весь этот проект потому что это
01:57:44
нам нужно будет теперь мы получаем папку
01:57:47
dist и кажется я же но нас интересует то
01:57:50
что вот все наше приложение хранится
01:57:53
теперь в 10 соответственно теперь мы
01:57:56
можем написать firebase и нет
01:58:02
значит здесь мы с 3 очками выбираем что
01:58:04
нам нужно нам нужен только хостинг я
01:58:06
ставлю пробел и теперь нажимаю enter
01:58:12
здесь он нам предлагает выбрать какой-то
01:58:15
проект я хочу выбрать уже существующий
01:58:18
проект и проект называется java script
01:58:24
конструктор 2
01:58:25
нажимаю enter ну то есть вот проект те
01:58:28
мы хотим в общем то куда я все это за
01:58:30
деплоить
01:58:31
теперь он на спрашивает вы хотите в
01:58:37
качестве публичной директории
01:58:38
использовать в общем он спрашивать какую
01:58:43
публичным территорию мы хотим по
01:58:44
умолчанию это территория public нас она
01:58:47
называется dist поэтому я пишу
01:58:49
dist дальше он спрашивает
01:58:53
сконфигурировать ли наше приложение как
01:58:56
сингл пейдж applications на самом деле
01:58:59
просто все правила будут переписаны на
01:59:00
корневой адрес index.htm и вообще нам
01:59:03
это нужно поэтому здесь и пишу с дальше
01:59:06
он спрашивает что файл диск слаженных
01:59:09
сочти вы уже существует перезаписать
01:59:11
всего нет не нужно его перезаписывать мы
01:59:14
сами его создаем все настройка готово у
01:59:19
нас появляются различные файлы по типа
01:59:21
firebase версии где есть вот эти вот
01:59:23
значение firebase джейсон и теперь в
01:59:28
общем то чтобы нам все это дело залить
01:59:30
мы пишем firebase deploy открыть консоль
01:59:36
впишу
01:59:38
firebase диплом
01:59:48
больше нам ничего делать не нужен то
01:59:50
есть fireboy сам определит куда ему все
01:59:52
это заливать как это все
01:59:54
развернуть раскрыть и факт в том что
01:59:56
теперь мы получаем вот такой красивый
02:00:00
адрес java script инструктор 2 веб .
02:00:03
об нажимая на него и попадая вот на этот
02:00:06
конструктор который должен полностью
02:00:08
быть рабочим тут есть и картинки и все
02:00:10
те значения чтобы по привычке то у меня
02:00:13
просто масштаб стоял вот как это у меня
02:00:15
выглядела до соответственно вот как
02:00:17
выглядит на обычно масштабе
02:00:20
соответственно теперь в поле хостинг у
02:00:23
нас есть два домена они почему разные
02:00:26
которые мы можем использовать для этого
02:00:28
приложения то есть на самом деле мы с
02:00:31
нуля создали вот этот конструктор теперь
02:00:34
у нас доступен на удаленном сервере
02:00:35
случае если мы допустим захотим что-то
02:00:39
поменять ну скажем что можем поменять
02:00:43
например сделать этот текст
02:00:49
зеленым это будет ужасно но что не
02:00:52
сделаешь ради практике
02:00:54
значит мы переходим в нашу модель и
02:00:58
допустим ведь мы говорим что это у вас
02:01:00
будет green как теперь нам это исправить
02:01:03
на удаленную хостинге все очень просто
02:01:05
мы делаем npn ран бьют заново by один
02:01:08
проект потому что именно сбил жены и
02:01:10
файлам и заливаем и firebase диплом
02:01:25
вуаля зеленый цвет то есть это
02:01:28
естественно так делать не нужно но я
02:01:29
просто показал как это теперь обновлять
02:01:31
что это все очень просто настроена у нас
02:01:33
теперь и этим можно пользоваться на этом
02:01:37
я хочу завершить потому что в вопросах
02:01:41
данного курса мы очень много концертов
02:01:43
каких разобрали мы создали с нуля целое
02:01:45
приложение мы поговорили про solid и про
02:01:47
apple про сборку проектов естественно
02:01:50
сейчас это все было в таком очень
02:01:51
базовом приближение очень простые
02:01:54
конструкции мы использовали мы делали
02:01:56
упрощения с точки зрения настройки нго и
02:01:58
роман то мы сделали некоторые упрощения
02:02:00
например при передаче кбк потому что в
02:02:03
идеале там нужно работать не через
02:02:05
callback а например создавать такую
02:02:07
концепцию как event emitter который
02:02:09
будет передавать различные свойства
02:02:11
можно делать намного более сложной
02:02:14
структуры классов которые будут
02:02:15
позволять нам автоматически работать с
02:02:17
событиями и так далее то есть на самом
02:02:19
деле мы затронули только лишь базу да но
02:02:22
при этом я показал что с помощью java
02:02:25
script можно создавать на только
02:02:26
какие-то простые скрипте кеа можно
02:02:27
создавать
02:02:28
даже без фреймворков целые приложения то
02:02:31
есть вот эту приложение ст и покажет
02:02:32
допустим на женскую позицию скажем в
02:02:36
качестве портфолио это уже будет очень
02:02:38
круто потому что ну ты сам создал
02:02:40
динамический сайт более подробно
02:02:44
естественная про все эти вещи
02:02:46
рассказывал в большом курсе по java
02:02:48
script где мы с нуля создаем целый excel
02:02:51
то есть сдаем там целый фреймворк и
02:02:54
используем уже продвинутый lp мы
02:02:56
используем различные принципы различные
02:02:59
паттерны и так далее то есть это такой
02:03:02
проект на минималках по сравнению с тем
02:03:04
что там будет просто мы также еще
02:03:06
реализовываем различные дата стороны
02:03:07
типа редакции так далее то есть все то
02:03:09
что используется сейчас в современном
02:03:11
вебе для того чтобы это можно было
02:03:12
понять
02:03:13
этим же курсом я хотел показать что на
02:03:15
самом деле действительно на практике вот
02:03:18
так вот когда ты пишешь код ты
02:03:20
действительно лучше запоминаешь и
02:03:22
начинаешь понимать как те или иные вещи
02:03:25
использовать и как вот практикуясь
02:03:28
научиться решать задачи то есть ты в
02:03:31
процессе берешь или там что-то не
02:03:32
работает начинаешь разбираться почему
02:03:33
это не работает
02:03:37
поэтому благодарю тебя за внимание
02:03:39
мне было очень интересно разрабатывать
02:03:41
данное приложение вообще очень люблю
02:03:43
что-то разрабатывать с нуля надеюсь тебе
02:03:45
тоже ну а мы с тобой увидимся дальше
02:03:47
счастлива

Описание:

Исходный код тут: https://t.me/js_by_vladilen/329 Получить профессию Frontend разработчика - https://result.school/products/junior-js Подробнее узнать об обучении в Result School - https://t.me/result_jfd Бесплатный курс HTML & CSS - https://result.school/products/html-css Сделать 5 проектов на JavaScript - https://result.school/products/marathon-js Я в соц сетях: Telegram: https://t.me/js_by_vladilen VK: https://vk.com/vladilen.minin Instagram: https://www.facebook.com/unsupportedbrowser Мои паблики по JavaScript: Telegram: https://t.me/result_school_it VK: https://vk.com/result.school Instagram: https://www.facebook.com/unsupportedbrowser JavaScript cообщества: Discord: https://discord.com/invite/jscommunity Telegram: https://t.me/js_by_vladilen_chat Roadmap по каналу: https://vladilen.notion.site/Roadmap-YouTube-0b917095c1ec424e9574c2ede36efab9 Решил выложить в открытый доступ курс по созданию конструктора сайтов на чистом JavaScript за 2 часа. Что внутри курса? 🔹 Ты напишешь с нуля приложение, которое сможешь положить себе в портфолио. 🔹 C нуля настроим рабочее окружение. 🔹 Будет много практического применения ООП (ты наконец-то поймешь, зачем на самом деле нужны классы в JavaScript). 🔹 Разберем как принципы SOLID помогают писать расширяемый и поддерживаемый код. 🔹 Оптимизация работы приложения. 🔹 Деплой приложения на хостинг. 🔹 И куча дополнительных бонусов, которые ты найдешь в процессе прохождения курса. Исходный код тут: https://t.me/js_by_vladilen/329 Текстовые редакторы: WebStorm - https://www.jetbrains.com/ru-ru/webstorm/ VSCode - https://code.visualstudio.com/ Инструменты из курса: NodeJS - https://nodejs.org/en/ Parcel - https://parceljs.org/ Документация: https://developer.mozilla.org/ru/docs/Web/API/Element/insertAdjacentHTML

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Практика JavaScript с нуля за 2 часа. Сделаем целый сайт!"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Практика JavaScript с нуля за 2 часа. Сделаем целый сайт!" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Практика JavaScript с нуля за 2 часа. Сделаем целый сайт!"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Практика JavaScript с нуля за 2 часа. Сделаем целый сайт!" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Практика JavaScript с нуля за 2 часа. Сделаем целый сайт!"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Практика JavaScript с нуля за 2 часа. Сделаем целый сайт!"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.