Резюме
Недавно мой проект с открытым исходным кодом на 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.
Конкретные планы таковы:
- Развертывание торгового центра в среде Windows
- Развертывание торгового центра в среде Linux (на основе контейнера Docker)
- Развертывание торгового центра в среде 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/…
публика
проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.