Рубрики
Без рубрики

Стех

В Jetbridge мы наслаждаемся разработкой программных приложений с нашими клиентами, мы можем гордиться тем, что … Tagged с WebDev, TypeScript, Python, React.

В Jetbridge Мы наслаждаемся разработкой программных приложений с нашими клиентами, которыми мы можем гордиться, одновременно расширяя наши области знаний и знаний. Поскольку мы часто начинаем с новых проектов, мы стандартизировали гармоничный и выразительный набор инструментов, библиотек и рамок, чтобы помочь нам быстро снять новые приложения и обеспечить как можно больше значения с минимальным повторением.

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

Методология

Наша теория разработки программного обеспечения такова: не переполнять вещи.

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

Существует тенденция, которую многие инженеры должны делать программное обеспечение более сложным, чем должно быть. Использовать нестандартные инструменты, когда существуют широко доступные и известные инструменты, которые уже могут выполнять работу. Чтобы попытаться обустроить какой -то аккуратный кусок технологий, о котором кто -то читает в Hacker News в чем -то, для чего это действительно не подходит. Зависеть от дополнительных внешних служб, когда уже существуют существующие услуги, которые могут быть расширены для выполнения желаемой задачи. Использование чего-то слишком низкого уровня, когда больше абстракции действительно упростит вещи, или использование чего-то слишком причудливого и сложного, когда простой инструмент или язык системы или язык будет более целесообразным.

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

Внешний интерфейс

