Если видео недоступно для просмотра, попробуйте выключить блокировщик рекламы.

Фреймворк 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.
  • Кэширование.
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →