Хотя модуль http
и даёт нам возможность писать веб-приложения, этот
способ нельзя назвать удобным. Сильно помешает отсутствие роутинга и
удобных механизмов расширения функциональности. И это мы ещё не копнули
вглубь.
Разработка веб-приложений это, в основном, стандартный процесс с понятным набором "хотелок", многие из которых будут пройдены в рамках данного курса. Центральной частью проекта курса является микрофреймворк Express.
import Express from 'express';
const app = new Express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
Удивительное дело: курсы, которые вы прошли до этого, гораздо сложнее
для понимания и освоения, чем курсы по конкретным инструментам, таким как Express.
И, скорее всего, тенденция будет продолжаться. Связано это с тем, что умение
программировать требует от вас хорошо развитого computational thinking
(вычислительного мышления), включающего в себя много пунктов, помимо абстрактного
и логического мышления. А работа с конкретным инструментарием больше похожа на
монотонный труд в стиле "делай раз, делай два". Вся сложность в инструментах, обычно,
сосредоточена в количестве используемых концепций. Поэтому для новичков документация
по Express может показаться нереально сложной без шансов на понимание. Как вы
скоро убедитесь, это дело наживное, и к концу курса вы сможете уверенно ориентироваться
в возможностях фреймворка и сможете создавать свои приложения уже совсем по-взрослому.
Фреймворк
Программная платформа, определяющая способ структурирования кода приложения
Фреймворк противопоставляют понятию библиотека. С библиотеками мы уже хорошо знакомы и писали их не раз. В программировании библиотека это код, который может быть использован в программном продукте для выполнения различных подзадач, важно, что при этом библиотека не влияет на архитектуру приложения и не накладывает на неё ограничений.
Фреймворк это, как ни странно, тоже код, который диктует правила построения архитектуры приложения, задавая на начальном этапе разработки поведение по умолчанию — "каркас", который нужно будет расширять и изменять согласно указанным требованиям.
Может показаться, что фреймворк — это штука, которая только мешает, но это не так. Большинство приложений укладывается в некоторые стандартные рамки, соблюдая которые можно автоматизировать очень много задач и писать намного меньше кода. А ещё это возможность создавать и переиспользовать библиотеки, ориентированные на работу с фреймворками. В современном мире популярный каркас идет в нагрузку с сотнями полезных расширений, которые за вас делают всё, что только можно вообразить, за пивом только не ходят.
Микрофреймворк
Устоявшееся название для минималистичных веб-фреймворков.
- Представляет из себя набор
middlewares
(описываются позже) - Определяет прямую связь между маршрутом и обработчиком
- Не определяет файловую структуру
- Содержит минимальное количество встроенных возможностей
// HTTP Verb + Route + Handler.
app.get('/', (req, res) => {
res.send('Hello World!');
});
Express как раз относится к классу микрофреймворков. Очень популярное направление,
родоначальником которого считается Sinatra
, Ruby-микрофреймворк, появившийся в далеком
2007 году. С тех пор в каждом языке появились десятки подобных решений, среди которых
есть минимум один-два очень популярных. Получается, что зная Express вам будет
несложно начать работать с подобным микрофреймворком на любом другом языке.
Проект
Поскольку мы метим в веб-разработчики, то будет грехом не написать свой блог :) В процессе создания блога мы рассмотрим следующие темы:
- Express JS (Middlewares)
- Роутинг
- Логгирование
- Функциональное тестирование
- Шаблонизация
- REST
- Session
- Twitter Bootstrap
- Авторизация/Аутентификация
- Flash
Веб-доступ
В этом курсе, почти в каждом задании будет открыт веб-доступ, через который можно и нужно
смотреть на то, что вы сделали. Веб-сервер по умолчанию не запущен. Для запуска наберите
make start
в терминале, убедитесь, что сервер нормально запустился, и пробуйте пользоваться.
Это справедливо для любого задания курса, в котором есть веб-доступ.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты