Разное

Фреймворке – Веб-фреймворки: введение для новичков

21.11.2020

Содержание

Начинающим программистам: что такое фреймворки и библиотеки

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

Фреймворки

Пред­ставь­те: вам нуж­но постро­ить дом. Мож­но выбрать гото­вый типо­вой про­ект и немно­го поиг­рать с пла­ни­ров­кой, пока архи­тек­тор не про­тив и вы не тро­га­е­те капи­таль­ные сте­ны. А мож­но нари­со­вать план само­му и полу­чить имен­но тот дом, кото­рый хоти­те — даже если вы хоти­те цилин­дри­че­ский дом со вхо­дом на вто­ром эта­же.

Раз­ни­ца в том, что в типо­вом про­ек­те уже всё про­ду­ма­но: опти­маль­ное рас­по­ло­же­ние ком­му­ни­ка­ций, теп­ло­изо­ля­ция стен, спо­со­бы залив­ки фун­да­мен­та, и еще мил­ли­он вещей, кото­рые со сто­ро­ны не вид­ны. Вы полу­ча­е­те тёп­лый и уют­ный дом, но в рам­ках гото­во­го про­ек­та.

Так же рабо­та­ет фрейм­ворк. Вы исполь­зу­е­те гото­вый шаб­лон и напол­ня­е­те его сво­им кодом. Вы теря­е­те в гиб­ко­сти, зато про­грам­ма рабо­та­ет ста­биль­но: всё основ­ное фрейм­ворк берёт на себя. Под капо­том фрейм­вор­ка мил­ли­он нюан­сов: напри­мер, рабо­та с фай­ло­вой систе­мой и база­ми дан­ных, обра­бот­ка оши­бок, защи­та паро­лем. 

Без фрейм­вор­ка вам нуж­но будет обо всём думать само­сто­я­тель­но. Это даёт боль­ше сво­бо­ды, но и боль­ше ответ­ствен­но­сти. Если кри­во реа­ли­зо­ва­на авто­ри­за­ция в базу дан­ных, через эту кри­виз­ну код смо­гут взло­мать. Если не напи­са­ли обра­бот­ку оши­бок, про­грам­ма может не рабо­тать. На язы­ке стро­и­тель­ства это экви­ва­лент дома без кана­ли­за­ции или когда в сте­нах не преду­смот­ре­ли дыр­ки под розет­ки.

При­ме­ры фрейм­вор­ков:

  • Bootstrap — созда­ние сай­тов с адап­тив­ной вёрст­кой. Мож­но рисо­вать кра­си­вые кноп­ки, вер­стать текст во мно­го коло­нок, включать-выключать бло­ки в зави­си­мо­сти от шири­ны экра­на, делать выпа­да­ю­щие меню и мно­гое дру­гое
  • Vue.js — обес­пе­чи­ва­ет еди­но­об­ра­зие ком­по­нен­тов и модуль­ный под­ход к раз­ра­бот­ке. Мож­но созда­вать соб­ствен­ные стро­и­тель­ные бло­ки для стра­ни­цы, делать шаб­ло­ны
  • Angular.JS — JavaScript фрейм­ворк от Google для дина­ми­че­ских веб-приложений, похож на Vue
  • django — фрейм­ворк для Python, наце­лен­ный на ско­рость: гото­вые ком­по­нен­ты для баз дан­ных, рисо­ва­ния стра­ниц, адми­нок, окон вхо­да на сайт, шаб­ло­нов и мно­же­ства дру­гих вещей
  • Ruby on Rails — тоже силь­но уско­ря­ет раз­ра­бот­ку сай­тов

Вывод: фрейм­ворк даёт ста­биль­ность и удоб­ство раз­ра­бот­ки, но огра­ни­чи­ва­ет про­грам­ми­ста сво­ей архи­тек­ту­рой.

Библиотеки

