Мой проект с открытым исходным кодом Github, от 0 до 20000 звезд!

Spring Boot

Резюме

Недавно мой проект с открытым исходным кодом на GithubmallОн превысил 20000 звезд.Этот проект был разработан в марте 2018. На выпуск первой версии ушло 9 месяцев и поддерживается до сих пор. Оглядываясь назад, у меня до сих пор масса эмоций.Сейчас я расскажу обо всем процессе разработки моего проекта.

История развития проекта

зачем писать этот проект

В марте 2018 года я зависал на Github в поисках проекта, сочетающего бизнес и технологии, но обнаружил, что многие проекты основаны на технологиях, а бизнес относительно прост. Поэтому у меня возникла идея написать проект, который сочетает в себе бизнес и технологии.Бизнес выбрал электронную коммерцию, потому что это бизнес-сценарий, который легче понять всем, и есть много зрелых систем, которые можно использовать. для справки. Технология выбрала семейство корзин SpringBoot, потому что SpringBoot был относительно популярен в то время, и в то же время мне тоже хотелось учиться и практиковаться.

Уточнить требования к проекту

Разделите модули проекта

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

Схема бизнес-архитектуры проекта:

Используйте инструменты для организации требований

В то время для сортировки требований использовался инструмент картирования разума под названием MindMaster.Сначала были разделены функциональные модули, затем были разделены функции в каждом модуле и, наконец, были отмечены поля данных, которые должны обрабатываться каждой функцией. Сформирован набор ментальных карт с четкими требованиями, с ним последующее проектирование БД будет намного проще!

Разработанную в то время ментальную карту можно посмотреть здесь:обзор структуры таблицы базы данных торгового центра

дизайн таблицы базы данных

После того, как у вас есть интеллект-карта для сортировки вышеуказанных требований, вы можете приступить к проектированию базы данных. Когда вы впервые проектируете базу данных, вам не нужно совершенствовать дизайн базы данных, потому что, когда вы будете использовать ее в кодировании, вам всегда придется ее изменять, вам нужно только выполнить требования к хранению данных текущей функции. Говоря о внешних ключах базы данных, рекомендуется создавать логические ассоциации между таблицами базы данных и не устанавливать внешние ключи. Например, таблица товаров в моем проекте связана с более чем дюжиной таблиц.Если я использую внешние ключи, когда таблица товаров заблокирована, таблицы, связанные с другими внешними ключами, также будут заблокированы.Все базы данных будут заблокированы. Поговорим о том, нужно ли добавлять индекс в начале проектирования Лично я предлагаю его пока не добавлять, а добавлять при кодировании. Я лично рекомендую, чтобы таблицы базы данных проектировались с помощью инструментов проектирования, таких как PowerDesigner, которые эффективны и могут сохранять зависимости между таблицами.

Разработанную в то время базу данных можно посмотреть здесь:обзор структуры таблицы базы данных торгового центра

Разработка бэкенд-функции

Технический отбор

Технологии инструкция Официальный сайт
Spring Boot Контейнер + MVC-фреймворк spring.IO/проекты/билеты…
Spring Security Платформа аутентификации и авторизации spring.IO/проекты/билеты…
MyBatis структура ORM woohoo. не добавил elevate.org/ не добавил elevate-3/ в…
MyBatisGenerator Генерация кода уровня данных Ууууу. Не поставил boost.org/generator/i…
PageHelper Плагин физического пейджинга MyBatis git.OSCHINA.net/free/мой тиран…
Swagger-UI инструмент для производства документов GitHub.com/swagger-API…
Hibernator-Validator Платформа проверки hibernate.org/validator/
Elasticsearch поисковый движок GitHub.com/эластик/голодный…
RabbitMq очередь сообщений www.rabbitmq.com/
Redis Распределенный кеш redis.io/
MongoDb База данных NoSql www.mongodb.com/
Docker Механизм контейнера приложений www.docker.com/
Druid пул соединений с базой данных GitHub.com/alibaba/import…
OSS хранилище объектов GitHub.com/Alibaba Cloud/Alibaba Cloud…
JWT Поддержка входа в JWT github.com/jwtk/jjwt
LogStash сбор журналов GitHub.com/logs он/слегка…
Lombok Упрощенный инструмент инкапсуляции объектов GitHub.com/R как дочерний элемент ITS...

