You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/docs/codebase-overview.md
+17-17Lines changed: 17 additions & 17 deletions
Original file line number
Diff line number
Diff line change
@@ -13,17 +13,17 @@ redirect_from:
13
13
14
14
Если вы хотите [внести свой вклад в React](/docs/how-to-contribute.html), то мы надеемся, что эта глава вам поможет.
15
15
16
-
Мы считаем, что вам не обязательно следовать этим соглашениям в ваших Reactприложениях. Многие из этих соглашений существуют по историческим причинам и могут быть изменены со временем.
16
+
Мы считаем, что вам не обязательно следовать этим соглашениям в ваших React-приложениях. Многие из этих соглашений существуют по историческим причинам и могут быть изменены со временем.
17
17
18
18
### Внешние зависимости {#external-dependencies}
19
19
20
20
У React практически нет внешних зависимостей. Обычно `require()` указывает на файл из собственной кодовой базы React. Однако есть несколько исключений.
21
21
22
-
[Репозиторий fbjs](https://github.com/facebook/fbjs) существует, потому что React использует общий код с библиотеками такими как [Relay](https://github.com/facebook/relay). React не имеет зависимостей от модулей из экосистемы Node, для того, чтобы разработчики Facebook могли вносить изменения тогда, когда они им необходимы. fbjs не имеет внешнего API, а все его внутренние модули используются только проектами Facebook, например React.
22
+
[Репозиторий fbjs](https://github.com/facebook/fbjs) существует, потому что React использует общий код с такими библиотеками как [Relay](https://github.com/facebook/relay). React не имеет зависимостей от модулей из экосистемы Node, для того, чтобы разработчики Facebook могли вносить изменения тогда, когда они им необходимы. fbjs не имеет внешнего API, а все его внутренние модули используются только проектами Facebook, например React.
23
23
24
24
### Папки верхнего уровня {#top-level-folders}
25
25
26
-
После клонирования [репозитория React](https://github.com/facebook/react), вы увидите папки верхнего уровня:
26
+
После клонирования [репозитория React](https://github.com/facebook/react) вы увидите папки верхнего уровня:
27
27
28
28
*[`packages`](https://github.com/facebook/react/tree/master/packages) содержит метаданные (такие как `package.json`) и исходный код (подпапка `src`) для каждого пакета из репозитория React. **Большая часть работы с кодом происходит в подпапках `src` внутри каждого пакета.**
29
29
*[`fixtures`](https://github.com/facebook/react/tree/master/fixtures) содержит несколько небольших React-приложений для контрибьютеров.
@@ -84,17 +84,17 @@ invariant(
84
84
85
85
**Если условие внутри `invariant` равно `false`, тогда выбрасывается исключение.**
86
86
87
-
"Инварианты" -- это всего лишь способ сказать: "Условие всегда истинно". Вы можете думать о них как об assertion.
87
+
"Инварианты" -- это всего лишь способ сказать: "Условие всегда истинно". Вы можете думать о них как об утверждениях (assertion).
88
88
89
89
Важно чтобы режимы разработки и продакшена имели похожее поведение, поэтому исключения выбрасываются в обоих режимах. Сообщения об ошибках в продакшене автоматически заменяются кодами ошибок, для того, чтобы избежать разрастания бандла.
90
90
91
91
### Режимы разработки и продакшена {#development-and-production}
92
92
93
-
Вы можете использовать псевдо-глобальную переменную `__DEV__`, чтобы блок кода присутствовал только в режиме разработки.
93
+
Вы можете использовать псевдоглобальную переменную `__DEV__`, чтобы блок кода присутствовал только в режиме разработки.
94
94
95
-
На этапе компиляции добавится проверка `process.env.NODE_ENV !== 'production'`, определяющая, должен ли данный блок кода присутствовать в CommonJS билде.
95
+
На этапе компиляции добавится проверка `process.env.NODE_ENV !== 'production'`, определяющая, должен ли данный блок кода присутствовать в сборке CommonJS.
96
96
97
-
Выражение будет равно `true` в неминифицированном билде, а в минифицированном будет вырезан весь блок вместе с `if`.
97
+
Выражение будет равно `true` в неминифицированной сборке, а в минифицированном будет вырезан весь блок вместе с `if`.
98
98
99
99
```js
100
100
if (__DEV__) {
@@ -148,7 +148,7 @@ var ReactHostComponent = {
148
148
module.exports= ReactHostComponent;
149
149
```
150
150
151
-
Поле `injection` нигде не используется. Но по соглашению, это означает, что модуль хочет иметь зависимости (предположительно, платформо-зависимые), которые будут инжектится во время выполнения.
151
+
Поле `injection` нигде не используется. Но по соглашению оно означает, что модуль может иметь зависимости (предположительно, платформо-зависимые), которые будут подключаться во время выполнения.
152
152
153
153
В репозитории существует много мест с использованием инъекций. В будущем мы хотим избавиться от механизма динамических инъекций и соединять все фрагменты статически во время сборки.
154
154
@@ -166,7 +166,7 @@ React является [монолитным репозиторием](https://d
166
166
167
167
**Ядро включает в себя только API необходимый для объявления компонентов.** Оно не включает [алгоритм согласования](/docs/reconciliation.html) или какой-либо платформо-специфический код. Этот код находится в компонентах React DOM и React Native.
168
168
169
-
Код ядра расположен в папке [`packages/react`](https://github.com/facebook/react/tree/master/packages/react). Он доступен в npm репозитории как пакет[`react`](https://www.npmjs.com/package/react). Соответствующий билд для браузера экспортирует глобальную переменную `React` и называется `react.js`.
169
+
Код ядра расположен в папке [`packages/react`](https://github.com/facebook/react/tree/master/packages/react). Он доступен в npm в виде пакета[`react`](https://www.npmjs.com/package/react). Соответствующая сборка для браузера экспортирует глобальную переменную `React` и называется `react.js`.
170
170
171
171
### Рендереры {#renderers}
172
172
@@ -176,31 +176,31 @@ React является [монолитным репозиторием](https://d
176
176
177
177
Они расположены в каталоге [`packages/`](https://github.com/facebook/react/tree/master/packages/):
178
178
179
-
*[React DOM Renderer](https://github.com/facebook/react/tree/master/packages/react-dom) рендерит Reactкомпоненты в DOM. Он реализует [`ReactDOM`APIs](/docs/react-dom.html) и доступен как пакет [`react-dom`](https://www.npmjs.com/package/react-dom) из npm репозитория. Можно подключать как отдельный бандл `react-dom.js`, экспортирующий глобальную переменную `ReactDOM`.
180
-
*[React Native Renderer](https://github.com/facebook/react/tree/master/packages/react-native-renderer) рендерит React компоненты в нативные view. Используется внутри React Native.
181
-
*[React Test Renderer](https://github.com/facebook/react/tree/master/packages/react-test-renderer) рендерит React компоненты в JSONдерево. Используется [снэпшотами](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html)из фреймворка[Jest](https://facebook.github.io/jest) и доступен как пакет [react-test-renderer](https://www.npmjs.com/package/react-test-renderer)из npm репозитория.
179
+
*[React DOM Renderer](https://github.com/facebook/react/tree/master/packages/react-dom) рендерит React-компоненты в DOM. Он реализует [`ReactDOM`API](/docs/react-dom.html) и доступен как пакет [`react-dom`](https://www.npmjs.com/package/react-dom) из npm репозитория. Можно подключать как отдельный бандл `react-dom.js`, экспортирующий глобальную переменную `ReactDOM`.
180
+
*[React Native Renderer](https://github.com/facebook/react/tree/master/packages/react-native-renderer) рендерит React компоненты в нативные представления. Используется внутри React Native.
181
+
*[React Test Renderer](https://github.com/facebook/react/tree/master/packages/react-test-renderer) рендерит React компоненты в JSON-дерево. Используется при [тестировании снимками](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html)через фреймворк[Jest](https://facebook.github.io/jest) и доступен как пакет [react-test-renderer](https://www.npmjs.com/package/react-test-renderer)в npm.
182
182
183
-
Мы начали поддерживать единственный неофициальный рендерер [`react-art`](https://github.com/facebook/react/tree/master/packages/react-art), который раньше находился в отдельном [Github репозитории](https://github.com/reactjs/react-art).
183
+
Мы начали поддерживать единственный неофициальный рендерер [`react-art`](https://github.com/facebook/react/tree/master/packages/react-art), который раньше находился в отдельном [GitHub-репозитории](https://github.com/reactjs/react-art).
184
184
185
185
>**Примечание:**
186
186
>
187
-
>Технически [`react-native-renderer`](https://github.com/facebook/react/tree/master/packages/react-native-renderer) -- это очень тонкий слой, который учит React взаимодействовать с React Native. Платформо-специфический код, управляющий нативными view, расположен в [репозитории React Native](https://github.com/facebook/react-native) вместе с его компонентами.
187
+
>Технически [`react-native-renderer`](https://github.com/facebook/react/tree/master/packages/react-native-renderer) -- это очень тонкий слой, который учит React взаимодействовать с React Native. Платформо-специфический код, управляющий нативными представлениями, расположен в [репозитории React Native](https://github.com/facebook/react-native) вместе с его компонентами.
188
188
189
189
### Согласователи {#reconcilers}
190
190
191
191
Даже очень непохожим рендерерам, таким как React DOM и React Native, необходимо разделять много логики. В частности, реализации [алгоритма согласования](/docs/reconciliation.html) должны быть настолько похожими, чтобы декларативный рендеринг, пользовательские компоненты, состояние, методы жизненного цикла и рефы работали одинаково между различными платформами.
192
192
193
193
В качестве решения, различные рендереры имеют между собой общий код. В React мы называем эту часть «согласователь». Когда запланировано такое обновление, как `setState()`, согласователь вызывает `render()` в дереве компонентов и монтирует, обновляет либо размонтирует их.
194
194
195
-
Согласователи не являются отдельнымы пакетами, потому что не имеют открытого API. Вместо этого, они используются исключительно такими рендерерами как React DOM и React Native.
195
+
Согласователи не являются отдельнымы пакетами, потому что не имеют открытого API. Вместо этого они используются исключительно такими рендерерами как React DOM и React Native.
196
196
197
197
### Согласователь Stack {#stack-reconciler}
198
198
199
-
Cогласователь «Stack» -- это реализация, которая использовалась в React 15 и более ранних версиях. Мы перестали её использовать, но задокументировали в [следующией главе](/docs/implementation-notes.html).
199
+
Cогласователь «Stack» -- это реализация, которая использовалась в React 15 и более ранних версиях. Мы перестали его использовать, но задокументировали в [следующией главе](/docs/implementation-notes.html).
200
200
201
201
### Cоглаcователь Fiber {#fiber-reconciler}
202
202
203
-
В согласователе «Fiber» мы пытаемся исправить давно существующие ошибки и решить проблемы, появившиеся в соглаователе Stack.
203
+
В согласователе «Fiber» мы пытаемся исправить давно существующие ошибки и решить проблемы, появившиеся в согласователе Stack.
0 commit comments