Ivan Asmer преди 5 години
родител
ревизия
562b436065
променени са 2 файла, в които са добавени 49 реда и са изтрити 1 реда
  1. 1 1
      ES6.md
  2. 48 0
      base.md

+ 1 - 1
ES6.md

@@ -279,5 +279,5 @@ console.log(Singleton.instance);
 ```
 
 Выше вы видите реализацию паттерна **Singleton**, которая заключается в том, что в классе существует только один экземпляр (объект). Данный объект
-лежит (фактически) в `_instance`, однако доступен по статическому геттеру `instance`. Последний при надобности создает экземпляр. (при первом обращении).
+лежит (фактически) в `_instance`, однако доступен по статическому геттеру `instance`. Последний при надобности создает экземпляр (при первом обращении).
 

+ 48 - 0
base.md

@@ -0,0 +1,48 @@
+# React: basics.
+
+**React** - библиотека для построения интерфейса на JS. Представлена Facebook в 2013.
+
+Изначально была задумана для Web-приложений (браузер), но впоследствии появилась библиотека **React Native**, где
+встроенные элементы интерфейса мобильных ОС скриптуются на JS в библиотеке-близнеце **React**.
+
+На **React** удобно строить **SPA**.
+
+## Virtual DOM.
+
+В крупных веб-приложениях много **DOM**-элементов, что вызывает определенное снижение производительности интерфейса.
+Для решения этой проблемы в React используется не настоящий, а **виртуальный DOM**, который хранит минимум нужной 
+информации и синхронизируется с настоящим **DOM** оптимальным образом.
+
+
+## Компонентный подход.
+
+**React** предоставляет **компонентный подход** к работе с интерфейсом. **Компонент** - обособленный 
+элемент интерфейса, который обладает своим отображением и логикой. Компоненты реализуются как классы
+**ES6** и могут быть легко переиспользованы путем подключения/копипасты класса в другой проект.
+
+## JSX.
+
+Отображение компонента в-основном реализуется с помощью синтаксиса **JSX**, который представляет
+собой аналог **HTML**, однако вместо тэгов используются имена классов **компонентов**, а атрибуты
+тэга попадают как "Базовые настройки" в объект компонента. При этом в любом месте **JSX** может 
+быть "включен" JavaScript с любыми выражениями.
+
+**JSX** *транспилируется* в вызов функций **React** для создания компонентов. Всё, что вы
+видите в **JSX** попадает в параметры этих функций. Поэтому там допустимы только **выражения**, но
+не управляющие конструкции типа `for`.
+
+Возможность строить интерфейс как "HTML со своими тэгами", причем тэги эти (т. е. компоненты)
+могут быть любой сложности - сильно упрощает и способствует структуризации кода и интерфейса.
+
+## create-react-app
+
+Супер скрипт, который позволяет вам создать каркас приложения **React** за одну команду. 
+Устанавливается с помощью `npm`:
+
+```bash
+npm install -g create-react-app # ставим глобально, что бы (в идеале) появилась команда в PATH
+create-react-app projectName # создает проект в текущей директории, подтягивает всё нужное опять же используя npm
+```
+
+После таких действий в папке `projectName` появятся файлы с проектом. Корнем приложения является файл `App.js` в 
+папке `src`.