From 4660f7e36588f27f5067ff94245814e679910a33 Mon Sep 17 00:00:00 2001 From: echobrain Date: Wed, 13 Mar 2019 20:00:56 +0300 Subject: [PATCH 01/34] translation pt2 --- content/docs/design-principles.md | 74 +++++++++++++++---------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 9e10f39d5..19b91c6f1 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -88,76 +88,76 @@ It is a key goal for React that the amount of the user code that executes before There is an internal joke in the team that React should have been called "Schedule" because React does not want to be fully "reactive". -### Developer Experience {#developer-experience} +### Удобство разработки {#developer-experience} -Providing a good developer experience is important to us. +Нам важно сделать разработку удобной. -For example, we maintain [React DevTools](https://github.com/facebook/react-devtools) which let you inspect the React component tree in Chrome and Firefox. We have heard that it brings a big productivity boost both to the Facebook engineers and to the community. +Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которых можно просмотреть дерево React-компонент в Chrome и Firefox. Мы слышали, что это повышает производительность как инженеров Facebook, так и сообщества. -We also try to go an extra mile to provide helpful developer warnings. For example, React warns you in development if you nest tags in a way that the browser doesn't understand, or if you make a common typo in the API. Developer warnings and the related checks are the main reason why the development version of React is slower than the production version. +Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее чем продакшен версия. -The usage patterns that we see internally at Facebook help us understand what the common mistakes are, and how to prevent them early. When we add new features, we try to anticipate the common mistakes and warn about them. +Наблюдение за использованием паттернов внутри Facebook, помогает нам найти наиболее частые ошибки и понять как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать возникновение частых ошибок и предупреждаем о них. -We are always looking out for ways to improve the developer experience. We love to hear your suggestions and accept your contributions to make it even better. +Мы всегда ищем способы сделать разработку удобнее. И рады вашим предложениям и содействию по улучшениям. -### Debugging {#debugging} +### Отладка {#debugging} -When something goes wrong, it is important that you have breadcrumbs to trace the mistake to its source in the codebase. In React, props and state are those breadcrumbs. +Когда что-то идёт не так, важно иметь хлебные крошки, чтобы найти источник ошибки в кодовой базе. В React хлебными крошками являются свойства и состояние. -If you see something wrong on the screen, you can open React DevTools, find the component responsible for rendering, and then see if the props and state are correct. If they are, you know that the problem is in the component’s `render()` function, or some function that is called by `render()`. The problem is isolated. +Если вы видите на экране, что что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность свойств и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. -If the state is wrong, you know that the problem is caused by one of the `setState()` calls in this file. This, too, is relatively simple to locate and fix because usually there are only a few `setState()` calls in a single file. +Если состояние неверно, значит проблему спровоцировал один из вызовов `setState()` в этом файле. Её также относительно просто найти и исправить, так как в одном файле обычно всего несколько вызовов `setState()`. -If the props are wrong, you can traverse the tree up in the inspector, looking for the component that first "poisoned the well" by passing bad props down. +Если свойства неверны, вы можете пройти в инспекторе вверх по дереву, в поисках первого компонента, который «отравил колодец», передав плохие свойства вниз. -This ability to trace any UI to the data that produced it in the form of current props and state is very important to React. It is an explicit design goal that state is not "trapped" in closures and combinators, and is available to React directly. +Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих свойств и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. -While the UI is dynamic, we believe that synchronous `render()` functions of props and state turn debugging from guesswork into a boring but finite procedure. We would like to preserve this constraint in React even though it makes some use cases, like complex animations, harder. +Хотя UI динамичен, мы считаем, что синхронные `render()` функции свойств и состояния превращают отладку из гадания в скучный, но конечный процесс. Мы хотели бы сохранить это ограничение в React, хотя это усложняет некоторые варианты использования, такие как сложная анимация. -### Configuration {#configuration} +### Конфигурация {#configuration} -We find global runtime configuration options to be problematic. +Мы считаем, что возможность глобальной конфигурации во время выполнения, может стать проблемой. -For example, it is occasionally requested that we implement a function like `React.configure(options)` or `React.register(component)`. However this poses multiple problems, and we are not aware of good solutions to them. +Например, иногда нас просят реализовать такую функцию, как `React.configure(options)` или `React.register(component)`. Но это создаёт множество проблем, и мы не знаем хороших решений для них. -What if somebody calls such a function from a third-party component library? What if one React app embeds another React app, and their desired configurations are incompatible? How can a third-party component specify that it requires a particular configuration? We think that global configuration doesn't work well with composition. Since composition is central to React, we don't provide global configuration in code. +Что если кто-то вызовет такую функцию из сторонней библиотеки компонентов? Что если одно React-приложение встраивает другое React-приложение и нужные им конфигурации несовместимы? Как сторонний компонент может указать, что ему нужна определённая конфигурация? Мы думаем, что глобальная конфигурация плохо работает с композицией. Поскольку композиция для React первостепенна, мы не позволяем менять глобальную конфигурацию в коде. -We do, however, provide some global configuration on the build level. For example, we provide separate development and production builds. We may also [add a profiling build](https://github.com/facebook/react/issues/6627) in the future, and we are open to considering other build flags. +Однако, мы предоставляем некоторые глобальные настройки на уровне сборки. Например, мы предоставляем отдельные сборки для разработки и продакшена. В будущем мы можем [добавить профилирующую сборку](https://github.com/facebook/react/issues/6627). Мы также открыты для рассмотрения других флагов сборки. -### Beyond the DOM {#beyond-the-dom} +### За пределами DOM {#beyond-the-dom} -We see the value of React in the way it allows us to write components that have fewer bugs and compose together well. DOM is the original rendering target for React but [React Native](https://facebook.github.io/react-native/) is just as important both to Facebook and the community. +Мы видим ценность React в том, что он позволяет писать компоненты, в которых меньше ошибок и которые хорошо сочетаются друг с другом. Исходной целью рендеринга для React является DOM, но [React Native](https://facebook.github.io/react-native/) также важен, как для Facebook, так и для сообщества. -Being renderer-agnostic is an important design constraint of React. It adds some overhead in the internal representations. On the other hand, any improvements to the core translate across platforms. +Быть независимым от визуализации — важное ограничение в дизайне React. Это создаёт некоторые накладные расходы во внутренних представлениях. С другой стороны, любые улучшения ядра переносятся между платформами. -Having a single programming model lets us form engineering teams around products instead of platforms. So far the tradeoff has been worth it for us. +Наличие единой модели программирования позволяет нам создавать инженерные команды вокруг продуктов, а не платформ. Пока компромисс того стоил. -### Implementation {#implementation} +### Реализация {#implementation} -We try to provide elegant APIs where possible. We are much less concerned with the implementation being elegant. The real world is far from perfect, and to a reasonable extent we prefer to put the ugly code into the library if it means the user does not have to write it. When we evaluate new code, we are looking for an implementation that is correct, performant and affords a good developer experience. Elegance is secondary. +Мы стараемся предоставлять изящное API везде где возможно. Но мы гораздо меньше обеспокоены изящностью реализации. Реальный мир далёк от идеала и мы предпочитаем добавлять некрасивый код в библиотеку в разумной степени, если это означает, что пользователю не нужно его писать. Когда мы оцениваем новый код, мы смотрим на правильность реализации, производительность и удобство разработки. Изящность вторична. -We prefer boring code to clever code. Code is disposable and often changes. So it is important that it [doesn't introduce new internal abstractions unless absolutely necessary](https://youtu.be/4anAwXYqLG8?t=13m9s). Verbose code that is easy to move around, change and remove is preferred to elegant code that is prematurely abstracted and hard to change. +Мы предпочитаем скучный код умному. Код одноразовый и часто меняется. Поэтому важно, чтобы он [не привносил новых внутренних абстракций без крайней необходимости](https://youtu.be/4anAwXYqLG8?t=13m9s). Подробный код, который легко перемещать, изменять и удалять, предпочтительнее изящного, преждевременно абстрагированного и трудно изменяемого кода. -### Optimized for Tooling {#optimized-for-tooling} +### Оптимизирован для инструментов {#optimized-for-tooling} -Some commonly used APIs have verbose names. For example, we use `componentDidMount()` instead of `didMount()` or `onMount()`. This is [intentional](https://github.com/reactjs/react-future/issues/40#issuecomment-142442124). The goal is to make the points of interaction with the library highly visible. +Некоторые часто используемые API имеют длинные имена. Например, мы [специально](https://github.com/reactjs/react-future/issues/40#issuecomment-142442124) используем `componentDidMount()` вместо `didMount()` или `onMount()`. Цель в том, чтобы сделать точки взаимодействия с библиотекой хорошо заметными. -In a massive codebase like Facebook, being able to search for uses of specific APIs is very important. We value distinct verbose names, and especially for the features that should be used sparingly. For example, `dangerouslySetInnerHTML` is hard to miss in a code review. +В такой большой кодовой базе, как у Facebook, очень важно иметь возможность поиска использования определённых API. Мы ценим разные длинные имена, особенно для функционала, который следует использовать редко. Например, `dangerouslySetInnerHTML` трудно пропустить на кодревью. -Optimizing for search is also important because of our reliance on [codemods](https://www.youtube.com/watch?v=d0pOgY8__JM) to make breaking changes. We want it to be easy and safe to apply vast automated changes across the codebase, and unique verbose names help us achieve this. Similarly, distinctive names make it easy to write custom [lint rules](https://github.com/yannickcr/eslint-plugin-react) about using React without worrying about potential false positives. +Оптимизация для поиска также важна, так как мы зависим от [codemod](https://www.youtube.com/watch?v=d0pOgY8__JM)-скриптов для внесения критических изменений. Мы хотим, чтобы было легко и безопасно вносить большие автоматизированные изменения в кодовую базу, а уникальные длинные имена нам в этом помогают. Подобно этому, уникальные имена позволяют легко создавать собственные [правила анализа](https://github.com/yannickcr/eslint-plugin-react) использования React, не беспокоясь о возможных ложных срабатываниях. -[JSX](/docs/introducing-jsx.html) plays a similar role. While it is not required with React, we use it extensively at Facebook both for aesthetic and pragmatic reasons. +Аналогичную роль играет [JSX](/docs/introducing-jsx.html). Хотя он необязателен для работы React, мы широко используем его в Facebook как по эстетическим, так и по практическим соображениям. -In our codebase, JSX provides an unambiguous hint to the tools that they are dealing with a React element tree. This makes it possible to add build-time optimizations such as [hoisting constant elements](https://babeljs.io/docs/en/babel-plugin-transform-react-constant-elements/), safely lint and codemod internal component usage, and [include JSX source location](https://github.com/facebook/react/pull/6771) into the warnings. +В нашей кодовой базе JSX предоставляет однозначные подсказки для инструментов, работающих с деревом React-элементов. Это позволяет добавлять оптимизации во время сборки, такие как [всплытие неизменяющихся элементов](https://babeljs.io/docs/en/babel-plugin-transform-react-constant-elements/), безопасный анализ и использование внутреннего компонента codemod, и добавление в предупреждения [пути до исходников JSX кода](https://github.com/facebook/react/pull/6771). -### Dogfooding {#dogfooding} +### Догфудинг {#dogfooding} -We try our best to address the problems raised by the community. However we are likely to prioritize the issues that people are *also* experiencing internally at Facebook. Perhaps counter-intuitively, we think this is the main reason why the community can bet on React. +Мы стараемся решать проблемы, поднятые сообществом. Однако, скорее всего, мы будем отдавать приоритет тем проблем, с которыми люди *также* сталкиваются внутри Facebook. Возможно нелогично, но мы думаем, что это основная причина, по которой сообщество может полагаться на React. -Heavy internal usage gives us the confidence that React won't disappear tomorrow. React was created at Facebook to solve its problems. It brings tangible business value to the company and is used in many of its products. [Dogfooding](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) it means that our vision stays sharp and we have a focused direction going forward. +Интенсивное внутреннее использование даёт нам уверенность в том, что React не исчезнет завтра. React был создан в Facebook для решения своих проблем. Он приносит ощутимую бизнес-ценность компании и используется во многих её продуктах. [Догфудинг](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) — это означает, что наше видение остаётся ясным и мы сфокусированы на движении вперёд. -This doesn't mean that we ignore the issues raised by the community. For example, we added support for [web components](/docs/webcomponents.html) and [SVG](https://github.com/facebook/react/pull/6243) to React even though we don't rely on either of them internally. We are actively [listening to your pain points](https://github.com/facebook/react/issues/2686) and [address them](/blog/2016/07/11/introducing-reacts-error-code-system.html) to the best of our ability. The community is what makes React special to us, and we are honored to contribute back. +Это не означает, что мы игнорируем вопросы, поднятые сообществом. Например, мы добавили поддержку [web-компонентов](/docs/webcomponents.html) и [SVG](https://github.com/facebook/react/pull/6243) в React, хотя мы не используем их внутри. Мы активно [следим за вашими проблемами](https://github.com/facebook/react/issues/2686) и [устраняем их](/blog/2016/07/11/introducing-reacts-error-code-system.html) по мере наших возможностей. Сообщество — это то что делает React особенным для нас и мы рады внести свой вклад. -After releasing many open source projects at Facebook, we have learned that trying to make everyone happy at the same time produced projects with poor focus that didn't grow well. Instead, we found that picking a small audience and focusing on making them happy brings a positive net effect. That's exactly what we did with React, and so far solving the problems encountered by Facebook product teams has translated well to the open source community. +Выпустив много OSS-проектов в Facebook, мы поняли, что попытка сделать всех счастливыми в то же время приводит к созданию слишком общих проектов, которые плохо развиваются. Наоборот, мы обнаружили, что выбор узкой аудитории и фокусировка ней, приносит положительный конечный результат. Именно это мы сделали с React. И до сих пор решение проблем, с которыми сталкиваются продуктовые команды Facebook, хорошо транслировались на OSS-сообщество. -The downside of this approach is that sometimes we fail to give enough focus to the things that Facebook teams don't have to deal with, such as the "getting started" experience. We are acutely aware of this, and we are thinking of how to improve in a way that would benefit everyone in the community without making the same mistakes we did with open source projects before. +Недостатком этого подхода является то, что иногда мы не уделяем достаточного внимания тем вещам, с которыми командам Facebook не приходится сталкиваться, такими как опыт «начала работы». Мы хорошо знаем об этой проблеме. И думаем над тем как сделать лучше так, чтобы это принесло пользу всем в сообществе, не совершая тех же ошибок, которые мы делали в OSS-проектах до этого. \ No newline at end of file From 658180a20ddca27d2146933442caf5ffaa2766c4 Mon Sep 17 00:00:00 2001 From: Leonid Fedorov Date: Thu, 14 Mar 2019 20:18:19 +0300 Subject: [PATCH 02/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 19b91c6f1..718707be7 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -104,7 +104,7 @@ There is an internal joke in the team that React should have been called "Schedu Когда что-то идёт не так, важно иметь хлебные крошки, чтобы найти источник ошибки в кодовой базе. В React хлебными крошками являются свойства и состояние. -Если вы видите на экране, что что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность свойств и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. +Если вы видите на экране, что что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность пропсов и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. Если состояние неверно, значит проблему спровоцировал один из вызовов `setState()` в этом файле. Её также относительно просто найти и исправить, так как в одном файле обычно всего несколько вызовов `setState()`. @@ -160,4 +160,4 @@ There is an internal joke in the team that React should have been called "Schedu Выпустив много OSS-проектов в Facebook, мы поняли, что попытка сделать всех счастливыми в то же время приводит к созданию слишком общих проектов, которые плохо развиваются. Наоборот, мы обнаружили, что выбор узкой аудитории и фокусировка ней, приносит положительный конечный результат. Именно это мы сделали с React. И до сих пор решение проблем, с которыми сталкиваются продуктовые команды Facebook, хорошо транслировались на OSS-сообщество. -Недостатком этого подхода является то, что иногда мы не уделяем достаточного внимания тем вещам, с которыми командам Facebook не приходится сталкиваться, такими как опыт «начала работы». Мы хорошо знаем об этой проблеме. И думаем над тем как сделать лучше так, чтобы это принесло пользу всем в сообществе, не совершая тех же ошибок, которые мы делали в OSS-проектах до этого. \ No newline at end of file +Недостатком этого подхода является то, что иногда мы не уделяем достаточного внимания тем вещам, с которыми командам Facebook не приходится сталкиваться, такими как опыт «начала работы». Мы хорошо знаем об этой проблеме. И думаем над тем как сделать лучше так, чтобы это принесло пользу всем в сообществе, не совершая тех же ошибок, которые мы делали в OSS-проектах до этого. From e9041580a322e879550c555872ebcff081fe0323 Mon Sep 17 00:00:00 2001 From: Leonid Fedorov Date: Thu, 14 Mar 2019 20:18:39 +0300 Subject: [PATCH 03/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 718707be7..436a8d7c4 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -108,7 +108,7 @@ There is an internal joke in the team that React should have been called "Schedu Если состояние неверно, значит проблему спровоцировал один из вызовов `setState()` в этом файле. Её также относительно просто найти и исправить, так как в одном файле обычно всего несколько вызовов `setState()`. -Если свойства неверны, вы можете пройти в инспекторе вверх по дереву, в поисках первого компонента, который «отравил колодец», передав плохие свойства вниз. +Если пропсы неверны, вы можете пройти в инспекторе вверх по дереву, в поисках первого компонента, который «отравил колодец», передав плохие пропсы вниз. Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих свойств и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. From 510ec6bcc44d7aaced0c5227f1817c035eb99df4 Mon Sep 17 00:00:00 2001 From: Leonid Fedorov Date: Thu, 14 Mar 2019 20:18:57 +0300 Subject: [PATCH 04/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 436a8d7c4..eb44ec6f9 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -110,7 +110,7 @@ There is an internal joke in the team that React should have been called "Schedu Если пропсы неверны, вы можете пройти в инспекторе вверх по дереву, в поисках первого компонента, который «отравил колодец», передав плохие пропсы вниз. -Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих свойств и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. +Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих пропсов и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. Хотя UI динамичен, мы считаем, что синхронные `render()` функции свойств и состояния превращают отладку из гадания в скучный, но конечный процесс. Мы хотели бы сохранить это ограничение в React, хотя это усложняет некоторые варианты использования, такие как сложная анимация. From 196acc64b93bf74705463e09590024484619254e Mon Sep 17 00:00:00 2001 From: Leonid Fedorov Date: Thu, 14 Mar 2019 20:19:24 +0300 Subject: [PATCH 05/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index eb44ec6f9..348e113d9 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -112,7 +112,7 @@ There is an internal joke in the team that React should have been called "Schedu Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих пропсов и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. -Хотя UI динамичен, мы считаем, что синхронные `render()` функции свойств и состояния превращают отладку из гадания в скучный, но конечный процесс. Мы хотели бы сохранить это ограничение в React, хотя это усложняет некоторые варианты использования, такие как сложная анимация. +Хотя UI динамичен, мы считаем, что синхронные `render()` функции пропсов и состояния превращают отладку из гадания в скучный, но конечный процесс. Мы хотели бы сохранить это ограничение в React, хотя это усложняет некоторые варианты использования, такие как сложная анимация. ### Конфигурация {#configuration} From 5081eda6b719a020d528086cd3b560b54b87da9e Mon Sep 17 00:00:00 2001 From: Leonid Fedorov Date: Thu, 14 Mar 2019 20:19:43 +0300 Subject: [PATCH 06/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 348e113d9..d4abfafe5 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -152,7 +152,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Догфудинг {#dogfooding} -Мы стараемся решать проблемы, поднятые сообществом. Однако, скорее всего, мы будем отдавать приоритет тем проблем, с которыми люди *также* сталкиваются внутри Facebook. Возможно нелогично, но мы думаем, что это основная причина, по которой сообщество может полагаться на React. +Мы стараемся решать проблемы, поднятые сообществом. Однако, скорее всего, мы будем отдавать приоритет тем проблемам, с которыми люди *также* сталкиваются внутри Facebook. Возможно нелогично, но мы думаем, что это основная причина, по которой сообщество может полагаться на React. Интенсивное внутреннее использование даёт нам уверенность в том, что React не исчезнет завтра. React был создан в Facebook для решения своих проблем. Он приносит ощутимую бизнес-ценность компании и используется во многих её продуктах. [Догфудинг](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) — это означает, что наше видение остаётся ясным и мы сфокусированы на движении вперёд. From af00968a92d678aeee7c2f1591e3e79cf06c0498 Mon Sep 17 00:00:00 2001 From: Nick Tishkevich Date: Fri, 15 Mar 2019 08:50:23 +0300 Subject: [PATCH 07/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index d4abfafe5..30f683a22 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -92,7 +92,7 @@ There is an internal joke in the team that React should have been called "Schedu Нам важно сделать разработку удобной. -Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которых можно просмотреть дерево React-компонент в Chrome и Firefox. Мы слышали, что это повышает производительность как инженеров Facebook, так и сообщества. +Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы слышали, что это повышает производительность как инженеров Facebook, так и сообщества. Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее чем продакшен версия. From 4b1e0faea6856bee84731d1b2a24d13d81588520 Mon Sep 17 00:00:00 2001 From: Nick Tishkevich Date: Fri, 15 Mar 2019 08:50:43 +0300 Subject: [PATCH 08/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 30f683a22..e88e17651 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -94,7 +94,7 @@ There is an internal joke in the team that React should have been called "Schedu Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы слышали, что это повышает производительность как инженеров Facebook, так и сообщества. -Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее чем продакшен версия. +Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее, чем продакшен версия. Наблюдение за использованием паттернов внутри Facebook, помогает нам найти наиболее частые ошибки и понять как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать возникновение частых ошибок и предупреждаем о них. From e68e47ddd5946da79d3d15f9233dd17bf0844512 Mon Sep 17 00:00:00 2001 From: Nick Tishkevich Date: Fri, 15 Mar 2019 08:51:03 +0300 Subject: [PATCH 09/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index e88e17651..a86ac682c 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -96,7 +96,7 @@ There is an internal joke in the team that React should have been called "Schedu Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее, чем продакшен версия. -Наблюдение за использованием паттернов внутри Facebook, помогает нам найти наиболее частые ошибки и понять как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать возникновение частых ошибок и предупреждаем о них. +Наблюдение за использованием паттернов внутри Facebook помогает нам найти наиболее частые ошибки и понять как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать возникновение частых ошибок и предупреждаем о них. Мы всегда ищем способы сделать разработку удобнее. И рады вашим предложениям и содействию по улучшениям. From 91038c20e39f722aeab4f197457cb97e3947af80 Mon Sep 17 00:00:00 2001 From: Nick Tishkevich Date: Fri, 15 Mar 2019 08:51:29 +0300 Subject: [PATCH 10/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index a86ac682c..e51c2ae3a 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -102,7 +102,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Отладка {#debugging} -Когда что-то идёт не так, важно иметь хлебные крошки, чтобы найти источник ошибки в кодовой базе. В React хлебными крошками являются свойства и состояние. +Когда что-то идёт не так, важно иметь «хлебные крошки», чтобы найти источник ошибки в кодовой базе. В React «хлебными крошками» являются свойства и состояние. Если вы видите на экране, что что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность пропсов и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. From 1ba81997d0883dbc866d207fe3ffb2cf9e1dd211 Mon Sep 17 00:00:00 2001 From: Nick Tishkevich Date: Fri, 15 Mar 2019 08:51:51 +0300 Subject: [PATCH 11/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index e51c2ae3a..3bf9e993a 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -134,7 +134,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Реализация {#implementation} -Мы стараемся предоставлять изящное API везде где возможно. Но мы гораздо меньше обеспокоены изящностью реализации. Реальный мир далёк от идеала и мы предпочитаем добавлять некрасивый код в библиотеку в разумной степени, если это означает, что пользователю не нужно его писать. Когда мы оцениваем новый код, мы смотрим на правильность реализации, производительность и удобство разработки. Изящность вторична. +Мы стараемся предоставлять изящное API везде, где возможно. Но мы гораздо меньше обеспокоены изящностью реализации. Реальный мир далёк от идеала и мы предпочитаем добавлять некрасивый код в библиотеку в разумной степени, если это означает, что пользователю не нужно его писать. Когда мы оцениваем новый код, мы смотрим на правильность реализации, производительность и удобство разработки. Изящность вторична. Мы предпочитаем скучный код умному. Код одноразовый и часто меняется. Поэтому важно, чтобы он [не привносил новых внутренних абстракций без крайней необходимости](https://youtu.be/4anAwXYqLG8?t=13m9s). Подробный код, который легко перемещать, изменять и удалять, предпочтительнее изящного, преждевременно абстрагированного и трудно изменяемого кода. From e26b03e6e8311a94548924bf3d1e0943a2446bfa Mon Sep 17 00:00:00 2001 From: Nick Tishkevich Date: Fri, 15 Mar 2019 08:52:12 +0300 Subject: [PATCH 12/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 3bf9e993a..58227e028 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -156,7 +156,7 @@ There is an internal joke in the team that React should have been called "Schedu Интенсивное внутреннее использование даёт нам уверенность в том, что React не исчезнет завтра. React был создан в Facebook для решения своих проблем. Он приносит ощутимую бизнес-ценность компании и используется во многих её продуктах. [Догфудинг](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) — это означает, что наше видение остаётся ясным и мы сфокусированы на движении вперёд. -Это не означает, что мы игнорируем вопросы, поднятые сообществом. Например, мы добавили поддержку [web-компонентов](/docs/webcomponents.html) и [SVG](https://github.com/facebook/react/pull/6243) в React, хотя мы не используем их внутри. Мы активно [следим за вашими проблемами](https://github.com/facebook/react/issues/2686) и [устраняем их](/blog/2016/07/11/introducing-reacts-error-code-system.html) по мере наших возможностей. Сообщество — это то что делает React особенным для нас и мы рады внести свой вклад. +Это не означает, что мы игнорируем вопросы, поднятые сообществом. Например, мы добавили поддержку [web-компонентов](/docs/webcomponents.html) и [SVG](https://github.com/facebook/react/pull/6243) в React, хотя мы не используем их внутри. Мы активно [следим за вашими проблемами](https://github.com/facebook/react/issues/2686) и [устраняем их](/blog/2016/07/11/introducing-reacts-error-code-system.html) по мере наших возможностей. Сообщество — это то, что делает React особенным для нас и мы рады внести свой вклад. Выпустив много OSS-проектов в Facebook, мы поняли, что попытка сделать всех счастливыми в то же время приводит к созданию слишком общих проектов, которые плохо развиваются. Наоборот, мы обнаружили, что выбор узкой аудитории и фокусировка ней, приносит положительный конечный результат. Именно это мы сделали с React. И до сих пор решение проблем, с которыми сталкиваются продуктовые команды Facebook, хорошо транслировались на OSS-сообщество. From 32eb0fd232f27068445cae43e50afac4d362e086 Mon Sep 17 00:00:00 2001 From: Anton Ahatov Date: Fri, 15 Mar 2019 10:44:32 +0300 Subject: [PATCH 13/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 58227e028..ca8a88670 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -92,7 +92,7 @@ There is an internal joke in the team that React should have been called "Schedu Нам важно сделать разработку удобной. -Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы слышали, что это повышает производительность как инженеров Facebook, так и сообщества. +Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы часто слышим, что это повышает производительность как инженеров Facebook, так и сообщества. Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее, чем продакшен версия. From f1f320908225e3764cc61d98dcfcef2e2ca92a4d Mon Sep 17 00:00:00 2001 From: Anton Ahatov Date: Fri, 15 Mar 2019 10:45:17 +0300 Subject: [PATCH 14/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index ca8a88670..5f9404c14 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -134,7 +134,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Реализация {#implementation} -Мы стараемся предоставлять изящное API везде, где возможно. Но мы гораздо меньше обеспокоены изящностью реализации. Реальный мир далёк от идеала и мы предпочитаем добавлять некрасивый код в библиотеку в разумной степени, если это означает, что пользователю не нужно его писать. Когда мы оцениваем новый код, мы смотрим на правильность реализации, производительность и удобство разработки. Изящность вторична. +Мы стараемся предоставлять изящное API везде, где это возможно. Но мы гораздо меньше обеспокоены изящностью реализации. Реальный мир далёк от идеала и мы предпочитаем добавлять некрасивый код в библиотеку в разумной степени, если это означает, что пользователю не нужно его писать. Когда мы оцениваем новый код, мы смотрим на правильность реализации, производительность и удобство разработки. Изящность вторична. Мы предпочитаем скучный код умному. Код одноразовый и часто меняется. Поэтому важно, чтобы он [не привносил новых внутренних абстракций без крайней необходимости](https://youtu.be/4anAwXYqLG8?t=13m9s). Подробный код, который легко перемещать, изменять и удалять, предпочтительнее изящного, преждевременно абстрагированного и трудно изменяемого кода. From 51ec6bae67a7acb552206ed0c44c7e71eb0bf7e4 Mon Sep 17 00:00:00 2001 From: Nick Tishkevich Date: Mon, 18 Mar 2019 09:16:25 +0300 Subject: [PATCH 15/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 5f9404c14..182343e94 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -112,7 +112,7 @@ There is an internal joke in the team that React should have been called "Schedu Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих пропсов и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. -Хотя UI динамичен, мы считаем, что синхронные `render()` функции пропсов и состояния превращают отладку из гадания в скучный, но конечный процесс. Мы хотели бы сохранить это ограничение в React, хотя это усложняет некоторые варианты использования, такие как сложная анимация. +Хотя UI динамичен, мы считаем, что синхронный рендер пропсов и состояния превращают отладку из гадания в скучный, но конечный процесс. Мы хотели бы сохранить это ограничение в React, хотя это усложняет некоторые варианты использования, такие как сложная анимация. ### Конфигурация {#configuration} From be4405bb461354c3f61d4e9917df1cbef35fb6fb Mon Sep 17 00:00:00 2001 From: Anton Ahatov Date: Mon, 18 Mar 2019 09:16:55 +0300 Subject: [PATCH 16/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 182343e94..457b66f03 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -94,7 +94,7 @@ There is an internal joke in the team that React should have been called "Schedu Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы часто слышим, что это повышает производительность как инженеров Facebook, так и сообщества. -Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее, чем продакшен версия. +Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее, чем продакшен-версия. Наблюдение за использованием паттернов внутри Facebook помогает нам найти наиболее частые ошибки и понять как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать возникновение частых ошибок и предупреждаем о них. From 2c4d534f236b705ff55064fb9c3b6ef8c6fd3032 Mon Sep 17 00:00:00 2001 From: Anton Ahatov Date: Mon, 18 Mar 2019 09:18:33 +0300 Subject: [PATCH 17/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 457b66f03..3a4ef9cd2 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -108,7 +108,7 @@ There is an internal joke in the team that React should have been called "Schedu Если состояние неверно, значит проблему спровоцировал один из вызовов `setState()` в этом файле. Её также относительно просто найти и исправить, так как в одном файле обычно всего несколько вызовов `setState()`. -Если пропсы неверны, вы можете пройти в инспекторе вверх по дереву, в поисках первого компонента, который «отравил колодец», передав плохие пропсы вниз. +Если пропсы неверны, вы можете пройти в инспекторе вверх по дереву, в поисках первого компонента, который передал неправильные пропсы вниз. Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих пропсов и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. From fbef33ea5e042c7e26209862781b9b6a67ba7768 Mon Sep 17 00:00:00 2001 From: Anton Ahatov Date: Mon, 18 Mar 2019 09:19:34 +0300 Subject: [PATCH 18/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 3a4ef9cd2..2faca2d50 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -150,7 +150,7 @@ There is an internal joke in the team that React should have been called "Schedu В нашей кодовой базе JSX предоставляет однозначные подсказки для инструментов, работающих с деревом React-элементов. Это позволяет добавлять оптимизации во время сборки, такие как [всплытие неизменяющихся элементов](https://babeljs.io/docs/en/babel-plugin-transform-react-constant-elements/), безопасный анализ и использование внутреннего компонента codemod, и добавление в предупреждения [пути до исходников JSX кода](https://github.com/facebook/react/pull/6771). -### Догфудинг {#dogfooding} +### Использование React в Facebook {#dogfooding} Мы стараемся решать проблемы, поднятые сообществом. Однако, скорее всего, мы будем отдавать приоритет тем проблемам, с которыми люди *также* сталкиваются внутри Facebook. Возможно нелогично, но мы думаем, что это основная причина, по которой сообщество может полагаться на React. From e21f96a3657c86f6650d0e4a44f5767992cd2e24 Mon Sep 17 00:00:00 2001 From: Anton Ahatov Date: Mon, 18 Mar 2019 09:19:42 +0300 Subject: [PATCH 19/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 2faca2d50..423eac4aa 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -154,7 +154,7 @@ There is an internal joke in the team that React should have been called "Schedu Мы стараемся решать проблемы, поднятые сообществом. Однако, скорее всего, мы будем отдавать приоритет тем проблемам, с которыми люди *также* сталкиваются внутри Facebook. Возможно нелогично, но мы думаем, что это основная причина, по которой сообщество может полагаться на React. -Интенсивное внутреннее использование даёт нам уверенность в том, что React не исчезнет завтра. React был создан в Facebook для решения своих проблем. Он приносит ощутимую бизнес-ценность компании и используется во многих её продуктах. [Догфудинг](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) — это означает, что наше видение остаётся ясным и мы сфокусированы на движении вперёд. +Интенсивное внутреннее использование даёт нам уверенность в том, что React не исчезнет завтра. React был создан в Facebook для решения своих проблем. Он приносит ощутимую бизнес-ценность компании и используется во многих её продуктах. Использование своего продукта у себя позволяет оставаться нашему видению проекта ясным и сфокусированным на движении вперёд. Это не означает, что мы игнорируем вопросы, поднятые сообществом. Например, мы добавили поддержку [web-компонентов](/docs/webcomponents.html) и [SVG](https://github.com/facebook/react/pull/6243) в React, хотя мы не используем их внутри. Мы активно [следим за вашими проблемами](https://github.com/facebook/react/issues/2686) и [устраняем их](/blog/2016/07/11/introducing-reacts-error-code-system.html) по мере наших возможностей. Сообщество — это то, что делает React особенным для нас и мы рады внести свой вклад. From c9642f11a6149b47d29c4d5a3f103a2d3ea178fb Mon Sep 17 00:00:00 2001 From: Anton Ahatov Date: Tue, 19 Mar 2019 10:16:57 +0300 Subject: [PATCH 20/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 423eac4aa..080826f7d 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -102,7 +102,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Отладка {#debugging} -Когда что-то идёт не так, важно иметь «хлебные крошки», чтобы найти источник ошибки в кодовой базе. В React «хлебными крошками» являются свойства и состояние. +Когда что-то идёт не так, важно иметь возможность найти источник ошибки в кодовой базе. В React помогают это сделать свойства и состояние. Если вы видите на экране, что что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность пропсов и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. From 52a316787e36eb9e5c14a6edcb5f0a6469af54a9 Mon Sep 17 00:00:00 2001 From: echobrain Date: Tue, 19 Mar 2019 10:18:52 +0300 Subject: [PATCH 21/34] fixed translation of debugging --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 080826f7d..6b4d87141 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -102,7 +102,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Отладка {#debugging} -Когда что-то идёт не так, важно иметь возможность найти источник ошибки в кодовой базе. В React помогают это сделать свойства и состояние. +Когда что-то идёт не так, важно иметь возможность найти источник ошибки в кодовой базе. В React в этом помогают свойства и состояние. Если вы видите на экране, что что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность пропсов и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. From a2f8c3f132e31e0a2c20bc230ef8aceb4b13132c Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Tue, 19 Mar 2019 00:31:25 -0700 Subject: [PATCH 22/34] Update design-principles.md --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 6b4d87141..51fccf6e3 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -134,7 +134,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Реализация {#implementation} -Мы стараемся предоставлять изящное API везде, где это возможно. Но мы гораздо меньше обеспокоены изящностью реализации. Реальный мир далёк от идеала и мы предпочитаем добавлять некрасивый код в библиотеку в разумной степени, если это означает, что пользователю не нужно его писать. Когда мы оцениваем новый код, мы смотрим на правильность реализации, производительность и удобство разработки. Изящность вторична. +Мы стараемся предоставлять изящный API везде, где это возможно. Но мы гораздо меньше обеспокоены изящностью реализации. Реальный мир далёк от идеала и мы предпочитаем добавлять некрасивый код в библиотеку в разумной степени, если это означает, что пользователю не нужно его писать. Когда мы оцениваем новый код, мы смотрим на правильность реализации, производительность и удобство разработки. Изящность вторична. Мы предпочитаем скучный код умному. Код одноразовый и часто меняется. Поэтому важно, чтобы он [не привносил новых внутренних абстракций без крайней необходимости](https://youtu.be/4anAwXYqLG8?t=13m9s). Подробный код, который легко перемещать, изменять и удалять, предпочтительнее изящного, преждевременно абстрагированного и трудно изменяемого кода. From b14149bb6877a5705c1b725cb7733266b35c462d Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 11:34:39 +0300 Subject: [PATCH 23/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 51fccf6e3..6b2593203 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -90,7 +90,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Удобство разработки {#developer-experience} -Нам важно сделать разработку удобной. +Нам важно сделать процесс разработки комфортным. Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы часто слышим, что это повышает производительность как инженеров Facebook, так и сообщества. From d683265c5b671eae264b149cfdac1d1a67ff7d95 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 11:37:59 +0300 Subject: [PATCH 24/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 6b2593203..9e817db1d 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -92,7 +92,7 @@ There is an internal joke in the team that React should have been called "Schedu Нам важно сделать процесс разработки комфортным. -Например, мы поддерживаем [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы часто слышим, что это повышает производительность как инженеров Facebook, так и сообщества. +Например, мы поддерживаем расширение браузера [React DevTools](https://github.com/facebook/react-devtools), при помощи которого можно просматривать дерево React-компонентов в Chrome и Firefox. Мы часто слышим, что это повышает производительность как инженеров Facebook, так и остального сообщества. Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее, чем продакшен-версия. From 929ad2ce6876d95e70cd94d66b64791aca6b2a4a Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 11:38:44 +0300 Subject: [PATCH 25/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 9e817db1d..4d263f97d 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -96,7 +96,7 @@ There is an internal joke in the team that React should have been called "Schedu Мы также стараемся сделать всё возможное, чтобы предоставить полезные предупреждения для разработчиков. Например, во время разработки React предупреждает вас, если теги вложены непонятным для браузера образом, или если в API сделана опечатка. Предупреждения и связанные с ними проверки являются основной причиной, почему версия React для разработчиков медленнее, чем продакшен-версия. -Наблюдение за использованием паттернов внутри Facebook помогает нам найти наиболее частые ошибки и понять как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать возникновение частых ошибок и предупреждаем о них. +Наблюдение за тем, как React используется внутри Facebook помогает нам выявить и понять наиболее частые ошибки, а также как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать частые ошибки и предупредить о них. Мы всегда ищем способы сделать разработку удобнее. И рады вашим предложениям и содействию по улучшениям. From 5555b9e70a2d8476dce63c3e02895d7287d0d8bb Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:29:36 +0300 Subject: [PATCH 26/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 4d263f97d..a574e6c4b 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -104,7 +104,7 @@ There is an internal joke in the team that React should have been called "Schedu Когда что-то идёт не так, важно иметь возможность найти источник ошибки в кодовой базе. В React в этом помогают свойства и состояние. -Если вы видите на экране, что что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность пропсов и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. +Если вы видите, что на экране что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность его пропсов и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. Если состояние неверно, значит проблему спровоцировал один из вызовов `setState()` в этом файле. Её также относительно просто найти и исправить, так как в одном файле обычно всего несколько вызовов `setState()`. From 1a666151c4b40afc03ab9cb115d8ced118420bd9 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:30:35 +0300 Subject: [PATCH 27/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index a574e6c4b..a1a7b2c30 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -126,7 +126,7 @@ There is an internal joke in the team that React should have been called "Schedu ### За пределами DOM {#beyond-the-dom} -Мы видим ценность React в том, что он позволяет писать компоненты, в которых меньше ошибок и которые хорошо сочетаются друг с другом. Исходной целью рендеринга для React является DOM, но [React Native](https://facebook.github.io/react-native/) также важен, как для Facebook, так и для сообщества. +Мы видим ценность React в том, что он позволяет писать компоненты, в которых меньше ошибок и которые хорошо сочетаются друг с другом. Исходной целью рендеринга для React является DOM, но [React Native](https://facebook.github.io/react-native/) не менее важен, как для Facebook, так и для сообщества. Быть независимым от визуализации — важное ограничение в дизайне React. Это создаёт некоторые накладные расходы во внутренних представлениях. С другой стороны, любые улучшения ядра переносятся между платформами. From 15468330a040ba789e23d6198ef642bc4ed5c106 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:31:20 +0300 Subject: [PATCH 28/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index a1a7b2c30..b90946cd1 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -148,7 +148,7 @@ There is an internal joke in the team that React should have been called "Schedu Аналогичную роль играет [JSX](/docs/introducing-jsx.html). Хотя он необязателен для работы React, мы широко используем его в Facebook как по эстетическим, так и по практическим соображениям. -В нашей кодовой базе JSX предоставляет однозначные подсказки для инструментов, работающих с деревом React-элементов. Это позволяет добавлять оптимизации во время сборки, такие как [всплытие неизменяющихся элементов](https://babeljs.io/docs/en/babel-plugin-transform-react-constant-elements/), безопасный анализ и использование внутреннего компонента codemod, и добавление в предупреждения [пути до исходников JSX кода](https://github.com/facebook/react/pull/6771). +В нашей кодовой базе JSX предоставляет однозначную подсказку инструментам, что они работают с деревом React-элементов. Это позволяет добавлять оптимизации во время сборки, такие как [всплытие неизменяющихся элементов](https://babeljs.io/docs/en/babel-plugin-transform-react-constant-elements/), безопасный анализ и использование внутреннего компонента codemod, а также добавление в предупреждения [пути до исходников JSX кода](https://github.com/facebook/react/pull/6771). ### Использование React в Facebook {#dogfooding} From 656319ae4068f3bf2faee07402d136493d2c2375 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:31:56 +0300 Subject: [PATCH 29/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index b90946cd1..ebeb6b124 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -158,6 +158,6 @@ There is an internal joke in the team that React should have been called "Schedu Это не означает, что мы игнорируем вопросы, поднятые сообществом. Например, мы добавили поддержку [web-компонентов](/docs/webcomponents.html) и [SVG](https://github.com/facebook/react/pull/6243) в React, хотя мы не используем их внутри. Мы активно [следим за вашими проблемами](https://github.com/facebook/react/issues/2686) и [устраняем их](/blog/2016/07/11/introducing-reacts-error-code-system.html) по мере наших возможностей. Сообщество — это то, что делает React особенным для нас и мы рады внести свой вклад. -Выпустив много OSS-проектов в Facebook, мы поняли, что попытка сделать всех счастливыми в то же время приводит к созданию слишком общих проектов, которые плохо развиваются. Наоборот, мы обнаружили, что выбор узкой аудитории и фокусировка ней, приносит положительный конечный результат. Именно это мы сделали с React. И до сих пор решение проблем, с которыми сталкиваются продуктовые команды Facebook, хорошо транслировались на OSS-сообщество. +Выпустив много OSS-проектов в Facebook, мы поняли, что попытка сделать всех счастливыми одновременно приводит к созданию слишком общих проектов, которые плохо развиваются. Мы также обнаружили, что выбор узкой аудитории и фокусировка ней, напротив приносит положительный конечный результат. Именно это мы сделали с React. И до сих пор решение проблем, с которыми сталкиваются продуктовые команды Facebook, хорошо транслировались на OSS-сообщество. Недостатком этого подхода является то, что иногда мы не уделяем достаточного внимания тем вещам, с которыми командам Facebook не приходится сталкиваться, такими как опыт «начала работы». Мы хорошо знаем об этой проблеме. И думаем над тем как сделать лучше так, чтобы это принесло пользу всем в сообществе, не совершая тех же ошибок, которые мы делали в OSS-проектах до этого. From b5dceb0b16d61272c61342f299424016c1250406 Mon Sep 17 00:00:00 2001 From: Leonid Fedorov Date: Wed, 20 Mar 2019 14:32:18 +0300 Subject: [PATCH 30/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index ebeb6b124..5cd69b348 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -102,7 +102,7 @@ There is an internal joke in the team that React should have been called "Schedu ### Отладка {#debugging} -Когда что-то идёт не так, важно иметь возможность найти источник ошибки в кодовой базе. В React в этом помогают свойства и состояние. +Когда что-то идёт не так, важно иметь возможность найти источник ошибки в кодовой базе. В React в этом помогают пропсы и состояние. Если вы видите, что на экране что-то не так, можете открыть React DevTools, найти компонент, отвечающий за рендеринг, а затем проверить правильность его пропсов и состояния. Если они в порядке, значит проблема в `render()` функции компонента или в какой-то функции, вызываемой в `render()`. Проблема изолирована. From 1d2e7c4b2549fecaa9bab0827968444be9369a64 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:32:45 +0300 Subject: [PATCH 31/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 5cd69b348..4c59f11ad 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -142,7 +142,7 @@ There is an internal joke in the team that React should have been called "Schedu Некоторые часто используемые API имеют длинные имена. Например, мы [специально](https://github.com/reactjs/react-future/issues/40#issuecomment-142442124) используем `componentDidMount()` вместо `didMount()` или `onMount()`. Цель в том, чтобы сделать точки взаимодействия с библиотекой хорошо заметными. -В такой большой кодовой базе, как у Facebook, очень важно иметь возможность поиска использования определённых API. Мы ценим разные длинные имена, особенно для функционала, который следует использовать редко. Например, `dangerouslySetInnerHTML` трудно пропустить на кодревью. +В такой большой кодовой базе, как у Facebook, очень важно иметь возможность поиска использования определённых API. Мы ценим разные длинные имена, особенно для функциональности, которую следует использовать редко. Например, `dangerouslySetInnerHTML` трудно пропустить на кодревью. Оптимизация для поиска также важна, так как мы зависим от [codemod](https://www.youtube.com/watch?v=d0pOgY8__JM)-скриптов для внесения критических изменений. Мы хотим, чтобы было легко и безопасно вносить большие автоматизированные изменения в кодовую базу, а уникальные длинные имена нам в этом помогают. Подобно этому, уникальные имена позволяют легко создавать собственные [правила анализа](https://github.com/yannickcr/eslint-plugin-react) использования React, не беспокоясь о возможных ложных срабатываниях. From b4c28ac455b04b0c4e6680224224bf25f0527bc1 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:34:56 +0300 Subject: [PATCH 32/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 4c59f11ad..3daad61cb 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -120,7 +120,7 @@ There is an internal joke in the team that React should have been called "Schedu Например, иногда нас просят реализовать такую функцию, как `React.configure(options)` или `React.register(component)`. Но это создаёт множество проблем, и мы не знаем хороших решений для них. -Что если кто-то вызовет такую функцию из сторонней библиотеки компонентов? Что если одно React-приложение встраивает другое React-приложение и нужные им конфигурации несовместимы? Как сторонний компонент может указать, что ему нужна определённая конфигурация? Мы думаем, что глобальная конфигурация плохо работает с композицией. Поскольку композиция для React первостепенна, мы не позволяем менять глобальную конфигурацию в коде. +Что, если кто-то вызовет такую функцию из сторонней библиотеки компонентов? Что, если одно React-приложение встраивает другое React-приложение и нужные им конфигурации несовместимы? Как сторонний компонент может указать, что ему нужна определённая конфигурация? Мы думаем, что глобальная конфигурация плохо работает с композицией. Поскольку композиция для React первостепенна, мы не предоставляем возможности глобальной конфигурации в коде. Однако, мы предоставляем некоторые глобальные настройки на уровне сборки. Например, мы предоставляем отдельные сборки для разработки и продакшена. В будущем мы можем [добавить профилирующую сборку](https://github.com/facebook/react/issues/6627). Мы также открыты для рассмотрения других флагов сборки. From 0c55e0ef6a59266d17f0cd153d0d14724308c418 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:36:54 +0300 Subject: [PATCH 33/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 3daad61cb..72d8b9b30 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -110,7 +110,7 @@ There is an internal joke in the team that React should have been called "Schedu Если пропсы неверны, вы можете пройти в инспекторе вверх по дереву, в поисках первого компонента, который передал неправильные пропсы вниз. -Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих пропсов и состояния. Явная цель проектирования, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. +Для React очень важна возможность отследить любой UI до данных, на которых он построен, в виде текущих пропсов и состояния. Одной из явных целей в нашем дизайне является то, чтобы состояние не «пропадало» в замыканиях и вычислениях, и было доступно напрямую в React. Хотя UI динамичен, мы считаем, что синхронный рендер пропсов и состояния превращают отладку из гадания в скучный, но конечный процесс. Мы хотели бы сохранить это ограничение в React, хотя это усложняет некоторые варианты использования, такие как сложная анимация. From b940113db81b005b976a89f20001f3e3ef7111a5 Mon Sep 17 00:00:00 2001 From: ANOTHER GUY Date: Wed, 20 Mar 2019 14:41:23 +0300 Subject: [PATCH 34/34] Update content/docs/design-principles.md Co-Authored-By: echobrain --- content/docs/design-principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md index 72d8b9b30..e83a1f1cf 100644 --- a/content/docs/design-principles.md +++ b/content/docs/design-principles.md @@ -98,7 +98,7 @@ There is an internal joke in the team that React should have been called "Schedu Наблюдение за тем, как React используется внутри Facebook помогает нам выявить и понять наиболее частые ошибки, а также как предотвратить их заранее. Когда мы добавляем новые возможности, мы стараемся предугадать частые ошибки и предупредить о них. -Мы всегда ищем способы сделать разработку удобнее. И рады вашим предложениям и содействию по улучшениям. +Мы всегда ищем способы сделать разработку удобнее, поэтому с радостью обсуждаем ваши идеи и принимаем вклады, приносящие улучшения. ### Отладка {#debugging}