Основы разработки веб-приложений

Основы разработки веб-приложений
Автор: Пьюривал Сэмми
Год: 2015
ISBN: 978-5-496-01226-3
Страниц: 272
Язык: Русский
Формат: PDF
Размер: 10 Мб

Download

Благодаря этой книге вы усвоите основы создания веб-приложений, построив простое приложение с нуля с помощью HTML, JavaScript и других свободно предоставляемых инструментов. Это практическое руководство на реальных примерах обучает неопытных веб-разработчиков тому, как создавать пользовательский интерфейс, строить серверную часть, организовывать связь клиента и сервера, а также применять облачные сервисы для развертывания приложения.
Каждая глава содержит практические задачи, полноценные примеры, а также ментальные модели процесса разработки. Эта книга поможет вам сделать первые шаги в создании веб-приложений, обеспечив глубокие знания по теме.

+

Предисловие

В начале 2008 года, через шесть лет после окончания школы и работы учителем на полставки, мне очень хотелось стать преподавателем компьютерных дисциплин на полный день. Очень быстро выяснилось, что место преподавателя найти нелегко,
а получение хорошей работы зависит от удачи в большей степени, чем от чего-либо еще. Ну что ж, я поступил так, как поступает любой уважающий себя академик, столкнувшись с удручающим положением на академическом рынке труда, а именно: решил повысить свою конкурентоспособность с помощью изучения разработки веб-приложений.

Это, конечно, звучит странно. Кроме всего прочего, к тому моменту я уже около девяти лет изучал компьютерные дисциплины и, более того, свыше шести лет учил студентов разрабатывать программное обеспечение (ПО). Разве я не должен был хорошо знать, как создавать веб-приложения? Похоже, что нет, так как существует определенный разрыв между практической ежедневной работой по разработке ПО и программированием как учебной дисциплиной, изучаемой в колледжах и университетах. Фактически мои знания по веб-разработке были ограничены HTML и в некоторой степени CSS, который я в то время изучал самостоятельно.

К счастью, у меня было несколько друзей, которые активно работали в компьютерном мире, и большинство из них в то время обсуждало (относительно) новый фреймворк — структура программной системы, а также специальное ПО, с помощью которого можно разрабатывать и объединять компоненты программного проекта. — Примеч. пер., который назывался Ruby on Rails. Мне показалось, что это весьма подходящая область для развития, так что я купил несколько книг по этой теме и принялся читать обучающие материалы в Интернете, чтобы побыстрее освоиться.

А через несколько месяцев, пытаясь хоть чего-нибудь добиться на практике, я чуть было не сдался.

Почему? Да потому, что большинство книг и учебных статей начиналось с предположения, что я уже умею создавать веб-приложения и делаю это на протяжении нескольких лет! А между тем, несмотря на мой солидный теоретический багаж по
компьютерному программированию, оказалось, что все эти материалы слишком лаконичны и очень сложны для понимания. Например, выяснилось, что можно пройти несколько классов по компьютерным дисциплинам, ни разу не столкнувшись с шаблоном проектирования Model — View — Controller, а в некоторых книгах уже в первой главе предполагается, что вы прекрасно с ним знакомы.

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

Через несколько лет занятий тем и другим мне предложили вести мой первый класс по разработке веб-приложений в Университете Северной Каролины в Эшвилле. Изначально я планировал начать с Ruby on Rails, но, взявшись за новейшие книги и обучающие материалы по ней, выяснил, что они никак не улучшились за все эти годы. Нет, они были хорошим подспорьем для людей, которые отлично знают основы, но для студентов, которые у меня учились, они определенно не годились.

Грустно, но неудивительно — академические книги по веб-разработке оказались еще хуже. Большинство из них содержали устаревшие концепции и не раскрывали важнейших тем, нужных для понимания платформ наподобие Ruby on Rails. Мне даже случилось выступить рецензентом одной книги, переизданной в 2011 году и до сих пор описывающей верстку с помощью таблиц и тег <font>!

