Евгений Колесников 1 год назад
Родитель
Сommit
7a8aee4dfd
4 измененных файлов с 60 добавлено и 34 удалено
  1. 11 16
      articles/web_05.md
  2. 47 10
      articles/web_06.md
  3. 1 8
      articles/web_07.md
  4. 1 0
      readme.md

+ 11 - 16
articles/web_05.md

@@ -19,9 +19,7 @@
 
 Мы с вами освоили _добавление_ и _удаление_ элементов. Давайте добавим еще и выбор, потому что при выбранном элементе должен отображаться график.
 
-С этим достаточно просто мы берем и говорим "выбранный элемент изменяется с
-течением времени". Когда мы слышим что что-то меняется с течением времени мы
-говорим это "состояние". Назову его _sel_. Первоначально ничего не выбрано поэтому `null`:
+С этим достаточно просто мы берем и говорим "выбранный элемент изменяется с течением времени". Когда мы слышим что что-то меняется с течением времени мы говорим это "состояние". Назову его _sel_. Первоначально ничего не выбрано поэтому `null`:
 
 ```js
     const sel = ref(null)
@@ -36,8 +34,7 @@
     @click="sel = t"
 ```    
 
-Заодно демонстрируя, что здесь можно писать js-выражения, а не только
-вызовы функций.
+Заодно демонстрируя, что здесь можно писать js-выражения, а не только вызовы функций.
 
 Как мы проверим что что-то выбралось? Давайте для теста выведем `sel` на страничке (вспоминаем про интерполяцию)
 
@@ -83,10 +80,8 @@
 >
 ```
 
-Здесь я хочу обратить ваше внимание на то что это
-абсолютно нормально совмещать в одном определении
-атрибут **class** через равно и через двоеточие.
-Это означает что вот первая часть статическая, а вторая динамическая.
+Здесь я хочу обратить ваше внимание на то что это абсолютно нормально совмещать в одном определении
+атрибут **class** через равно и через двоеточие. Это означает что вот первая часть статическая, а вторая динамическая.
 
 Но согласитесь, выглядит дико уродливо поэтому для классов **vue** предлагает несколько вариантов синтаксиса.
 
@@ -138,14 +133,13 @@
           ^^^^^
 ```
 
-Это не единственный модификатор. Со списком модификаторов
-рекомендую ознакомиться самостоятельно
+Это не единственный модификатор. Со списком модификаторов рекомендую ознакомиться самостоятельно
 
 Хорошо теперь пора начинать ходить за реальными данными... 
 
 >Видео посмотрите сами, я здесь привожу финальный результат:
 >
->При добавлении новой валюты (функция **add**) запускаем таймер, который раз в 3 секунды будет запрашивать данные от АПИ. При получении данных они записываются в подходящий элемент массива (ищет по имени валюты)
+>При добавлении новой валюты (функция **add**) запускаем таймер, который раз в 3 секунды будет запрашивать данные от АПИ (ключ из видео пока работает, но если что - зарегистрируйтесь). При получении данных они записываются в подходящий элемент массива (ищет по имени валюты). Тут возник вопрос к реактивности, который отложили на потом
 
 ```js
 function add () { 
@@ -191,7 +185,7 @@ function add () {
 
     Тут сразу финальный варинант с нормализацией, про неё ниже
 
-1. Реализуем функцию нормализации, которая вычисляем минимум и максимум по всему массиву и нормализует выходные данные
+1. Реализуем функцию нормализации, которая вычисляеи минимум и максимум по всему массиву и нормализует выходные данные
 
     ```js
     const graph = ref([])
@@ -204,6 +198,7 @@ function add () {
         )
     }
     ```
+
 1. При выборе другой валюты нам нужно чистить график, поэтому вместо выражения `sel = t` пишем вызов функции `select(t)` и реализуем её
 
     ```js
