Много раз я думал, что знаю, пока мне не пришлось учить других людей. Это одна из причин, почему я начал писать публикацию 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 для проекта с открытым исходным кодом, но, похоже, сейчас никто не занимается этим проектом.
На прошлой неделе я не бросал себе вызов, а делал только несколько более простых задач. На следующей неделе я должен приложить усилия к некоторым старым базовым более сложным задачам.