К тому времени, когда я пишу все эти фреймворки и библиотеки, которые мы используем, вероятно, были заменены классными новыми джемами HIP JS, и вы будете насмехаться над нашим немодным выбором. Тем не менее, это то, что работает хорошо для нас сегодня:

  • React: У Vue может быть больше звезд на GitHub, но React по -прежнему является отраслевым стандартом и используется и активно поддерживается Facebook. Написание приложений с помощью крючков React действительно ощущается, что мы приближаемся к функциональному программированию, добавляя новый уровень композиции и повторного использования кода, который был неуклюже достигнут с помощью HOCS.
  • Материал-UI Для React-это инструментарий, который имеет практически все виды виджета и утилиты, которые вам могут понадобиться, мощные варианты тематического и стиля, очень плавно интегрируют CSS-JS и выглядят солидно из коробки. По сути, это реализация парадигмов пользовательского интерфейса, обнародованных Google, поэтому работа в рамках его ограничений и визуального языка дает вам хорошую основу.
  • Create-React-App/React-Scripts: Это действительно делает все, что вам нужно, и настраивает ваше новое приложение React с помощью Sane Default. Вам никогда не нужно снова общаться с WebPack или HMR. У нас есть Расширенный CRA/R-S, чтобы выплюнуть новые фронтальные проекты с дополнительными вариантами Eslint и более красивыми и сборниками рассказов.
  • Сборник рассказов : Мы предпочитаем создавать библиотеку компонентов малых и более крупных компонентов, реализованных в изоляции с использованием макетных данных, а не всегда кодировать и тестировать макет и конструкцию внутри полного приложения. Это позволяет разработчикам пользовательского интерфейса работать без блокировки по завершению конечных точек бэкэнд, помогает обеспечить соблюдение концепции многократных и автономных компонентов и позволяет легко просмотреть различные состояния интерфейса.
  • TypeScript: Каждый использует TypeScript сейчас, потому что он хорошо, и вы тоже должны. Это требует некоторого привыкания, и учиться, как правильно его использовать с помощью React, а Redux требует небольшого количества обучения, но оно того стоит. Помните: вам никогда не нужно использовать любой Анкет И когда вы думаете, что вам нужно использовать любой – Возможно, вам просто нужно добавить аргумент типа (общий).
  • Eslint: Eslint отлично работает с TypeScript прямо сейчас! Не забудьте установить расширяется: ['' Plagin:@TypeScript-eslint/Рекомендуется ', «Плагин: React/Рекомендуется», «React-App»]
  • Красивее: Установите свой редактор для запуска Prettier на вашем коде, когда вы нажимаете сохранение. Мало того, что он обеспечивает постоянный стиль, но также означает, что вы можете быть намного более слабыми в форматировании вашего кода. Меньше набора печати, но лучше форматирования.
  • Redux: Redux хорош … Наверное. Вам нужно какое -то центральное место для хранения информации о вашей аутентификации пользователя и тому подобное, и Redux-Persist очень удобно. В духе, хотя и упростите все, действительно спросите себя, нужен ли вам Redux для того, что вы делаете. Может быть, вы это делаете, или, может быть, вы можете просто использовать крючок или состояние вместо этого. Конечно, может быть, сначала вы думаете, что хотите кэшировать некоторый ответ API в Redux, но если вы начнете добавлять фильтрацию на стороне сервера, поиск или сортировку, то это действительно лучше, как простой запрос API внутри вашего компонента.
  • Асинхрон/жду: Прекратите использовать API обещания! Поймайте исключения в ваших компонентах пользовательского интерфейса, где вы можете представить ошибку пользователю, а не в вашем уровне API.
  • Axios : HTTP -клиент по выбору. Мы используем JWT для аутентификации и рекомендуем наш Axios-JWT Interceptor Module За заботу о хранении токенов, заголовках авторизации и обновление.

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

Бэкэнд

Наши сервисные услуги всегда разработаны вокруг 12-факторные принципы приложения и всегда создан, чтобы быть облачным и при необходимости, Серверный Анкет

Большинство проектов включают настройку вашего типичного API REST, общение с другими услугами и выполнение CRUD на DB PostgreSQL. Наш стек-это:

  • Python 3.7. Python является чистым, читаемым, имеет впечатляюще массивный репозиторий модулей сообщества на PYPI, Active Core Development и довольно хороший баланс динамических функций высокого уровня, не становясь слишком тупыми или отвлекающими.
  • Тип аннотации и тип сжима с mypy Анкет У Python есть аннотации типа, но они очень ограничены, не очень хорошо интегрированы и обычно не очень полезны для ловли ошибок. Я надеюсь, что ситуация улучшится, потому что многие ошибки должны быть обнаружены во время выполнения в Python по сравнению с такими языками, как TypeScript или Go. На мой взгляд, это самый большой недостаток для Python, но мы делаем все возможное с mypy Анкет
  • Колба , легкая структура веб -приложений. Колба очень хорошо подходит для создания API REST, обеспечивая достаточную структуру для вашего приложения для обработки WSGI, конфигурации, подключений к базе данных, многоразовых обработчиков API, отслеживания/отладки (с рентгеновским Ray AWS ), ведение журнала, обработка исключений, Аутентификация и гибкая маршрутизация URL. Мы не опираемся на колбу, кроме того, что обеспечиваем клей, чтобы удерживать все вместе в последовательном приложении, не навязывая слишком много накладных расходов или шаблонов.
  • SQLALCHEMY для декларативного Орма. Имеет хорошие функции для обработки функций диалекта Postgres, таких как Upsert и Jsonb Анкет Способность составлять микшины для классов моделей и запросов очень мощная, и мы используем все больше и больше для таких функций, как мягкое удаление. Полиморфные подтипы являются одной из наиболее интересных функций SQLalchemy, позволяющих определить столбец дискриминатора типа и создавать подходящие подклассы модели на основе его значения.
  • Тестирование: Субтранзакции обертывают каждый тест , pytest-factoryboy Для создания приборов из наших модельных классов для Pytest и для создания макетных данных для среды разработки. Circleci. Pytest Matchures Анкет Flask Test Client .
  • Flask-Rest-API с Зефир Помогает кратко определить конечные точки отдыха и сериализацию и проверку с минимумом шаблона, используя тяжелые декораторы для декларативного ощущения при необходимости. В качестве бонуса он также генерирует документы SpectAPI и поставляется с Swagger-UI для автоматического предоставления документации каждой конечной точки API и ее аргументов и форм ответа без каких-либо дополнительных усилий.
  • В настоящее время мы развиваемся Flask-crud Для дальнейшего уменьшения шаблона в общих случаях для API CRUD и обязательства строгих проверок управления доступом модели данных.

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

Мы создали стартовый комплект, который связывает все наши бэкэнд в мощном шаблоне, чтобы начать новые проекты без серверов, называемые SLS-Flask Анкет Если вы думаете о создании API REST, поддерживаемого базой данных в Python, попробуйте! Вы получаете большую мощность и гибкость в небольшом пакете. В нем нет ничего особенного или экзотического, но мы считаем, что основание, которую он обеспечивает, составляет чрезвычайно упорядоченный и современный инструментарий для развития.

Все наши инструменты и шаблоны являются открытым исходным кодом, и мы часто вкладываем отчеты об ошибках и фиксируем вверх по течению к модулям, которые используем. Мы призываем вас попробовать наш стек или сообщить нам, что вы используете, если вы довольны тем, что делаете. Поделиться и наслаждаться !

Оригинал: “https://dev.to/cybermischa/web-application-software-stack-2019-edition-3c30”