В этой статье за основу взят React.Что касается Vue и Angular, я пока не буду их рассматривать, поэтому не буду много комментировать.Если вы обнаружите, что у них тоже есть особые преимущества, добро пожаловать, добавляйте их и общайтесь друг с другом.
1. Инструменты
1.1.1. yarn/npm
npm.taobao.org/), в противном случае очень медленно.
1.1.2. npm-check-update(ncu)
GitHub.com/T Jun нет / даже ...Для проверки обновления библиотек зависимостей скорость разработки интерфейса слишком высока, и необходимо часто отслеживать важные сторонние версии зависимостей.Одним из них является устранение скрытых ошибок, а другим - предотвращение несовместимости API и трудностей с обновлением. вызвано длительным отсутствием отслеживания.
1.1.3. lerna/yarn workspace
lernajs.io/ пряжа pk more.com/ru/docs/ Я делаю…Альтернатива. Крупномасштабный проект или организационная структура проекта библиотеки классов, lerna в настоящее время используется во многих известных проектах. Это не согласуется с идеей архитектуры микроинтерфейса, которую мы в настоящее время изучаем, и может использоваться в небольшой области.
1.1.4. create-react-app
GitHub.com/Facebook/взрослый…create-react-app становится все более популярным в отрасли, в конце концов, это официальная функция Facebook.
1.2. Развитие
1.2.1 IDE — webStrom/vscode
VSCode, бесплатный и с открытым исходным кодом, богатый плагинами, широкими возможностями настройки и хорошей динамикой развития. Наиболее часто используемыми плагинами являются EditorConfig, Prettier, TODO Highlight, Trailing Spaces, ESlint, Jest, Node.js Extension Pack, Debugger for Chrome, Git Extension Pack и т. д., вы можете обратиться сюда:Уууууу. Вернуться cool.com/articles/F V…WebStorm интеллектуален, отличается высокой эффективностью разработки, относительно большим количеством подключаемых модулей и высоким качеством. Кроме того, VSCode также хорош для разработки Java, а также для поддержки Flutter.
1.2.2. Компилировать пакет --webpack
Выбор вебпака бесспорен, комьюнити активное, а обновления быстрые. Vue, angular и react — все это используемые веб-пакеты.
1.2.3 Проверка кода — eslint/editorconfig/prettier/husky/tslint
Используйте eslint и взаимодействуйте с подключаемым модулем VSCode для проверки в режиме реального времени.Что касается стиля кодирования, используйте editorconfig и prettier для совместной работы с подключаемым модулем VSCode для стандартизации. В прошлом база правил eslint в основном использовала правила компании airbnb и Google. Позже я почувствовал, что многие правила были слишком строгими, и мне пришлось написать много игнорируемых правил. В конце концов, я напрямую использовал тот, который поставляется с create- react-app или рекомендация красивее.Правила проще. В качестве альтернативы используйте хаски (GitHub.com/та же партия о/ху…Проверяйте lint перед фиксацией, чтобы избежать внесения плохого кода в кодовую базу. Те, кто использует ts, могут использовать tslint
1.3 Отладка
使用webpack提供的hot-reload开发服务和source-map,利用chrome浏览器自带的调试能力,同时结合相关开发工具插件: (GitHub.com/Facebook/Горячие…) (GitHub.com/Горячее цинкование/Горячее…) (GitHub.com/Не дайте себя обмануть деталями/Поклонение…) 如需与后台api服务联调,可以通过react-app-rewired配置webpack的devServer做反向代理实现。Веб-пакет Просто .org/config как у ATI...
1.4 Тестирование
TODO: отсутствие интеграционного тестирования, e2e-тестирования и других сопутствующих инструментов.
1.4.1. Установка тестирования
Существует много фреймворков для внешнего тестирования, в настоящее время основным направлением должно быть jest и jest-dom, в основном потому, что оно поставляется с приложением create-react-app, а также facebook и вспомогательной библиотекой react-testing-library. Другими распространенными являются mocha, jasmine, ava и т. д., а также библиотеки утверждений, такие как chai/sinon, которые в основном одинаковы.
1.4.2 Проверка компонентов
Стоит упомянуть два высокоуровневых фреймворка для тестирования, разработанных для компонентов React:airbnb.io/enzyme/ storybook.js.org/В настоящее время мы его не использовали, в основном потому, что юнит-тестов было написано меньше, а разработка отставала.
1.4.3. Инструменты передачи данных
Также есть разные mock-библиотеки, которые мало используются, в основном достаточно тех, что идут в комплекте с jest, и есть mock-библиотека ajax:GitHub.com/CTI ММ и М/Ашин…Это используется в сочетании с тестом библиотеки axios. Существуют также инструменты для создания вспомогательных тестов, зависящие от данных, такие как:GitHub.com/Мар АК/faker…
1.5. Развертывание
2. Компоненты
2.1.2 Управление состоянием
MobX (mobx.js.org/).
2.1.3. Внешняя маршрутизация
В настоящее время реактивный маршрутизатор (реагировать-обучение.com/реагировать-маршрут…) является почти стандартом де-факто, но направление его улучшения версии 4–3 не очень разумно, потому что интерфейсная маршрутизация также по сути является категорией управления состоянием, но она изменяет такие события, как onEnter и onLeave, чтобы использовать жизненный цикл компонента. Приносит связь, которая является шагом назад. На самом деле идея маршрутизации типа https://github.com/nareshbhatia/mobx-state-router правильная, но она не такая мощная, как react-router, и самое главное отсутствие вложенности. Поэтому пока однозначно будет использоваться react-router, но если найдется более качественный, то можно подумать о его замене в будущем.
2.2 Интерфейс
2.2.1 Базовый комплект
Прежде чем у нас будет достаточно рабочей силы для разработки собственной библиотеки компонентов, использование некоторых крупных сторонних наборов поможет быстро запустить продукт и поддерживать интерфейс. В настоящее время и(ant.design/index-cn)是我们的主UI库,其自带的组件可以解决80%到90%多的原型实现问题,还可以通过修改less变量实现一定程度的界面风格定制。 在antd之前也验证过一些其它的套件,其中有一套也是阿里系的(具体名字和地址忘了,两年前antd的table不支持多级表头的时候考虑过它),还有http://amazeui.org/等,最终从组件的完整性和易用性方面看,还是antd胜出。 Вот некоторые ссылки:Билеты микро письмо .QQ.com / есть / JF я могу 64E1 R ...
Вы также можете использовать слияние (fusion.design/) Основное различие между этим набором фреймворков пользовательского интерфейса и antd заключается в возможности настройки компонентов, таких как настройка текста, границ, размеров, закругленных углов, теней и т. д. каждого компонента пользовательского интерфейса, а затем ввод файлов стилей для разработки и использования , нет необходимости в разработке Измените стиль компонента, и дизайнер визуального взаимодействия сможет его разработать напрямую.
2.2.2. CSS in JS
В дополнение к непосредственному внедрению файлов css/less самим webpack, есть несколько инструментов, которые могут повысить эффективность написания css: стиль шрифта и csstipstypestyle.github.io/), особенно полезно для элементов управления гибкой компоновкой. Рекомендуется использовать jss, но не рекомендуется использовать jss напрямую. Рекомендуется использовать отличный фреймворк пользовательского интерфейса с открытым исходным кодом для инкапсуляции jss, @material-ui/styles и @material-ui/system могут сократить объем написания CSS.
2.2.3 Библиотека карт
百度的ECharts及其React封装 (echarts.baidu.com/) (GitHub.com/сопроводить его из города/плохие поручения…) Рекомендуется использовать antV, ведь это решение для визуализации производства крупной компании.Рекомендуется использовать пакетную версию bizCharts (bizcharts.net/products/bi…) Есть несколько ссылок:Билеты Micro Channel .QQ.com / IS / PG WW S EV ... помните
2.2.4 Библиотека иконок
Antd поставляется с небольшим количеством иконок, большинство из которых по-прежнему используют библиотеку иконок Ali (www.iconfont.cn/), но использовать его все равно неудобно. В большинстве случаев значки реакции (react-icons.netlify.com/) достаточно, он содержит Шрифт классный(fontawesome.com/) И значки Material Design (Google.GitHub.IO/material-the…Иконка с открытым исходным кодом.
2.3. Окружение
2.3.1 Доступ к данным
В настоящее время мы используем fetch(github.github.io/fetch/), готовый к замене на axios (github.com/axios/axios), последний проще в использовании и имеет более простую макетную схему для легкого тестирования.
2.3.2. Интернационализация
Есть также много вариантов в программах интернационализации.GitHub.com/Yahoo/реагировать…Это также рекомендуется приложением creatre-react-app по умолчанию, но оно не кажется особенно гибким. Подготовьтесь к принятию решений, связанных с i18next: (GitHub.com/i18next/i18…) (GitHub.com/Multimedia RK OVA имеет н…) 这个方案还可以同时用于node端,使得前后台统一使用同一套locale映射文件。
-
整个前端包括node代码里用的最多的小工具就是lodash了,取代了更早的underscore,不过现在要被ramda取代了。 ramda的知名度不如lodash,但起点高,相当于lodash/fp。在前端函数式编程中使得代码非常简洁,也可以在命令式下直接使用,只需要多写一个参数而已,完胜lodash。 (lodash.com/) (ramdajs.com/)
-
另外一个比较重要的常用工具库就是moment了,不过间接使用的多些(日期控件),直接用主要是做日期格式化和计算等。 (momentjs.com/)
-
还有一类工具是数据校验工具,目前直接用的也不多,主要用了antd封装的form校验,不过其内部库的校验规则还是值得了解一下: (GitHub.com/один и/как…) (GitHub.com/skater Большой V85…) Последний — это инструмент проверки, используемый другим набором механизмов проверки формы в mobx, который можно использовать для замены antd.
3. Другое
3.1. WebSocket
(socket.io/), (GitHub.com/socketIO/so…) В настоящее время наиболее часто используемым является socket.io.
3.2. JWT
(jwt.io/), (GitHub.com/AU TH0/Прослушивание — ...) Во внешней аутентификации используется схема JWT в сочетании с коммуникационной библиотекой (fetch/axios) для передачи информации аутентификации через заголовок протокола HTTP и выполнения анализа полезной нагрузки на стороне клиента.
3.3. Service Worker
В настоящее время это пассивно используется через структуру create-react-app, которая относится к оптимизации производительности и тщательно не изучалась.
3.4. GraphQL
(facebook.github.io/relay/), (www.apollographql.com/) Я провел техническую проверку этих двух решений и чувствую, что еще не время запускать их в производство, поэтому я не знаю, как обстоят дела сейчас.
3.5. NodeJS
Роль NodeJS во фронтенд-разработке в основном заключается в передаче API и обработке конвертации форматов данных, а реальный бэкэнд-сервис по-прежнему находится на Java. Раньше NodeJS активно использовался, включая большое количество функций, таких как доступ к базе данных, запланированные задачи, отправка сообщений и аудио- и видеоинтерфейсы. Позже выяснилось, что эффект был не очень хорошим. Основная причина заключалась в том, что нехватка человеческих ресурсов и плохая гарантия качества кода. Если в будущем останется небольшое количество кода узла, подготовьтесь к использованию каркаса яйца Али:eggjs.org/
3.6 Архитектура микроинтерфейса
Является ли внешний микросервис, который в настоящее время находится в центре внимания исследований в этой области, все еще находится на стадии прототипа, готов к запуску на основе одного спа, это наиболее близкое к нашей фактической текущей программе можно найти: (single-spa.js.org/), (alili.tech/tags/микрофронтенды/) В связи с этим, если у вас есть хорошая информация или идеи, мы можем изучить их вместе.Это наиболее благоприятная техническая основа для унификации продуктовой линейки.