View
48
Download
3
Category
Tags:
Preview:
DESCRIPTION
Артур Чеканов поведал о волшебном и таинственном мире микрофреймворков. Видео:https://www.youtube.com/watch?v=UiGuomQtFX0&feature=youtu.be Сайт: http://www.dataart.ru/ Facebook: https://www.facebook.com/DataArt.Enjoy Vkontakte: http://vk.com/dataart_enjoy Twitter: https://twitter.com/DataArt_Enjoy
Citation preview
ОБО МНЕ
• PYTHON РАЗРАБОТЧИК
• СЕРИЙНЫЙ ПРОГРАММИСТ
• СИЛЬНАЯ DJANGO-ЗАВИСИМОСТЬ
• БАЛУЮСЬ МИКРОФРЕЙМВОРКАМИ
DJANGOИЛИ КАК ПЕРЕЙТИ И ЭТУ ГРАНЬ
DJANGO
• ORM
• TEMPLATES
• FORMS
• AUTHORIZATION
• SECURITY
• ADMINISTRATION
• UNIT TESTING
• MANAGE COMMANDS
• DEV SERVER
• Configuration
• Sessions
• Cache
• Internalization
• Event dispatching
• Messaging
• And more
А ВСЕ ЛИ ЭТО НУЖНО?
• DJANGO БОЛЬШОЙ
• СОЗДАВАТЬ НОВЫЙ ПРОЕКТ УТОМИТЕЛЬНО
• МНОГО ФАЙЛОВ
• МНОГО НАСТРОЕК
• МНОГО МАЛОИЗУЧЕННОЙ ФУНКЦИОНАЛЬНОСТИ
• ИНТЕРНЕТЫ ГОВОРЯТ, ЧТО DJANGO МЕДЛЕННЫЙ
• ГОВОРЯТ, ЕСТЬ ORM ПОКРУЧЕ ЧЕМ У DJANGO
• ДА И ТЕМПЛЕЙТЫ ГОВОРЯТ МЕДЛЕННЫЕ
ЗНАЧИТ
• НАМ НУЖЕН ЛЕГКИЙ И БЫСТРЫЙ ФРЕЙМВОРК!
ИЛИ…
• - СЛУШАЙ ТУТ ПРОЕКТ ЕСТЬ, ЗАКАЗЧИК ХОЧЕТ ЧТОБЫ БЫЛО БЫСТРО И БЕЗ ДЖАНГО. СМОЖЕШЬ?
• - ЭММ... ДА?!
РЕШЕНО!НО ЧТО ВЫБРАТЬ?
ФРЕЙМВОРКИ
• FLASK
• ПЕРВОЕ, ЧТО ПРИШЛО НА УМ
• ПОЧТИ DJANGO
• BOTTLE
• НЕМНОГО ПОГУГЛИЛИ
• БЫСТРЫЙ, МАЛЕНЬКИЙ (ОДИН ФАЙЛИК)
• FALCON
• ЕЩЕ ПОГУГЛИЛИ
• САМЫЙ БЫСТРЫЙ, REST-ОРИЕНТИРОВАН
FLASK• САМ ПО СЕБЕ НЕ FULL STACK
• ЕСТЬ МНОГО РАСШИРЕНИЙ
• ORM
• ADMIN
• CACHE
• AUTHORIZATION
• INTERNALIZATION
• UNIT TESTING
• AND MORE
BOTTLE
• ФУНКЦИОНАЛЬНЫЙ СТИЛЬ
• ЛАКОНИЧНЫЙ
• ЕСТЬ ТЕМПЛЕЙТЫ
@app.route('/hello')def hello():
return 'Hello World!'
FALCON
• БЫСТРЫЙ
• CLASS-BASED, REST ARCHITECTURE
class HelloResource:def on_get(self, req, resp):
resp.status = falcon.HTTP_200resp.body = 'Hello World'
app = falcon.API()app.add_route('/things', HelloResource())
HELLO BRAVE NEW WORLD!А ЧТО ДАЛЬШЕ?
ПРОБЛЕМА #1. БАЗА
• НУЖНО РАБОТАТЬ С ДАННЫМИ
• ДАННЫЕ ХРАНЯТСЯ В БАЗЕ
• СЕЙЧАС ВОЗЬМЕМ ORMКУ
• СТОП! У НАС НЕТ ORM
ПРОБЛЕМА #1. БАЗА
• EXECUTE ЖЕ ЕСТЬ. ЕСЛИ ЕСТЬ RAW SQL, ORM НЕ НУЖЕН
• НЕТ ПРОВЕРКИ ТИПОВ
• РУЧНОЙ ПАРСИНГ ОТВЕТА
• SQL ИНЬЕКЦИИ
• НЕТ IN-MEMORY
• СВОЙ ORM
• ТРУДНО
• ЗАБАГОВАНО
• УНИКАЛЬНЫЕ КЛЕВЫЕ ФИЧИ
• ЗАБАГОВАНО
• SQL ALCHEMY
ПРОБЛЕМА #2. SQL ALCHEMY
• ЭТО НЕ ПОХОЖЕ НА DJANGO ORM
• ОНО НЕ РАБОТАЕТ СРАЗУ
• ДОКУМЕНТАЦИЯ ГОВОРИТ CREATE_ENGINE(CONNECTION_STRING)
• И ПЛЮС ЕЩЕ 20 ПАРАМЕТРОВ
• НЕ ИНТУИТИВНО ПОНЯТНЫЙ МЕХАНИЗМ СЕССИЙ
• EXPIRE ON COMMIT
• EXPUNGE ОТ СЕССИИ
• КЕШ СЕССИИ
ПРОБЛЕМА #2. SQL ALCHEMY
• SQL ALCHEMY ДАЕТ БОЛЬШЕ КОНТРОЛЯ
• МНОГИЕ ВЕЩИ КАЖУТСЯ ЛОГИЧНЫМИ
• SESSION.QUERY(USER).FILTER(USER.NAME == ‘DATAART’)
• ВЫЗОВ ФУНКЦИЙ ПРОЩЕ
ПРОБЛЕМА #3. МИГРАЦИИ
• НЕТ SOUTH
• ЕСТЬ АЛЬТЕРНАТИВЫ
• SQL ФАЙЛЫ
• LIQUIBASE, FLYWAY
• ALEMBIC
ПРОБЛЕМА #4. АДМИНКА
• АДМИНКА ЕСТЬ ТОЛЬКО У FLASK
• ЕСЛИ НЕТ FLASK, ТО ЕСТЬ PGADMIN, PSQL
РАЗНОЕ
• ТЕМПЛЕЙТЫ
• JINJA2
• ПОПУЛЯРНОЕ РЕШЕНИЕ ДАЖЕ ДЛЯ DJANGO
• BOTTLE TEMPLATES
• JSON.DUMPS
• DEV SERVER
• У BOTTLE СВОЙ
• У FLASK WERKZEUG
• ДЛЯ FALCON WERKZEUG НУЖНО ПРИКРУТИТЬ
• UNIT TESTS
• NOSE
• WERKZEUG TEST CLIENT
И ЕЩЕ КУЧА МЕЛОЧЕЙ
• МНОГО МНОГО МЕЛКИХ ВЕЩЕЙ КОТОРЫХ НЕТ ИЗ КОРОБКИ
• НО ИХ НАВЕРНЯКА УЖЕ КТО-ТО НАПИСАЛ
• КАК ОПРЕДЕЛИТЬ КОГДА СТОИТ ИСПОЛЬЗОВАТЬ СТОРОННЮЮ БИБЛИОТЕКУ
• А КОГДА ПИСАТЬ СВОЮ?
А КОГДА ВООБЩЕ ИСПОЛЬЗОВАТЬ МИКРОФРЕЙМВОРКИ
• НУЖНО МИНИМИЗИРОВАТЬ ЗАВИСИМОСТЬ ОТ СТОРОННИХ БИБЛИОТЕК
• ОСОБЕННО НЕ СТАБИЛЬНЫХ
• НУЖНО МИНИМИЗИРОВАТЬ КОЛИЧЕСТВО СВОИХ ВЕЛОСИПЕДОВ
КАК?
• ПЕРЕЛОЖИТЬ ЧАСТЬ ЗАБОТ НА ФРОНТ-ЕНД
• JAVASCRIPT
• SINGLE PAGE
• AJAX
• ОТДАВАТЬ ТОЛЬКО JSON
• НЕ ЗАБЫВАТЬ ПРО СОВРЕМЕННЫЙ ФРОНТ-ЕНД
• BACKBONE.JS, ANGULAR.JS
• LESS
• GRUNT
Recommended