@@ -216,12 +211,12 @@ function add () {
 Что мы узнали сегодня? Сегодня мы узнали, что:
 
 * с реактивностью все не так очевидно.
-* вспомнили что в `v-for` когда нет уникальных данных для `:key`, за которые можно прицепиться, то можно испотзовать индекс
-* вспомнили что в качестве источника данных для цикла можно использовать выражение (функцию, возвращающую массив)
+* вспомнили, что в `v-for`, когда нет уникальных данных для `:key`, за которые можно прицепиться, то можно использовать индекс (синтаксис `v-for="(item, index) in list"`)
+* вспомнили, что в качестве источника данных для цикла можно использовать выражение (функцию, возвращающую массив)
 * чуть чуть поигрались с реальным api, сходили на сервер начали
 отправлять реальные запрос 
 
-Теперь нам предстоит двигаться дальше наш злобный ТЗ-шник ну то есть виртуальный человек который ставит технические задания перед нами будет требовать все новых и новых фич и мы с вами будем их добавлять и смотреть во что превращается наш код и разговаривать что такое хорошо и что такое плохо
+Теперь нам предстоит двигаться дальше. Наш злобный ТЗ-шник, ну то есть виртуальный человек который ставит технические задания перед нами, будет требовать все новых и новых фич и мы с вами будем их добавлять и смотреть во что превращается наш код и разговаривать что такое хорошо и что такое плохо
 
 ---
 

+ 47 - 10
articles/web_06.md

@@ -1,23 +1,60 @@
 [К содержанию](../readme.md#введение-в-web-разработку)
 
-# Знакомство - Vue.js: практика
+# Vue.js
 
-<!-- 1 час 6 минут, но кодинга пока нет -->
+## #12 Реализация реактивности (нюансы)
 
-1. [#5 Знакомство - Vue.js: практика](https://www.youtube.com/watch?v=LN29isbbmsk)
+>17 минут
 
-https://rutube.ru/video/782d95c6226ad0939e54e45b05543d63/
+* [YouTube](https://www.youtube.com/watch?v=tt6VERYoBwE)
+* [RuTube](https://rutube.ru/video/01f5dfb906d549d0b70d823c6f65c08e/)
 
-1. Продолжаем изучать [JavaScript](https://learn.javascript.ru/array)
+## #13 Компоненты
 
->[Упомянутый codesandbox](https://codesandbox.io/s/vuex-lagging-getter-forked-n2stm)
+>Live: 1 час
 
----
+* [YouTube](https://www.youtube.com/watch?v=Mu3S9LBvuf8)
+* [RuTube](https://rutube.ru/video/3d2d34498a53b4de7ce938add681c80c/?t=230&r=plwd)
 
-**Задание**
+## #14 Криптономикон-3: vue-cli и tailwind
 
-1. Пересмотреть видео [#5 Знакомство - Vue.js: практика](https://www.youtube.com/watch?v=LN29isbbmsk), записать все непонятные слова.
+>17 минут
 
-1. Перечитать и осмыслить первую часть [Учебника](https://learn.javascript.ru/array) до раздела "Продвинутая работа с функциями"
+* [YouTube](https://www.youtube.com/watch?v=p5y4lPbYee4)
+* [RuTube](https://rutube.ru/video/5ea99b949996ae7e38fb927a76be3f0d/)
+
+
+**Расшифровка**
+
+>На момент написания этого текста в проекте вместо **webpack** используется **vite**, но смысл в принципе тот же - собрать из исходных файлов итоговые html, css и js, понятные любому более менее современному браузеру
+
+1. Устанавливаем плагин **tailwind**
+
+    ```
+    npx @vue/cli add tailwind
+    ```
+
+1. Устанавливаем **@tailwindcss/forms**
+
+    ```
+    npm install @tailwindcss/forms
+    ```
+
+1. Дописываем плагин в `tailwind.config.js`
+
+    ```js
+    plugins: [require('@tailwindcss/forms')],
+    ```
+
+1. Удаляем файл `app.css` и импорт этого файла из `main.js`
+
+В видео на этом этапе всё заработало, но у меня появилась ошибка сборки проекта: 
+
+```
+[Failed to load PostCSS config: Failed to load PostCSS config (searchPath: /home/kei/temp/Криптономикон1): [ReferenceError] module is not defined in ES module scope
+This file is being treated as an ES module because it has a '.js' file extension and '/home/kei/temp/Криптономикон1/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
+```
+
+В принципе тут более менее понятно написано, что нужно поменять расширение файла `postcss.config.js` на `postcss.config.cjs`
 
 [Назад](./web_05.md) | [Дальше](./web_07.md)

+ 1 - 8
articles/web_07.md

@@ -1,19 +1,12 @@
 [К содержанию](../readme.md#введение-в-web-разработку)
 
-# Декларативность - Vue.js: концепции
+# Vue.js
 
-1. [#6 Декларативность - Vue.js: концепции](https://www.youtube.com/watch?v=pp-VE5m9pvc)
 
-https://rutube.ru/video/22f26483a02a5b1a6d60df898982db46/
-
-1. Продолжаем изучать [JavaScript](https://learn.javascript.ru/advanced-functions)
 
 ---
 
 **Задание**
 
-1. Пересмотреть видео [#6 Декларативность - Vue.js: концепции](https://www.youtube.com/watch?v=pp-VE5m9pvc), записать все непонятные слова.
-
-1. Перечитать и осмыслить первую часть [Учебника](https://learn.javascript.ru/advanced-functions) до раздела "Планирование: setTimeout и setInterval"
 
 [Назад](./web_06.md) | [Дальше](./web_08.md)

+ 1 - 0
readme.md

@@ -341,6 +341,7 @@ https://office-menu.ru/uroki-sql Уроки SQL
 1. [Vue.js: концепции. Реактивность. Двустороннее связывание. Декларативность.](./articles/web_03.md)
 1. [Vue.js: концепции. Бизнес логика или детали реализации? Практика (Криптономикон)](./articles/web_04.md)
 1. [Vue.js: Практика (Криптономикон)](./articles/web_05.md)
+1. [Vue.js: Реализация реактивности (нюансы), Компоненты, tailwind](./articles/web_06.md)
 
 <!--