В этой статье в основном рассматриваются авторскиеnodeJS, подведенный итогом практического онлайн-кейсаnodeЧасто используемые технические моменты и лучшие практики в области экологии. Около месяца уйдет на выпуск 3-х статей, в основном основанных на реальных боевых действияхnodeJsПроект, эта статья является первой, в основном знакомит с тем, как использоватьnodeJsРазработайте приложение для карты. Этот проект очень полезен для тестирования и личных сервисных веб-сайтов, и вы можете расширять более мощные приложения на его основе. Проект кровати карты в этой статье в основном используетKoaДля развития, если вы не знакомы с ним, вы можете сначала изучить егоkoaОфициальный сайт, или посмотрите, что автор писал ранееnodeJSстатья.
ты получишь
Базовая архитектура приложений Node и процесс разработки приложений NodeJS
Использование Koa + Koa-Router + glob + Node для базового API
Введение в использование кросс-доменного решения Koa Cors и как сотрудничать с прежним кросс-доменным
Упаковать промежуточное ПО для загрузки файлов на основе @koa/multer
Используйте React для разработки интерфейсных приложений и базового использования xui.
текст
Прежде всего, приложение для создания изображений должно обеспечивать доступ к нашим ресурсам изображений в разных доменах, отсутствие междоменных проблем и поддержку приложений в разных доменах для загрузки изображений в основание для изображений, как показано на следующем рисунке. :
В сочетании с приведенным выше рисунком мы можем сначала проанализировать требования приложения:Выше приведен анализ требований к очень простому приложению для создания изображения. Мы построим архитектуру проекта и разработаем наше приложение на основе этого анализа. Прежде чем мы начнем, давайте взглянем на простую реализацию:
Доступ и загрузка изображений
Получить адрес ссылки на изображение
удалить изображениеЭтот интерфейс дисплея является лишь примером, мы можем разработать собственный интерфейс управления экраном изображения с помощью внешнего интерфейса. Представленный здесь общедоступный API можно вызывать под любым доменным именем, и проблем с междоменным взаимодействием не возникает.
Первое, что нужно сделать перед разработкой любого приложения, — это понять требования.После того, как требования прояснены, можно сделать выбор технологии.nodeJSСуществует множество технических решений для серверных приложений.nodejsОчень знакомо, могу использовать роднойnodejsдля разработки приложений; для малых и средних приложений мы можем напрямую использоватьKoaДля разработки его механизм промежуточного программного обеспечения и подключаемая концепция дизайна могут легко позволить нам разработать собственное промежуточное программное обеспечение; если это связано с более сложными бизнес-направлениями, мы можем использоватьegg.jsилиnest.jsприйти какnodeJSВыбор кадра изkoaЭкология для развития.
Далее, давайте взглянем на структуру каталогов нашего приложения с изображениями:
2. Использование Koa + Koa-Router + glob + Node.
Самый быстрый способ выучить koa — это посмотреть официальную документацию Официальная документация koa очень проста и подробная, поэтому, если вы не понимаете, вы можете сначала посмотреть официальный сайт.
1. Маршрутизация (интерфейс) на стороне сервера
В основном мы используем koa-router для маршрутизации на стороне сервера, и способ его использования также очень прост, код выглядит следующим образом:
Так как приложение изображения очень простое, мы будем использовать традиционный метод для его реализации здесь.Для MVC-архитектуры nodeJS, пожалуйста, обратитесь к статье об узле, которую я написал ранее.
2. Используйте glob для пакетного получения путей к изображениям
Здесь мы в основном используем путь к изображению для получения пути к изображению в пакетах.globЧтобы получить путем обхода каталога, этот метод можно использовать, когда объем данных изображения невелик, но как только объем данных изображения увеличивается экспоненциально, рекомендуется использовать базу данных для доступа, в конце концов, операции ввода-вывода все еще относительно дороги. , автор использует его здесь для удобства.globДля этого glob — это сторонняя библиотека, основанная на узле, которая поддерживает сопоставление с образцом для обхода файловых каталогов. Конкретное использование выглядит следующим образом:
Таким образом реализуется апи для получения картинок пачками.Разве это не очень просто?Нам нужно только зайти в этот интерфейс,чтобы получить список всех картинок кровати.При доступе к этому интерфейсу будут следующие данные быть возвращено:
3. Введение в использование кросс-доменного решения Koa Cors и как сотрудничать с прежним кросс-доменным
Из-за политики одинакового происхождения браузера любой протокол, имя домена и порт URL-адреса запроса, который отличается от адреса текущей страницы, считается междоменным. Существует множество способов достижения кросс-доменности, таких как кросс-доменность JSONP, обратный прокси-сервер nginx, модификация заголовка на стороне сервера, настройка document.domain, использование технологии postMessage и т. д., но текущий основной метод по-прежнему основан на cors. .
Для того, чтобы использовать услуги, предоставляемые кровати для разных доменов, нам нужно настроить кросс-домен. Здесь мы используем отзывчивое кросс-доменное решение, предоставляемое KOA2-CORS. На самом деле, принцип очень прост. Это Настройте информацию заголовка ответа HTTP-запроса, так что наш сервер поддерживает другой доступ IP. Его основное использование выглядит следующим образом:
С помощью приведенной выше конфигурации мы можем достичь базового междоменного доступа. Если мы хотим разрешить только некоторым конкретным интерфейсам достижение междоменного взаимодействия, мы можем установить белый список интерфейса или настроить белый список домена для достижения только определенных доменных имен. Эта ситуация больше подходит для ситуации, когда несколько подсистем внутри компании взаимодействуют друг с другом.
4. Упаковать промежуточное ПО для загрузки файлов на основе @koa/multer
Чтобы сервер мог принимать файлы, загруженные клиентом, нам также необходимо предоставить интерфейс загрузки файлов.Здесь автор принимает основной метод реализации экологии коа @koa/multer.@koa/multer.
1. Реализовать интерфейс загрузки файлов
Затем мы реализуем промежуточное ПО для загрузки файлов на его основе.Конкретная реализация выглядит следующим образом:
Из приведенного выше кода видно, что мы установили целевой каталог для загрузки файла в каталоге назначения и установили имя файла после загрузки через интерфейс имени файла.Ограничения — это ограничения на операции с файлами, которые можно настроить в соответствии с вашими собственные нужды.
Затем объедините koa-router для реализации интерфейса загрузки файлов:
Таким образом, мы можем загружать изображения на нашу кровать изображений через любой клиент.
2. Удалить реализацию файлового интерфейса
Мы используем нативные nodejs для реализации функции удаления файлов, и здесь будет использоваться модуль fs Конкретная реализация выглядит следующим образом:
Таким образом, мы можем удалить файлы на ложе изображений, нажав кнопку удаления в нашем клиентском приложении.Конечно, в этом приложении передачи изображений есть много деталей реализации интерфейса, которые здесь не представлены.Заинтересованные друзья могут их изучить.
5. Используйте React для разработки интерфейсных приложений и базового использования xui.
Далее мы будем использовать его для реализации нашего клиента карты кровати.Реализация и стиль дизайна клиента могут быть полностью определены вами, поэтому здесь только клиент, реализованный автором.Автор будет использовать ведро семейства реактивов и третье -партийная библиотека пользовательского интерфейса, разработанная мной.xui — облегченная библиотека компонентов пользовательского интерфейса на основе React.Чтобы понять, как разработать собственную библиотеку компонентов, вы можете обратиться к предыдущей статье автора.
Во-первых, мы просто разрабатываем интерфейс приложения с картой:
Что касается библиотеки http, мы можем использовать любую основную библиотеку, такую как axios, umi-request и т. д. Этот клиентский код был выпущен на github, вы можете клонировать его локально и запускать:
Я опубликую полный код кровати-картинки в публичном аккаунте Qutan, если вы хотите узнать больше.игра Н5, webpack,node,gulp,css3,javascript,nodeJS,визуализация данных холстаВ ожидании передовых знаний и реального боя, добро пожаловать в нашу техническую группу в общедоступном аккаунте «Интересный передний конец», чтобы вместе учиться и обсуждать, а также вместе исследовать границы переднего плана.