Невежество не помеха для выживания, высокомерие
Это оценка г-ном Лю Цысинем высокомерного отношения землян к проблеме трех тел в романе «Проблема трех тел».
28 декабря 2020 года я опубликовал на Наггетс«Почему я рекомендую статью о разработке Vue3 с помощью JSX», вызывая много тепла, 29-го числа статья была в пятерке лучших на первой странице фронтенд-раздела, а к вечеру практически зафиксировала первую позицию.
Я не ожидал, что эта статья будет такой популярной.Хотя статья действительно полна галантереи, а анализ очень объективный и разумный, она все-таки рекомендуется и не должна быть такой популярной. После анализа я обнаружил, что самая большая причина высокой популярности статьи заключается в том, чтоКомментарии областиЖарко, на момент написания этой статьи количество ответов в области комментариев достигло130+, Это определенно аномалия в статье Nuggets.
Изначально я должен был быть счастлив, что мой контент так популярен, но я действительно не могу быть счастлив, потому что субъективность области комментариев стала непрофессиональной, что заставило меня сильно беспокоиться о фронтенд-индустрии. И после долгих размышлений на ночь, я решил сделать сегодня официальный ответ в области комментариев.
Цель написания этой статьи не в том, чтобы спорить с этими одноклассниками, я не могу разбудить тех, кто притворяется спящим, я надеюсь, что некоторые одноклассники, которые действительно хотят улучшить себя, не будут введены в заблуждение областью комментариев.
Я сделаю единый ответ на некоторые вводящие в заблуждение комментарии в области комментариев, и пусть каждый учится думать самостоятельно с объективной точки зрения и различать, что правильно, а что неправильно.
Прежде чем мы начнем, я хотел бы отметить несколько моментов:
- Я просто объективно анализирую проблемы SFC относительно JSX, и я не говорил, что JSX надо использовать для написания Vue3
- Мой контент очень объективен, и для анализа могу привести реальные кейсы, а не субъективные ощущения
И я хочу кратко представиться:
- я создалBestVue3веб-сайт, мне очень нравится Vue3
- Я сделал три проекта с открытым исходным кодом Vue3, прежде чем написать эту статью.
- @bv3/routerУчитесь у инструмента управления маршрутизацией React-Router
- vue-jssВерсия Vue3 схемы CSS-IN-JS
- JsonSchemFormИнструмент для генерации форм через JsonSchema
- Я обнаружил ошибку в Vue3, официальной тестовой библиотеке для Vue3.Ошибка решена
- я написалВеб-сайт для разбора исходного кода Vue3
Я был активен в сообществе Vue3 с начала этого года и буду продолжать быть активным.Если вы хотите получить качественные знания по обучению Vue3 в первый раз или обсудить со мной проблемы Vue3, вы можете выполнить поиск и подписаться на общедоступную учетную запись BestVue3.. Больше интересующих предметов также может звезда волна.
Итак, давайте начнем, я перечислю еще несколько репрезентативных комментариев, а затем отвечу.
Первая категория, почему бы не использовать React напрямую
Итак, вопрос в том, почему бы не реагировать напрямую
Отклонить vue, реагировать напрямую
реагировать вызов эксперта
Самая большая проблема с этими комментариями заключается в том, что
Они напрямую приравнивают JSX к React, а SFC к Vue.. На самом деле это очень дешевая идея, потому что она напрямую игнорирует другие возможности React и Vue, что является оскорблением для этих двух превосходных фреймворков. Люди, которые напишут эти комментарии, с большей вероятностью:
- Я не совсем понимаю режим обновления React и принцип отзывчивости Vue.
- Не знаю результат после компиляции JSX и SFC
- Я не буду собирать проект сам, скорее всего, я буду использовать CRA или vue-cli для создания проекта.
Как разработчики, мы не должны использовать инструменты разработки в качестве причины для выбора фреймворка.Это требует, чтобы сообщество думало, что фреймворк может поддерживать различные инструменты разработки. React также может использоватьClojureScript
написать. Мы должны сосредоточиться на сути фреймворка, например:
- Принцип виртуального DOM
- его механизм обновления
- Отзывчивые принципы
- Какие расширенные функции он поддерживает, например
Suspense
,Concurrent
Ждать
Вторая категория, HTML
Лично мне не нравится вставлять html-теги в код логики js, мне неудобно
Многие люди говорили, что шаблон подходит для написания бизнеса, и в центре внимания бизнеса не гибкость, а четкая структура; я всегда чувствую, что html, смешанный с js, похож на оригинальный php. Смотреть на вложенность
Извините за отказ от jsx в моем сердце, ненавижу писать html на js
Если вы давно пишете на React и Vue и все еще говорите об HTML, это очень печально. Одна из основных целей фреймворков — сгладить DOM, чтобы разработчикам не нужно было обращать внимание на DOM, они пытаются блокировать HTML.
Когда опытный разработчик пишет JSX или шаблон, в его глазах вообще не должно быть HTML, они видят толькоh('div', {id: 'xxx'}, 'Hello World')
, такой процесс создания виртуального DOM.
Я помню, как одноклассник сказал: **Почему я должен обращать внимание на результаты после компиляции? ** Какое-то время я был в замешательстве. После долгих раздумий я хочу сказать студентам, прочитавшим эту статью,Если вы хотите улучшить себя, вы должны изучить базовый, не говоря уже о компиляции результатов, это не нижний слой, а процесс компиляции едва рассчитывается.Для одноклассника, который не хочет самосовершенствоваться, я вообще не могу его опровергнуть.
Так что не надо говорить, что JSX — это писать HTML на JS, если вы скажете это, когда пойдете на собеседование, интервьюер прямо подумает, что вы вообще не понимаете принцип работы фреймворка.
Третья категория, оптимизация производительности
Стремление к производительности jsx может быть не лучшим выбором, но гибкость jsx лично чувствует, что шаблон действительно недостижим
Является ли серия оптимизаций времени компиляции для шаблона в vue3 ненужной?
Вы все используете jsx, тем более зря компилятор написали, и кучу оптимизаций шаблона сделали зря, лучше использовать react
Студенты, которые могут поднять этот вопрос, относительно хороши, потому что они знают, что шаблон имеет некоторые оптимизации производительности в процессе компиляции, что указывает на то, что они тщательно изучили принцип.
Для этого нам нужно прояснить принцип:JSX также необходимо скомпилировать.Как и шаблон, они пройдут стадию синтаксического анализа, поэтому теоретически все оптимизации, сделанные шаблоном Vue3, могут быть выполнены JSX.
На самом деле текущий плагин babel-jsx также имеет возможность оптимизации, открываяoptimize
Настроив проект, вы можете выполнить оптимизированную по производительности компиляцию, такую как patchFlag.
{
"plugins": [["@vue/babel-plugin-jsx", {optimize: true}]]
}
Однако автор также написал примечание:
It's not recommended to enable it If you are not familiar with Vue 3.
Если вы не очень знакомы с Vue3, рекомендуется не открывать
На самом деле, есть некоторые проблемы с оптимизацией производительности Vue3, с которыми я столкнулся несколько дней назад.issue, чиновник не уверен, можно ли это решить.
Если вы не знаете механизм обновления Vue3 и его исходный код, вы будете сбиты с толку, когда столкнетесь с этой проблемой.
Так что не верьте слепо в оптимизацию.
Четвертая категория, css
Есть ли какое-либо использование, похожее на vue css с областью видимости под jsx?Это кажется почти бессмысленным после использования styled-jsx
Я думаю, что самым большим преимуществом sfc является стиль области видимости, который намного проще в использовании, чем styledscomponents и cssmodule.
CSS с ограниченной областью действия SFC действительно очень удобная функция, которая позволяет нам писать CSS для компонента и, очевидно, помещать их в файл, чтобы ограничить их область действия.
Мы могли бы заменить его в JSX на css-модули, но это, несомненно, потребует дополнительного шага.import classes from 'xxx.css'
Этот шаг и что нужно написать при написании классаclasses.xxx
.
Кроме того, мы также можем использовать решение css in js, которое очень распространено в React (вероятно, из-за того, что SFC настолько популярен, что в настоящее время в экосистеме Vue нет хорошей реализации).
Но ни одна из вышеперечисленных альтернатив не является более простой и удобной в использовании, чем css с областью видимости. Так что, если для вас важен css с областью действия, вы действительно можете рассмотреть выбор SFC из-за этого фактора.
Это фактор отбора, и его важность разная для разных команд, поэтому я не буду высказывать свое личное мнение.
Суммировать
Сначала ответьте на эти вопросы, и я сообщу, когда появятся новые.
Я очень приветствую всех, кто заходит в зону комментариев для общения со мной, но оно ограничивается общением объективных фактов, некоторого субъективного опыта:
- я просто не люблю писать html на js
- SFC прост, его легче понять, чем JSX (я не согласен с простотой).
- Vue должен использовать SFC
Я буду игнорировать эти непитательные мнения в будущем.Вчера, это было действительно потому, что я слишком долго не размещал статью.Я не мог не сказать несколько слов, когда я увидел некоторые комментарии.Если есть не очень хорошие комментарии , пожалуйста, прости меня.
Если вы считаете, что моя точка зрения неверна, вы можете высказать свою точку зрения и перечислить некоторые объективные факты, чтобы проиллюстрировать, где я не прав Мы можем глубоко обменяться мнениями и расти вместе.
Как и при регистрации проблемы на github, вас обычно просят предоставить минимальную демонстрацию, ожидаемый результат, фактический результат и приблизительную причину. Те проблемы, которые говорят «Я думаю, что результаты функций этой библиотеки должны быть выполнены», в принципе не могут избежать участи быть закрытыми в одно мгновение.