Личный опыт изучения back-end технологий

Конечно, я не знал этой кучи технологий, когда впервые разрабатывал этот проект.Многие из них были изучены в процессе разработки.Я также прочитал много материалов в то время.Материалы, которые я прочитал, следующие:Очки знаний, необходимые для обучения в торговом центре (рекомендуемые материалы). Если вы систематически изучаете какую-то технологию, рекомендую прочитать книгу, потому что система знаний в книге относительно всеобъемлющая, и в ней почти нет ошибок. Однако у чтения книг есть и недостаток: некоторые технические версии в некоторых книгах относительно устарели, но не беспокойтесь слишком сильно, потому что ядро ​​популярной технологии не изменится слишком сильно из-за итерации версии, и старая версия используется в новой версии. , подавляющее большинство все еще применяется.

Разработка фронтенд-функции

Технический отбор

Технологии инструкция Официальный сайт
Vue внешний фреймворк vuejs.org/
Vue-router структура маршрутизации router.vuejs.org/
Vuex Глобальная структура управления состоянием vuex.vuejs.org/
Element Интерфейсный фреймворк пользовательского интерфейса element.eleme.io/
Axios Внешний HTTP-фреймворк github.com/axios/axios
v-charts Платформа построения диаграмм на основе Echarts v-charts.js.org/
Js-cookie инструмент управления файлами cookie GitHub.com/just-cookie/просто…
nprogress индикатор выполнения GitHub.com/Если он злоумышленник/Даже…

Личный опыт изучения фронтенд-технологий

Говоря о фронтенд-технологиях, многие бэкэнд-разработчики не очень хорошо в них разбираются. На самом деле, не так сложно изучить фронтенд-технологию, потому что текущая фронтенд-технология развилась очень зрело, например, Vue, React, Angular — относительно зрелые фронтенд-технологии. Когда вы будете писать много фронтенда, вы обнаружите, что написание фронтенда — это не что иное, как использование фреймворков и написание логики фронтенда на js, что мало чем отличается от логики написания бэкенда. Позвольте мне рассказать о том, как я изучал интерфейс.В первую очередь я убедился, что хочу изучать Vue.На чтение официальной документации Vue у меня ушло около недели.В конце концов, это фреймворк с открытым исходным кодом. для китайцев, и документация по-прежнему очень дружелюбна к китайцам. После этого я выбрал скаффолдинг, vue-element-admin, а потом посмотрел используемые в нем технологии.По этим технологиям я заходил на официальный сайт читать документацию, и в основном я видел документацию Element. После этого я взял эти леса и начал писать свой проект для реального боя. Изучать программирование нехорошо, просто глядя на эффект, нужно больше практиковаться и применять то, что вы узнали!

Разрабатывать мобильные прототипы

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

Мобильный демонстрационный адрес:http://39.98.190.128/mall-app/mainpage.html

Развертывание проекта

Сначала в проекте была только схема развертывания Windows для среды разработки, а позже была добавлена ​​схема развертывания linux, в которой использовалось контейнерное развертывание докеров, а затем была добавлена ​​более удобная схема развертывания docker-compose.

Конкретные планы таковы:

полный процесс

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

Обновление структуры проекта

В марте 2019 года было проведено обновление фреймворка, в результате которого SpringBoot был обновлен с версии 1.5.14 до 2.1.3, а Elasticsearch — с версии 2.3.6 до 6.2.2.

Улучшить проектную документацию

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

Адрес проектной документации:GitHub.com/macro-positive/…

Извлечь скелет проекта

Для удобства друзей, которым нужно только использовать стек технологий проекта торгового центра для разработки своих собственных бизнес-систем, я извлек стек технологий, используемый в проекте торгового центра, чтобы создать скелет проекта, и оптимизировал бизнес, оставив только основные 12 Таблицы удобны для разработки и использования, а бизнес-логику можно свободно настраивать.

адрес проекта:GitHub.com/macro-positive/…

История роста звезды проекта

Мой проект растет с декабря 2018. На самом деле, пока вы пишете проект с открытым исходным кодом с душой, кто-то всегда будет обращать внимание.Прикрепите звездную диаграмму роста проекта торгового центра.

адрес проекта

Адрес проекта торгового центра: г.GitHub.com/macro-positive/…

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.

公众号图片