Про­дол­жа­ем стро­и­тель­ную ана­ло­гию. Допу­стим, с домом вы опре­де­ли­лись, но в нём теперь нуж­но сде­лать ремонт и про­ве­сти элек­три­ку. Это мож­но сде­лать с помо­щью молот­ка, отвёрт­ки, руч­ной дре­ли и зуби­ла, а мож­но взять спе­ци­аль­ные инстру­мен­ты — бол­гар­ку, пер­фо­ра­тор и шуру­по­вёрт. Спе­цин­стру­мен­ты — это и есть биб­лио­те­ки. С ними зада­ча реша­ет­ся быст­рее, но что­бы ими поль­зо­вать­ся, нуж­но уме­ние. Если зада­ча про­стая и с ней дей­стви­тель­но мож­но спра­вить­ся толь­ко с молот­ком и отвёрт­кой — отлич­но, тогда нам не нуж­ны биб­лио­те­ки и доста­точ­но встро­ен­ных средств язы­ка про­грам­ми­ро­ва­ния.

Если рас­ши­рить при­мер, то с помо­щью спе­цин­стру­мен­та мож­но даже постро­ить дом: бето­но­ме­шал­ка вме­сто вед­ра с лопа­той, кран вме­сто руч­ной раз­груз­ки и так далее. Полу­ча­ет­ся, что напи­сать про­грам­му мож­но с помо­щью фрейм­вор­ка, а мож­но с помо­щью биб­лио­те­ки. Биб­лио­те­ка тоже сле­дит за тем, что­бы вы сде­ла­ли как мож­но мень­ше оши­бок, но нуж­но чёт­ко знать все коман­ды и пра­ви­ла. В ито­ге вы пол­но­стью кон­тро­ли­ру­е­те про­цесс, но упро­ща­е­те себе жизнь, исполь­зуя уже гото­вые биб­лио­те­ки.

Полу­ча­ет­ся, что фрейм­ворк от биб­лио­те­ки отли­ча­ет­ся тем, что фрейм­ворк сам зада­ёт вам пра­ви­ла игры, кото­рые нуж­но соблю­дать, а биб­лио­те­ка­ми вы коман­ду­е­те сами и исполь­зу­е­те их воз­мож­но­сти в нуж­ный момент.

При­ме­ры биб­лио­тек:

  • TensorFlow для Python, кото­рая погру­жа­ет вас в мир иску­ствен­но­го интел­лек­та
  • Almanac Converter — для про­стой рабо­ты с дата­ми и вре­ме­нем
  • WebKit — попу­ляр­ней­шая биб­лио­те­ка для рабо­ты с веб-страницами
  • Scribe Java — про­стая биб­лио­те­ка для авто­ри­за­ции поль­зо­ва­те­лей

Мы сами реша­ем, как и когда вызы­вать биб­лио­теч­ные функ­ции и что с ними делать. Биб­лио­те­ка — это про­сто набор зара­нее опре­де­лён­ных функ­ций, из кото­рых, как из кир­пи­чи­ков, мож­но скла­ды­вать то, что нам нуж­но. Ещё одно инте­рес­ное свой­ство: внут­ри фрейм­вор­ка мож­но исполь­зо­вать дру­гие биб­лио­те­ки. Напри­мер, если вам нужен адап­тив­ный сайт и удоб­ная рабо­та с фор­ма­ми — исполь­зуй­те Bootstrap для адап­ти­ва как фрейм­ворк и под­клю­чи­те к нему биб­лио­те­ку jQuery.

Что теперь

В одной из буду­щих ста­тей потре­ни­ру­ем­ся на биб­лио­те­ках и фрейм­вор­ках. Не пере­клю­чай­тесь и до ско­ро­го! 

thecode.media

что это такое? Краткий обзор HTML/CSS, PHP и Python-фреймворков


 

Laravel

Yii

Symfony

Zend Framework

Codeigniter

Лицензия

MIT

BSDMITNew BSD LicenseMIT

Документация

хорошая

отличная

хорошая

неплохая

лучшая

Сообщество

сильное англоязычное, русскоязычное слабое

сильное русскоязычное, англоязычное слабое

сильное англоязычное

сильное англоязычное

сильное англоязычное, упадок русскоязычного

Дополнительные пакеты и расширения

Установка через Composer

PHP 7

Базы данных

MySQL, Postgres, SQLite и SQL Server

MySQL, MariaDB, SQLite, PostgreSQL, CUBRID, Oracle, MSSQL

MySQL, PostgreSQL, SQLite или любая другая PDO-совместимая СУБД)

MariaDB, MySQL, Oracle Database, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite и Informix

MySQL, PostgreSQL, MSSQL, SQLite, Oracle.

Логирование

Миграции

Безопасность

Защита от SQL- injection, XSS, CSRF