Что ж, у меня не было другого выхода, кроме как создавать свой курс с нуля и писать все материалы самостоятельно. В то время я проводил небольшую консультационную работу по Node.js (адаптация JavaScript для стороны сервера) и подумал, что было бы интересно попробовать создать курс, обучающий одному и тому же языку и для клиента, и для сервера. Более того, я поставил себе цель дать моим студентам достаточно знаний для самостоятельного изучения Ruby on Rails, если они решат продолжить.

Эта книга содержит большую часть материалов, созданных мной во время преподавания этого курса в Университете Северной Каролины в Эшвилле. В ней описано, как создать простое веб-приложение на основе базы данных с нуля, используя JavaScript. Сюда включены описание простейшего рабочего процесса (с использованием текстового редактора и системы контроля версий), основы технологий клиентской стороны (HTML, CSS, jQuery, Javascript), основы серверных технологий (Node.js, HTTP, базы данных), основы облачного развертывания (Cloud Foundry) и несколько примеров правильной практики написания кода (функции, MVC, DRY). Во время нашего пути мы исследуем фундаментальные основы языка JavaScript, научимся программировать, используя объекты и массивы, а также рассмотрим ментальные модели, которые соответствуют этому типу разработки ПО.

Выбор технологии

Для контроля версийя выбрал Git, потому что… ну хорошо, это Git, и он прекрасен. Кроме того, он дал моим студентам возможность изучить GitHub, который набирает все большую популярность. Хотя я не рассматриваю GitHub в этой книге, разобраться с ним совсем несложно, как только вы освоитесь с Git.

Я решил использовать для клиента jQuery, потому что он все еще остается популярным и мне очень нравится с ним работать. Я сам не использую никаких других фреймворков для клиента, хотя и упоминаю Twitter Bootstrap и Zurb Foundation в главе 3. Я решил не касаться современных клиентских фреймворков вроде Backbone или Ember, потому что считаю их слишком сложными для начинающих. А вот с Rails вы легко сможете начать работать после прочтения этой книги.

Для серверной стороны я выбрал Express, так как он (относительно) упрощенный и не догматический. Я решил также не рассматривать шаблоны клиентской и серверной стороны, поскольку считаю, что вначале важно научиться делать это вручную.

Я не рассматриваю и реляционные базы данных, так как вряд ли возможно полноценно раскрыть эту тему в течение времени, выделенного на нее в рамках курса. Реляционным базам данных я предпочел MongoDB из-за того, что они широко используются в сообществе Node.js и применяются JavaScript в качестве языка запросов. Кроме того, мне очень нравится Redis, поэтому его мы также изучим.

Я выбрал Cloud Foundry в качестве платформы для развертывания, потому что, как я выяснил (вместе с Heroku и Nodejitsu), она была одной из трех, предлагающих бесплатное использование и не требующих кредитной карты для настройки внешних сервисов. В любом случае различия между платформами незначительны и переход с одной на другую не потребует больших усилий.

Поможет ли вам эта книга

Эта книга не предназначена для того, чтобы сделать вас «ниндзя», или «суперзвездой», или даже хорошим компьютерным программистом. Она не подготовит вас к немедленному трудоустройству, и я даже не обещаю показать вам «правильный  путь» в работе.

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

Вы извлечете больше всего пользы из этой книги, если у вас есть небольшой опыт программирования и нет никакого опыта в веб-разработке. Как минимум вы должны быть знакомы с основными программными конструкциями, такими как схемы if-else, циклы, переменные и типы данных. Впрочем, я не жду, что у вас есть какой-то опыт в объектно-ориентированном программировании или каком-то конкретном языке программмирования. Вы можете получить необходимые знания, изучив материалы в Khan Academy или Code Academy или пройдя курс программирования в ближайшем колледже.

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