Фреймворк Flask, который мы рассматривали в самом начале курса, относится к классу так называемых микрофреймворков. Все они в той или иной степени являются клонами Ruby-фреймворка Sinatra, который задал моду на микрофреймворки.
Посмотрите насколько схожа структура кода:
Ruby:
# Ruby
require 'sinatra'
get '/frank-says' do
'Put this in your pipe & smoke it!'
end
Java:
// Java
import static spark.Spark.*;
public class HelloWorld {
public static void main(String[] args) {
get("/hello", (req, res) -> "Hello World");
}
}
JavaScript:
// JavaScript
import Express from 'express';
const app = new Express();
app.get('/', (req, res) => res.send('Hello World!'));
Python:
# Python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
Все они как братья-близнецы в основной фукнциональности: определении маршрутов и задании обработчиков для них. Кроме этой основы в микрофреймворках ничего нет. Все остальное придется ставить отдельно.
В противовес микрофреймворкам рассмотрим полноценные фреймворки — это большие пакеты с кодом, включающие в себя по умолчанию все, что только может потребоваться. Они обычно хорошо расширяются, а на GitHub лежит множество полезных дополнений. Большая история веб-фреймворков берет свое начало с 2004 года, когда появился первый релиз Ruby On Rails, фреймворка на языке Ruby. "Рельсы" намного обогнали свое время и задали тон на многие годы вперед. Многие современные веб-фреймворки — клоны Rails в той или иной степени.
В Ruby кроме Rails, можно сказать, больше ничего и нет — и это положительно сказывается на развитии, так как все бегут в одну сторону. Похожая ситуация в Python: роль «фреймворка по умолчанию» играет Django, хотя в разное время существовали и другие сравнимые с ним по мощности фреймворки (Zope, Plone, webPy и прочие).
Приведу коротко возможности, которыми обладают современные фреймворки:
- Генерация кода. Любой полноценный фреймворк содержит утилиту, позволяющую из командной строки генерировать код, скажем, тесты или миграции
- Встроенные механизмы для тестирования. Другими словами, фреймворк дает возможность начать писать тесты практически без необходимости что-либо дополнительное ставить или конфигурировать
- ORM. Либо своя, либо популярная для языка в целом
- Шаблонизатор и хелперы (вспомогательные функции) для повторяющихся задач вывода информации
- Абстракции для работы с письмами
- Инструменты для интернационализации и локализации, в идеале все остальные части фреймворка также интегрированы с i18n
- Механизмы, обеспечивающие безопасность, например, CQRS
- Кэширование
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.