Как фронтенд-разработчик, помимо накопления javascript, css и html, нам также необходимо иметь некоторые знания о http, принципах браузерного рендеринга и даже некоторые знания о бэкенде, которые будут более полезны для наш карьерный рост.
Предыстория проекта
Поскольку я очень интересуюсь фронтендом и раньше имел дело с фронтендом, я обычно использую фронтенд-технологию, чтобы делать интересные вещи, включая игры H5, упаковку некоторых простых фреймворков, проектирование строительных лесов и др. Также в статье есть более подробное введение. В последнее время, поскольку я надеюсь обобщить технические приемы технологии Node Server, Vue и React Hooks, я также надеюсь, что смогу сделать несколько практических проектов и открыть их для улучшения, оптимизации и повторения вместе.
Итак, основываясь на этой идее, я подумал о CMS.Можем ли мы сделать такую систему и создать свой собственный веб-сайт блога с помощью некоторой конфигурации? Хотя есть много лучших систем блогов, которые можно использовать, например, hexo и т. д., вы также можете обратиться к этим превосходным исходным кодам с открытым исходным кодом, и вы много выиграете.
Технологическая архитектура
Для разработки я использую метод разделения фронтенда и бэкенда, конкретный технологический стек выглядит следующим образом:
- Сервер: NodeJs + Koa + Redis + Json-Schema
- Фон управления: Vue-cli3 + vue + vuex + typescript + axios + antd
- Первая страница: WP (скаффолдинг на основе webpack) + React + axios + antd
- Развертывание онлайн: PM2 + Nginx
- Управление кодом: git
Для реакции мы будем использовать последние основы реактивных хуков и научим их базовому использованию. Схема технической архитектуры:
Достижение результатов и ключевые технические моменты Введение
1.Строительство узлового сервера
Здесь мы используем Koa, относительно легкий серверный фреймворк от сообщества узлов, а затем серверное промежуточное ПО включает в себя:
- ramdaФункциональная библиотека, предоставляющая элегантные методы вызова для реализации бизнес-логики, адресаramda
- koa-staticОбеспечьте доступ к статическим ресурсам, конкретное использование будет подробно описано в деталях реализации проекта.
- koa-loggerКонсоль выводит лог запросов, что удобно для отладки при разработке
- koa-bodyОбработайте сообщение запроса, чтобы коа мог легко получить данные post/put
- koa-sessionОбработка операций, связанных с сеансом
- koa2-corsОбрабатывайте междоменные проблемы с помощью cors во время локальной совместной отладки.
- ioredisКлиент Redis на базе nodejs имеет отличную производительность и режим работы.
- jsonschemaПроверьте формат данных json, здесь я использую для инкапсуляции схемы в виде redis
- multerИспользуется для обработки загрузки файлов
- koa-routerИспользуется для написания маршрутизации на стороне сервера и API.
- bcryptЗашифровать пароль пользователя
Вышеупомянутое промежуточное программное обеспечение в основном используется нашим веб-сервером.Что касается того, как организовать и структурировать каждую часть, включая реализацию промежуточного программного обеспечения для проверки ошибок, я представлю их по одному позже, потому что я также консультировался с большим количеством информации в процессе. написания сервера.Если есть какие-либо недостатки или области, которые необходимо оптимизировать, добро пожаловать на общение.
Сервер примерно разделен на следующие уровни:
2. Система фонового управления
Система фонового управления в основном использует экологию, связанную с vue. Я буду использовать typescript и vuex для организации и управления кодом и статусом проекта. Основные модули включают модуль входа в систему, контроль разрешений, страницу конфигурации блога, страницу написания и модификации статьи, страницу статистики данных. и т. д. Сторонний пользовательский интерфейс принимает antd, эффект следующий:
Модуль входа:
Домашний модуль:
Страница предварительного просмотра: поддержка ПК и мобильного предварительного просмотра
Затем ключевым моментом является то, как поддерживать данные конфигурации и дизайн структуры данных конфигурации, потому что, учитывая, что функция предварительного просмотра и отредактированное состояние дизайна являются как синхронными, так и асинхронными, 80% нашего бизнеса выполняется в vuex. Wangeditor используется для редактирования статей, вы также можете использовать другие лучшие редакторы форматированного текста для достижения и мощных функций. Схема эффекта выглядит следующим образом:
В общем, система управления фоном, созданная Vue, в основном использует основные библиотеки vuex, vue-router, antd, axios и wangeditor. Typescript в основном используется для проверки типов, которая в основном включает определение типов интерфейса. Первая версия будет не требует дополнительных знаний, таких как дженерики, но потребует небольшого наследования интерфейса. Использование компонентов на странице и инкапсуляция пользовательских компонентов также будут подробно описаны позже.Если у вас есть лучшее мышление и опыт, вы можете больше общаться.
3. Реализация переднего плана CMS
Для реализации интерфейса я в основном использую экологию, связанную с реакцией, для ее реализации. Также можно использовать для этого vue. Основная причина в том, что я хочу просмотреть и в дальнейшем использовать хуки реакции для достижения некоторых интересных вещей. Используемые технологии: response-router-dom, antd, axios, react-hooks. Если вы хотите попробовать использовать redux, вы также можете использовать его. Позже я также подытожу соответствующие статьи и технические навыки.
Теоретически эта часть включает в себя рендеринг на стороне сервера, потому что важным моментом продуктов C-стороны является SEO, поэтому технические реализации, связанные с ssr, будут добавлены позже. В настоящее время каркасный экран используется для реализации технологии псевдо-SSR.
Затем мы используем create-react-app для скаффолдинга проекта, но мы обобщаем и разрабатываем скаффолдинг на основе вебпака.Если вам интересен вебпак, вы можете исследовать тайну вебпака вместе. Поскольку все настраивают страницу по-своему, здесь я показываю сайт блога, настроенный через нашу систему управления:
наконец
Поскольку в последнее время в свободное время я занимаюсь оптимизацией и настройкой кода проекта, настройкой сервера nginx и оптимизацией производительности сервера, я надеюсь, что заинтересованные друзья смогут вместе поучаствовать в создании более совершенной CMS. Позже я более подробно расскажу о конкретном процессе реализации и деталях системы и конфигурации, связанной с сервером, включая адрес проекта с открытым исходным кодом. Я сообщу вам до ноября. Добро пожаловать, присоединяйтесь к нам в общедоступном аккаунте «Интересно». Фронтенд" для обсуждения.
больше рекомендаций
- Краткое изложение основных знаний по теме "Продвинутое программирование на JavaScript"
- Используйте css3, чтобы реализовать фоновую анимацию потрясающего интервьюера (расширенный исходный код)
- Вспомните проблему межстраничной связи в старом проекте и фронтальную реализацию функции скачивания файлов
- 5 минут, чтобы научить вас писать фиктивный сервер данных с помощью nodeJS
- Реализация и применение бинарного дерева и бинарного дерева поиска в JavaScript
- Реализация небольшой игры на проигрывателе с помощью JavaScript и C3
- Научу вас использовать 200 строк кода, чтобы написать любовную мини-игру Dou Pin Le H5 (с исходным кодом)
- Изучение и обобщение решений для внешней интеграции на основе экологии react/vue.
- Как написать собственную библиотеку js менее чем из 200 строк кода)
- Картинка, чтобы научить вас быстро играть в vue-cli3
- 3 минуты, чтобы научить вас использовать нативный js для реализации компонента предварительного просмотра загрузки файлов с мониторингом прогресса
- Использование Angular8 и API карты Baidu для разработки «списка туров»
- js реализация базового алгоритма поиска и тест производительности при 1,7 миллионах данных
- Как сделать интерфейсный код в 60 раз быстрее
- Vue advanced advanced series — играйте с vue и vuex с машинописным текстом