Сегодня речь пойдет о книге Сэмми Пьюривал Основы разработки веб-приложений» (ссылка на сайт издательства «Питер»), на английском она имеет название «Learning Web App Development »(ссылка на amazon.com). Тот счастливый случай, когда книга на русском стоит дешевле чем в оригинале 300 рублей против почти 20$ за электронную версию.
Однако, книги мы берем и читаем обычно не из-за того что они дешево или дорого стоят, а из-за того что они могут принести нам хоть какую-то пользу. Книга позиционируется как пособие для новичков, которые не имели дела с разработкой. В ней поэтапно описывается весь процесс создания приложений, плюс задания. Используются технологии как HTML, CSS, JavaScript, Express, Redis, Sublime text 3, git, MongoDB, Vagrant, Oracle VM VirtualBox, cloud foundry, а так же используются API twitter. Все это умещается на 272 листах, вместе с обложкой. Впечатляющий результат. Ниже можно почитать обо всем более подробно.
Автор на момент написания уже проработал около 10 лет преподавателем компьютерных дисциплин и фрилансером-консультантом JavaScript. Люди обычно начинают создавать что-то свое, когда не могут найти подходящее у других людей, так вышло и с этой книгой. Она создана под влиянием времени о том, как должна выглядеть современная веб-разработка. Возможно, этот курс подойдет не всем. Еще Сэмми Пьюривал честен и говорит, что эта книга не сделает из вас программистов, и скорее всего после прохождения курса вас никто не позовет на работу. Это так, но большое начинается с малого.
Книгу стоит читать активно, усевшись рядом с компьютером. Автор старается делать невозможное и показывает рецепты для Windows / Linux / MacOS, хотя некоторые рецепты за это время могут не работать, а веб-интерфейсы сайтов изменились, надо отдать должное, что он проделал огромный труд. Весь путь начинается с подготовки: с установки текстового редактора и браузера. От себя отмечу, что все делал в FireFox и не испытывал проблем, в одной из глав будет запуск «опасного кода», и вот firefox в отличии от google chrome может запускать его без всяких параметров. В целом первая глава не должна составить особых трудностей.
Во второй главе начинается рассказ о современном HTML, который можно использовать для создания статичных веб страниц, да и что кривить душой, это по-прежнему основа веб приложений. Может материал и не очень обширный, но даже если вы никогда не имели с ним дело, то даст общие понятия. А закрепить умения можно в многочисленных интернет курсах. Я например использовал codecademy ( и ссылка на курс learn HTML). Плюс со второй главы начинается простое использование git.
Третья глава открывает возможности CSS форматирования. Сами каскадные таблицы стилей сделали html файлы проще и чище, а еще их можно гораздо быстрее изменять и получать отличный результат. Для тех кому показалось мало этой главы могут попробовать он-лайн курс, а так же фреймворки для CSS, такие как Twitter Bootstrap и Zurb’s Foundation.
В четвертой главе автор знакомит нас с JavaScript и его библиотекой jQuery, однако более глубокие знания по этому языку можно почерпнуть либо в курсе, либо например в книге «Выразительный JavaScript» (без регистрации и смс, бесплатная книга на хабре). Можно по-разному относиться к JS, но на сегодняшний день это один из тех языков, который надо хоть немного знать для работы в вебе.
В пятой главе идет речь о JSON, AJAX и помимо всего прочего создается интересное приложение, для поиска картинок на Flickr.
В шестой главе нужно запастись терпением и силами, предстоит настроить виртуальную машину и окружение внутри неё. Со время выхода книги некоторые вещи изменились и тут пришлось знатно повозиться. Однако можно арендовать какой-нибудь веб сервер и выполнить задачу еще и там, самостоятельно настроив окружение. Здесь же очень пригодилась шпаргалка по пакетному менеджеру npm (ссылка на хабр). Здесь же может понадобиться учетная запись для твиттера, которая захочет ваш телефонный номер. Делать или не делать, решать вам.
В седьмой главе идет речь о базах данных Redis и MongoDB, с одной стороны хорошее изложение, с другой стороны, кажется, что чего-то не хватает. В качестве дополнения одна из рекомендуемых книг «7 баз данных за 7 недель» Эрика Редмонда и Джима Уилсона, её сложность заключается в том, что не прочитав и не сделав предыдущую главу не стоит переходить к следующей, а еще там нет сведений об установке и настройке баз данных. Что само по себе является проблемой. Есть еще MongoDB университет, но нужно запастись терпением, чтобы ждать пока будут приходить новые задания. Может для кого-то это хороший вариант, решать вам.
Благодаря этой книге вы усвоите основы создания веб-приложений, построив простое приложение с нуля с помощью HTML, JavaScript и других свободно предоставляемых инструментов. Это практическое руководство на реальных примерах обучает неопытных веб-разработчиков тому, как создавать пользовательский интерфейс, строить серверную часть, организовывать связь клиента и сервера, а также применять облачные сервисы для развертывания приложения.
Каждая глава содержит практические задачи, полноценные примеры, а также ментальные модели процесса разработки. Эта книга поможет вам сделать первые шаги в создании веб-приложений, обеспечив глубокие знания по теме.
Предисловие
В начале 2008 года, через шесть лет после окончания школы и работы учителем на полставки, мне очень хотелось стать преподавателем компьютерных дисциплин на полный день. Очень быстро выяснилось, что место преподавателя найти нелегко,
а получение хорошей работы зависит от удачи в большей степени, чем от чего-либо еще. Ну что ж, я поступил так, как поступает любой уважающий себя академик, столкнувшись с удручающим положением на академическом рынке труда, а именно: решил повысить свою конкурентоспособность с помощью изучения разработки веб-приложений.
Это, конечно, звучит странно. Кроме всего прочего, к тому моменту я уже около девяти лет изучал компьютерные дисциплины и, более того, свыше шести лет учил студентов разрабатывать программное обеспечение (ПО). Разве я не должен был хорошо знать, как создавать веб-приложения? Похоже, что нет, так как существует определенный разрыв между практической ежедневной работой по разработке ПО и программированием как учебной дисциплиной, изучаемой в колледжах и университетах. Фактически мои знания по веб-разработке были ограничены HTML и в некоторой степени CSS, который я в то время изучал самостоятельно.
К счастью, у меня было несколько друзей, которые активно работали в компьютерном мире, и большинство из них в то время обсуждало (относительно) новый фреймворк - структура программной системы, а также специальное ПО, с помощью которого можно разрабатывать и объединять компоненты программного проекта. - Примеч. пер., который назывался Ruby on Rails. Мне показалось, что это весьма подходящая область для развития, так что я купил несколько книг по этой теме и принялся читать обучающие материалы в Интернете, чтобы побыстрее освоиться.
А через несколько месяцев, пытаясь хоть чего-нибудь добиться на практике, я чуть было не сдался.
Почему? Да потому, что большинство книг и учебных статей начиналось с предположения, что я уже умею создавать веб-приложения и делаю это на протяжении нескольких лет! А между тем, несмотря на мой солидный теоретический багаж по
компьютерному программированию, оказалось, что все эти материалы слишком лаконичны и очень сложны для понимания. Например, выяснилось, что можно пройти несколько классов по компьютерным дисциплинам, ни разу не столкнувшись с шаблоном проектирования Model - View - Controller, а в некоторых книгах уже в первой главе предполагается, что вы прекрасно с ним знакомы.
Тем не менее мне удалось изучить веб-разработку на уровне, достаточном для того, чтобы несколько раз провести консультации, которые оказались весьма кстати, пока я не получил должность преподавателя. Благодаря этому я заметил, что меня настолько увлекают практические стороны данной области, что я продолжил заниматься консультированием, одновременно работая учителем.
Через несколько лет занятий тем и другим мне предложили вести мой первый класс по разработке веб-приложений в Университете Северной Каролины в Эшвилле. Изначально я планировал начать с Ruby on Rails, но, взявшись за новейшие книги и обучающие материалы по ней, выяснил, что они никак не улучшились за все эти годы. Нет, они были хорошим подспорьем для людей, которые отлично знают основы, но для студентов, которые у меня учились, они определенно не годились.
Грустно, но неудивительно - академические книги по веб-разработке оказались еще хуже. Большинство из них содержали устаревшие концепции и не раскрывали важнейших тем, нужных для понимания платформ наподобие Ruby on Rails. Мне даже случилось выступить рецензентом одной книги, переизданной в 2011 году и до сих пор описывающей верстку с помощью таблиц и тег !
Что ж, у меня не было другого выхода, кроме как создавать свой курс с нуля и писать все материалы самостоятельно. В то время я проводил небольшую консультационную работу по 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 недель) в колледже.
NET имеет специальное расширение " .aspx ".Порядок работы ASP . NET выглядит следующим образом:
- Когда веб-браузер запрашивает файл ASP.NET, веб-сервер IIS перенаправляет запрос модулю ASP.NET на сервере.
- Модуль ASP.NET читает файл построчно и выполняет, коды сценариев, содержащиеся в файле.
- Веб-браузеру возвращается обратно файл ASP.NET, но уже в виде обычного HTML документа.
Любая страница ASP . NET представлена классом, производным от класса System.Web.UI , который определяет свойства, методы и события, общие для всех страниц, предназначенных для обработки средой ASP . NET
Наиболее важные свойства этого объекта приведены в таблице ниже:
Свойство | Описание |
---|---|
Application | Возвращает объект HttpApplicationState |
Cache | Возвращает объект Cache , в котором хранятся данные приложения, в т.ч. и самой страницы |
IsPostBack | Возвращает значение, определяющее, была ли страница загружена клиентом впервый раз, или загружена повторно в ответ на запрос клиента |
Request | Возвращает объект HttpRequest , используемый для получения информации о входящем запросе HTTP |
Response | Возвращает объект HttpResponse , используемые для формирования ответа сервера клиенту |
Server | Возвращает объект HttpServerUtility |
Session | Возвращает объект System.Web.SessionState.HttpSessionState , с помощью которого получается информация о текущем сеансе HTTP |
Такое построение проекта позволяет хранить отдельно код представления для генерации HTML кода (в файле *.aspx ) от программной логики (в файле *.aspx.cs ), что во многих случаях существенно упрощает разработку сложных веб-приложений.
Порядок выполнения лабораторной работы
Для работы с примерами, приводимыми в данной лабораторной работе, потребуется установка среды разработки Microsoft Visual Studio 2005+ и веб-сервера IIS 5+ ( Internet Information Server ).
После завершения создания проекта, он будет содержать файлы Default.aspx , Default.aspx.cs и Default.asp.designer.cs .
Первый из них будет содержать примерно следующий код:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind=" Default.aspx.cs" Inherits="ASPNETHello._Default" %>
Из этого кода видно, что, во-первых, для создания кода HTML , возвращаемого браузеру, будет использован язык C # (см. атрибут Language ). Во-вторых, код C # содержится в отдельном файле, который будет выполняться на веб-сервере (см. атрибут CodeBehind ). И, наконец, атрибут Inherits указывает на имя класса , определенного в CodeBehind .
Важным новшеством в ASP . NET является атрибут runat="server" , размещенный в тэге