Много раз я думал, что знаю, пока мне не пришлось учить других людей. Это одна из причин, почему я начал писать публикацию AlgoDS.

На этой неделе я думал о том, как объяснить некоторые идеи нетехническим людям.

Что такое API?

Я использовал API в течение многих лет, еще до того, как начал учиться программировать, но я никогда не думал о реальном определении. После того, как я быстро погуглил, я был удивлен тем, как хорошо люди делают вещи запутанными, сложными… и неправильными.

В этой статье автор сказал, что API похоже на пиво. и в нескольких видео, которые мне попадались (раз, два) упоминалось, что API — это как меню в ресторане. Первый абсолютно неуместен, потому что API — это не само пиво/данные. Второй лучше, но API должно быть меню и официант/официантка. Самое главное, их определение ограничено только RESTful API, что составляет лишь небольшую часть всех API.

Я бы сравнил API с номером телефона горячей линии, скажем, Domino’s. Как отдельный человек, я не могу говорить с компанией. Итак, компания предоставляет мне номер телефона, по которому я могу позвонить, чтобы 1. заказать пиццу, 2. отследить мои заказы, 3. пожаловаться на их обслуживание. Эти параметры являются API. Это помогает мне общаться с компанией.

Таким образом, API, интерфейс прикладного программирования, как его название, помогает двум разным языкам программирования общаться друг с другом. Это не обязательно должен быть сервисный звонок. JavaScript использует DOM API для манипулирования HTML и использует API браузера, чтобы делать много интересных вещей в браузере.

Что такое облако?

Я думал, что Cloud, в отличие от API, говорит сам за себя, но после просмотра этого видео AWS я чувствую себя сбитым с толку.

Облако похоже на ваш чемодан, в котором хранится все, что вам нужно, но вам не нужно носить его с собой, и оно всегда рядом, когда вам это нужно.

Что такое HTML, CSS и JavaScript?

Если мы видим, что веб-страницы — это люди, HTML, CSS и JavaScript — это три макроэлемента. Хммм... Я не могу двигаться дальше, потому что их действительно сложно сравнивать. Это не похоже на хорошую метафору.

На этой неделе я провел некоторое время за чтением официальных документов React и, как обычно, отвлекся на что-то другое. Однажды я написал следующие слова..

Только что заметил, что когда Джордан Уоке создавал ReactJS, он был просто инженером-программистом в Facebook с 2-летним опытом работы и степенью бакалавра в области компьютерных наук. А Эван Ю был креативным технологом в Google, специализирующимся на искусстве.

Потом я случайно увидел твит Эвана…

Я так удивлен, как быстро они научились.

Я лучше потрачу больше усилий, чтобы наверстать упущенное, так что давайте вернемся к React. После прочтения официального документа у меня появилось более глубокое понимание многих вещей. Благодаря моему новому знанию AlgoDS я не представляю, как бы я переваривал reconcilation без знания Tree.

Что такое чистые компоненты?

Каждый раз, когда я вижу Pure Components, я один раз гуглю. Я не могу вспомнить, сколько раз я гуглил это. Очень сложно запомнить определение, и я пожаловался, что команда React очень плохо давала этому название.

Я ошибся, потому что обратил внимание только на первый абзац:

React.PureComponent похож на React.Component. Разница между ними в том, что React.Component не реализует shouldComponentUpdate(), а React.PureComponent реализует его с поверхностным сравнением propи state.

Ключевое отличие — имеет или не имеет shouldComponentUpdate(), PureComponent должно называться «autoUpdateComponent», но откуда «чистый»? Если продолжить чтение до следующего абзаца, кажется, что есть ответ…

Если функция render() вашего компонента React отображает тот же результат с теми же свойствами и состоянием, вы можете использовать React.PureComponent для повышения производительности в некоторых случаях.

«отображает тот же результат с теми же реквизитами и состоянием»? Это выглядит знакомо… как… чистая функция… Итак, я думаю, что PureComponent похожа на «чистую функцию», и, поскольку предполагается, что ей должны быть предоставлены одни и те же реквизиты и состояние, мы можем с уверенностью отображать shouldComponentUpdate() автоматически каждый раз.

Чтобы сделать PureComponent быстрее, он выполняет поверхностное сравнение. Задача разработчика — решить, использовать ли PureComponent или Component. Если нам не нужно глубокое сравнение свойств и состояния, использование PureComponent является более эффективным решением.

В чем разница между элементом и компонентом?

Дэн Абрамов написал на этот вопрос длинное пояснение. Насколько я понимаю, это можно описать следующим образом:

Реквизит → Компоненты → Элементы

Компоненты принимают свойства в качестве входных данных и возвращают элементы в качестве выходных данных. Элементы — это просто объекты, описывающие дерево.

Управляемые компоненты

Без React все, что вводит пользователь, отображается в файле <input>directly. С React нам нужно убедиться, что stateвладеет «единственным источником правды», поэтому мы используем setStateдля каждого нажатия клавиши, чтобы изменить значение.

Я предполагаю, что это называется «Контролируемые компоненты», потому что состояние контролируется handleChange на входе.

Вышеизложенное — это то, что я узнал на данный момент, и я планирую углубиться в изучение исходного кода. Вот несколько хороших ресурсов:

Пол О Шеннесси — Создание React с нуля

Понимание исходного кода React — начальный рендеринг (простой компонент) I

АлгоДС

Я так счастлива, что побила свой личный рекорд на конкурсе LeetCode 138 и заняла 949 место. Впервые поднялась выше 1000 😂 Итак, утром я пробежала 18 км и в качестве праздника исследовала новую трассу, которая преодолела мою личную дистанцию. запись также.

Нашел хороший ресурс и на JavaScript… Визуализатор алгоритмов. Я уже сделал свой первый PR для проекта с открытым исходным кодом, но, похоже, сейчас никто не занимается этим проектом.

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