Джекилл для разработчиков WordPress

В этой статье мы возьмем на себя роль веб-разработчика, строящем веб-сайт для вымышленной юридической фирмы. WordPress является очевидным выбором для веб-сайта, как это, но это единственный инструмент, который мы должны рассмотреть? Давайте посмотрим на совершенно другой способ создания веб-сайта, используя Jekyll.

Jekyll For WordPress Developers

Дальнейшее чтение на SmashingMag:

Что такое Джекилл?

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

Почему Джекилл?

Мы должны учитывать ряд компромиссов при принятии решения о том, подходит ли Джекилл для проекта.

Преимущества Джекила

  • Меньше сложности
    Сайт Jekyll по существу статический веб-сайт с шаблонным языком. Он имеет меньше компонентов для создания и обслуживания. На сервере нам нужен только веб-сервер, способный обслуживать файлы.
  • Скорость
    Когда посетители просматривали страницы на сайтах Jekyll, сервер возвращает существующие файлы без дополнительной обработки. Это гораздо быстрее, чем WordPress, который генерирует страницы динамически по запросу времени. Примечание: WordPress Кэшинг плагины могут устранить этот разрыв в производительности.
  • Стабильности
    WordPress имеет больше компонентов, работающих вместе для создания страниц для посетителей. Если компонент не удается, посетители могут быть не в состоянии просмотреть веб-сайт. Гораздо меньше может пойти не так, когда веб-сервер обслуживает только файлы.
  • Безопасности
    WordPress делает многое для снижения рисков безопасности, таких как CSRF, XSS или s’L инъекций атак однако он полагается на вас всегда имея последние обновления. Сайты Statics устраняют эту проблему, поскольку нет динамического хранения данных, который может использовать хакер.
  • Источник-контролируемый
    Веб-сайт Jekyll — это каталог файлов, поэтому мы можем хранить весь веб-сайт в репозитории Git. Работа с репозиторием дает нам много преимуществ (хотя VersionPress находится в разработке и позволяет этот рабочий процесс для WordPress).

Недостатки Джекила

  • Отсутствие GUI
    Клиент может зарегистрироваться, чтобы WordPress.com, выбрать тему и создать базовый веб-сайт самостоятельно. Jekyll является командной строкой инструмент, который подавляет большинство нетехнических пользователей. Есть сторонние GUIs для Jekyll, в том числе CloudCannon (оговорка: Я соучредитель), лесное хозяйство, Джекилл Админ, Netlify CMS, Проза и Siteleaf. Тем не менее, они должны быть настроены разработчиком, прежде чем быть переданы клиенту.
  • Время сборки
    В нашей ситуации, это не проблема, потому что сайт будет строить в рамках второй. Тем не менее, более крупный веб-сайт с 10000 до 100000 сообщений может занять несколько минут, чтобы построить. Это расстраивает, когда мы разрабатываем, потому что мы должны ждать веб-сайт, чтобы построить, прежде чем просматривать его в браузере.
  • Темы
    Джекилл имеет некоторые темы доступны, но это ничто по сравнению с тысячами тем, доступных для WordPress.
  • Расширяемости
    Если нам нужно добавить пользовательские функции на наш сайт WordPress, мы можем написать наш собственный PHP. Мы можем создать пользовательские плагины Ruby для Jekyll, однако, они работают во время сборки, а не запрашивают время.
  • Поддержки
    WordPress имеет огромное сообщество экспертов и других ресурсов, чтобы помочь. Джекилл имеет аналогичные ресурсы, но в меньших масштабах.

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

Реализации

WordPress и Джекилл принять различные подходы к созданию веб-сайта еще доля много функциональности. Давайте начнем строить наш веб-сайт Jekyll.

Установка

Типичная среда разработки для WordPress требует установки Apache или NGINX, PHP и MyS’L. Затем мы установим WordPress и настраиваем веб-сервер.

Для Джекила, мы должны убедиться, что у нас есть Ruby установлен (иногда это сложнее, чем кажется). Затем мы устанавливаем драгоценный камень Джекилла:

gem install jekyll

Если вы находитесь на macOS убедитесь, что у вас есть Xcode разработчик установлен в первую очередь.

xcode-select --install

Запущена

Запуск WordPress сайт обычно состоит из запуска базы данных и веб-сервера.

В Jekyll мы переходим к файлам нашего сайта (пустой каталог на данный момент) в терминале и запускаем:

jekyll serve

Это запускает локальный веб-сервер в порту 4000 и восстанавливает сайт всякий раз, когда файл изменяется.

Страниц

Пришло время создать нашу первую страницу. Начнем с главной страницы. Страницы для автономного содержимого без ассоциированной даты. WordPress хранит содержимое страницы в базе данных.

В Jekyll страницы являются HTML-файлами. Начнем с чистого HTML, а затем добавим функции Jekyll по мере необходимости. Вот index.html в его текущем состоянии:


<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="/css/main.css">
  </head>
  <body>
    <div class="container">
      <h1><a href="/">Justice</a></h1>
      <nav>
        <ul>
          <li><a href="/about/">About</a></li>
          <li><a href="/services/">Services</a></li>
          <li><a href="/contact/">Contact</a></li>
          <li><a href="/advice/">Advice</a></li>
        </ul>
      </nav>
    </div>

    <section class="main">
      <div class="container">
        <p>Justice Law is professional representation. Practicing for over 50 years, our team have the knowledge and skills to get you results.</p>

        <blockquote class="testimonial">
          <p class="testimonial-message">Justice Law are the best of the best. Being local, they care about people and have strong ties to the community.</p>
          <p class="testimonial-author">
            <img src="/images/peter.jpeg" alt="Photo of Peter Rottenburg"> Peter Rottenburg
          </p>
        </blockquote>
      </div>
    </section>

    <footer>
      <p class="copyright">
        &copy; 2016
      </p>
    </footer>
  </body>
</html>

Жидкости

В WordPress, мы можем написать PHP делать почти все. Джекилл использует другой подход. Вместо того, чтобы предоставить полный язык программирования, он использует шаблонный язык под названием Liquid. (WordPress имеет шаблонные языки, тоже, такие как древесина.)

Колонтитул index.html содержит уведомление об авторском праве с годом:


<p class="copyright">
  &copy; 2016
</p>

Мы вряд ли будем помнить, чтобы обновить это каждый год, так что давайте использовать жидкость для вывода в текущем году:


<p class="copyright">
  &copy; {{ site.time | date: "%Y" }}
</p>

Мы строим статический веб-сайт в Джекилле, так что эта дата не изменится, пока мы не перестроим веб-сайт. Если бы мы хотели, чтобы дата изменилась без восстановления веб-сайта, мы могли бы использовать JavaScript.

Включает

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

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

Джекилл имеет точно такую же функцию. Включает в себя хранятся в папке с именем _includes . Мы используем liquid для включения их index.html в:


{% include header.html %}
<p>Justice Law is professional representation. Practicing for over 50 years, our team have the knowledge and skills to get you results.</p>

<blockquote class="testimonial">
  <p class="testimonial-message">Justice Law are the best of the best. Being local, they care about people and have strong ties to the community.</p>
  <p class="testimonial-author">
    <img src="/images/peter.jpeg" alt="Photo of Peter Rottenburg"> Peter Rottenburg
  </p>
</blockquote>
{% include footer.html %}

Макеты

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

Эквивалент файлов шаблонов Jekyll — это макеты. Макеты представляют собой HTML-файлы с заполнителем контента. Они хранятся в _layouts каталоге. Мы _layouts/default.html создадим, чтобы содержать базовый html макет:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="/css/main.css">
  </head>
  <body>
    <div class="container">
      <h1><a href="/">Justice</a></h1>
      <nav>
        <ul>
          <li><a href="/about/">About</a></li>
          <li><a href="/services/">Services</a></li>
          <li><a href="/contact/">Contact</a></li>
          <li><a href="/advice/">Advice</a></li>
        </ul>
      </nav>
    </div>

    <section class="main">
      <div class="container">
        {{ content }}
      </div>
    </section>

    <footer>
      <p class="copyright">
        &copy; {{ site.time | date: "%Y-%m-%d" }}
      </p>
    </footer>
  </body>
</html>

Затем замените включены, index.html указав макет. Мы определяем макет с помощью передней материи, которая представляет собой фрагмент YAML, который находится между двумя тройными линиями в верхней части файла (подробнее об этом в ближайшее время).


---
layout: default
---
<blockquote class="testimonial">
  <p class="testimonial-message">Justice Law are the best of the best. Being local, they care about people and have strong ties to the community.</p>
  <p class="testimonial-author">
    <img src="/images/peter.jpeg" alt="Photo of Peter Rottenburg"> Peter Rottenburg
  </p>
</blockquote>

Теперь мы можем иметь тот же макет на всех наших страницах.

Передняя материя

В WordPress, пользовательские поля позволяют нам установить мета данные на должность. Мы можем использовать их для установки SEO теги или показать и скрыть разделы страницы для конкретного поста.

Эта концепция называется передней материи в Джекилл. Ранее мы использовали передний вопрос, чтобы установить макет для index.html . Теперь мы можем устанавливать наши собственные переменные и получать к ним доступ с помощью Liquid. Это еще больше уменьшает повторение на нашем сайте.

Давайте добавим несколько отзывов index.html . Мы могли бы скопировать и вставить HTML, но еще раз, что приводит к увеличению обслуживания. Вместо этого, давайте добавим отзывы в передней материи и итерировать над ними с жидкостью:


---
layout: default
testimonials:
  - message: We use Justice Law in all our endeavours. They offer an unparalleled service when it comes to running a business.
    image: "/images/joice.jpeg"
    name: Joice Carmold
  - message: Justice Law are the best of the best. Being local, they care about people and have strong ties to the community.
    image: "/images/peter.jpeg"
    name: Peter Rottenburg
  - message: Justice Law were everything we could have hoped for when buying our first home. Highly recommended to all.
    image: "/images/gibblesto.jpeg"
    name: D. and G. Gibbleston
---
<div class="testimonials">
  {% for testimonial in page.testimonials %}
    <blockquote class="testimonial">
      <p class="testimonial-message">{{ testimonial.message }}</p>
      <p class="testimonial-author">
        <img src="{{ testimonial.image }}" alt="Photo of {{ testimonial.name }}"> {{ testimonial.name }}
      </p>
    </blockquote>
  {% endfor %}
</div>

Сообщения

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

В Jekyll каждое сообщение представляет собой статический файл, хранящийся в _posts каталоге. Название файла имеет дату публикации и название для должности – например, _posts/2016-11-11-real-estate-flipping.md . Исходный код для блога занимает эту структуру:


---
layout: post
categories:
  - Property
---
![House](/images/house.jpeg)

Мы также можем использовать переднюю материю для набора категорий и тегов.

Ниже передней материи является тело поста, написанного в Markdown. Markdown — более простая альтернатива HTML.

Jekyll позволяет нам создавать макеты, которые наследуют от других макетов. Возможно, вы заметили, этот пост имеет макет post . postМакет наследует из макета по умолчанию и добавляет дату и название:


---
layout: default
---
<h3>{{ page.title }}</h3>
<p>{{ page.date | date: '%B %d, %Y' }}</p>

{{ content }}

Давайте blog.html создадим для итерировать над должности и ссылку на них:


---
layout: default
---
<ul>
  {% for post in site.posts %}
    <li><a href="{{ post.url }}">{{ post.title }}</a></li>
  {% endfor %}
</ul>

Коллекции

В WordPress пользовательские типы постов полезны для управления группами контента. Например, можно использовать пользовательские типы постов для отзывов, продуктов или объявлений о недвижимости.

Джекилл имеет эту функцию и называет его коллекции.

На about.html странице отображается анкета сотрудников. Мы могли бы определить мета данные для персонала (имя, изображение, номер телефона, био) в передней материи, но тогда мы могли только ссылки на него на этой странице. В будущем мы хотим использовать те же данные для отображения информации об авторах в блогах. Коллекция позволяет нам обращаться к сотрудникам в любом месте веб-сайта.

Конфигурация нашего сайта живет в _config.yml . Здесь мы устанавливаем новую коллекцию:


collections:
  staff_members:
    output: false

Теперь мы добавляем наших сотрудников. Каждый сотрудник представлен в файле Markdown, хранящейся в папке с именем коллекции; например, _staff_members/jane-doe.md .

Мы добавляем мета данные в передней материи и рекламное объявление в теле:


---
name: Jane Doe
image: "/images/jane.jpeg"
phone: "1234567"
---
Jane has 19 years of experience in law, and specialises in property and business.

Как и в сообщениях, мы можем итерировать about.html коллекцию, чтобы отобразить каждого сотрудника:


---
layout: default
---
<ul>
  {% for member in site.staff_members %}
    <li>
      <div><img src="{{ member.image }}" alt="Staff photo for {{ member.name }}"></div>
      <p>{{ member.name }} - {{ member.phone }}</p>
      <p>{{ member.content | markdownify }}</p>
    </li>
  {% endfor %}
</ul>

WordPress имеет мощный встроенный поиск и еще более мощные поисковые плагины.

У Jekyll нет поиска, но есть решения:

Плагины

Плагины являются привлекательной частью WordPress. Легко загрузить в функциональности, чтобы получить WordPress делать почти все.

На нашем сайте Jekyll многие популярные плагины WordPress не нужны:

  • iThemes Security
    Наш веб-сайт Jekyll так же безопасен, как и веб-сервер, на который он работает.
  • Резервная охрана
    Наш веб-сайт Jekyll будет жить в репозитории, которое дает нам доступ ко всей истории изменений.
  • WP Супер Кэш
    Наш сайт Jekyll уже статический.

Другие плагины WordPress имеют сторонние эквиваленты, которые мы можем зайти на веб-сайт:

Некоторые плагины WordPress можно эмулировать с ядром Jekyll. Вот фотогалерея с использованием передней материи и жидкости:


---
layout: default
images:
  - image_path: /images/bill.jpg
    title: Bill
  - image_path: /images/burt.jpg
    title: Burt
  - image_path: /images/gary.jpg
    title: Gary
  - image_path: /images/tina.jpg
    title: Tina
  - image_path: /images/suzy.jpg
    title: Suzy
---
<ul class="photo-gallery">
  {% for image in page.images %}
    <li><img src="{{ image.image_path }}" alt="{{ image.title }}"/></li>
  {% endfor %}
</ul>

Нам просто нужно добавить наш собственный JavaScript и CSS, чтобы завершить его.

Плагины Jekyll могут подражать функциональности других плагинов WordPress. Имейте в виду, что плагины Jekyll работают только во время генерируемого веб-сайта – они не добавляют функциональность в реальном времени:

Управление версиями

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

GitHub имеет фантастический интерактивный учебник для начинающих обучения Git.

Рука-офф клиента

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

WordPress CMS встроен в платформу, поэтому нам нужно будет создать учетную запись для клиента.

С нашим веб-сайтом Jekyll мы свяжем наш репозиторий Git с одним из упомянутых ранее GUIs Jekyll. Одна из хороших вещей об этом рабочем процессе является то, что изменения клиентов совершаются обратно в репозиторий. Как разработчики, мы можем продолжать использовать локальные рабочие процессы даже при том, что неразработчики обновляют веб-сайт.

Некоторые GUIs Jekyll предлагают хостинг, в то время как другие имеют способ вывода на Amazon S3 ведро или GitHub Страницы.

Сводка

На данный момент, наш сайт Jekyll является жить и editable клиентом. Если нам нужно внести какие-либо изменения в веб-сайт, мы просто нажмите на репозиторий, и он будет автоматически развернуть жить.

Злт;див-класс”отзывы”
«% для отзывов в page.testimonials %
«lt;blockquote class» »свидетельство»»gt;
«lt;p class» «свидетельство-сообщение» »gt; » » testimonial.message »
«lt;p класс» »свидетельство-автор»
«lt;img src» » » » » отзыв.изображение »» альт»Фото «» testimonial.name »gt; testimonial.name »
Злт; /p
Злт;/Блокцитит»gt;
(% конец для %)
Злт;/Див

Сообщения

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

В Jekyll каждое сообщение представляет собой статический файл, хранящийся в _posts каталоге. Название файла имеет дату публикации и название для должности – например, _posts/2016-11-11-real-estate-flipping.md . Исходный код для блога занимает эту структуру:


---
layout: post
categories:
  - Property
---
![House](/images/house.jpeg)

Мы также можем использовать переднюю материю для набора категорий и тегов.

Ниже передней материи является тело поста, написанного в Markdown. Markdown — более простая альтернатива HTML.

Jekyll позволяет нам создавать макеты, которые наследуют от других макетов. Возможно, вы заметили, этот пост имеет макет post . postМакет наследует из макета по умолчанию и добавляет дату и название:


---
layout: default
---
<h3>{{ page.title }}</h3>
<p>{{ page.date | date: '%B %d, %Y' }}</p>

{{ content }}

Давайте blog.html создадим для итерировать над должности и ссылку на них:


---
layout: default
---
<ul>
  {% for post in site.posts %}
    <li><a href="{{ post.url }}">{{ post.title }}</a></li>
  {% endfor %}
</ul>

Коллекции

В WordPress пользовательские типы постов полезны для управления группами контента. Например, можно использовать пользовательские типы постов для отзывов, продуктов или объявлений о недвижимости.

Джекилл имеет эту функцию и называет его коллекции.

На about.html странице отображается анкета сотрудников. Мы могли бы определить мета данные для персонала (имя, изображение, номер телефона, био) в передней материи, но тогда мы могли только ссылки на него на этой странице. В будущем мы хотим использовать те же данные для отображения информации об авторах в блогах. Коллекция позволяет нам обращаться к сотрудникам в любом месте веб-сайта.

Конфигурация нашего сайта живет в _config.yml . Здесь мы устанавливаем новую коллекцию:


collections:
  staff_members:
    output: false

Теперь мы добавляем наших сотрудников. Каждый сотрудник представлен в файле Markdown, хранящейся в папке с именем коллекции; например, _staff_members/jane-doe.md .

Мы добавляем мета данные в передней материи и рекламное объявление в теле:


---
name: Jane Doe
image: "/images/jane.jpeg"
phone: "1234567"
---
Jane has 19 years of experience in law, and specialises in property and business.

Как и в сообщениях, мы можем итерировать about.html коллекцию, чтобы отобразить каждого сотрудника:


---
layout: default
---
<ul>
  {% for member in site.staff_members %}
    <li>
      <div><img src="{{ member.image }}" alt="Staff photo for {{ member.name }}"></div>
      <p>{{ member.name }} - {{ member.phone }}</p>
      <p>{{ member.content | markdownify }}</p>
    </li>
  {% endfor %}
</ul>

Поиск

WordPress имеет мощный встроенный поиск и еще более мощные поисковые плагины.

У Jekyll нет поиска, но есть решения:

Плагины

Плагины являются привлекательной частью WordPress. Легко загрузить в функциональности, чтобы получить WordPress делать почти все.

На нашем сайте Jekyll многие популярные плагины WordPress не нужны:

  • iThemes Security
    Наш веб-сайт Jekyll так же безопасен, как и веб-сервер, на который он работает.
  • Резервная охрана
    Наш веб-сайт Jekyll будет жить в репозитории, которое дает нам доступ ко всей истории изменений.
  • WP Супер Кэш
    Наш сайт Jekyll уже статический.

Другие плагины WordPress имеют сторонние эквиваленты, которые мы можем зайти на веб-сайт:

Некоторые плагины WordPress можно эмулировать с ядром Jekyll. Вот фотогалерея с использованием передней материи и жидкости:


---
layout: default
images:
  - image_path: /images/bill.jpg
    title: Bill
  - image_path: /images/burt.jpg
    title: Burt
  - image_path: /images/gary.jpg
    title: Gary
  - image_path: /images/tina.jpg
    title: Tina
  - image_path: /images/suzy.jpg
    title: Suzy
---
<ul class="photo-gallery">
  {% for image in page.images %}
    <li><img src="{{ image.image_path }}" alt="{{ image.title }}"/></li>
  {% endfor %}
</ul>

Нам просто нужно добавить наш собственный JavaScript и CSS, чтобы завершить его.

Плагины Jekyll могут подражать функциональности других плагинов WordPress. Имейте в виду, что плагины Jekyll работают только во время генерируемого веб-сайта – они не добавляют функциональность в реальном времени:

Управление версиями

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

GitHub имеет фантастический интерактивный учебник для начинающих обучения Git.

Рука-офф клиента

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

WordPress CMS встроен в платформу, поэтому нам нужно будет создать учетную запись для клиента.

С нашим веб-сайтом Jekyll мы свяжем наш репозиторий Git с одним из упомянутых ранее GUIs Jekyll. Одна из хороших вещей об этом рабочем процессе является то, что изменения клиентов совершаются обратно в репозиторий. Как разработчики, мы можем продолжать использовать локальные рабочие процессы даже при том, что неразработчики обновляют веб-сайт.

Некоторые GUIs Jekyll предлагают хостинг, в то время как другие имеют способ вывода на Amazon S3 ведро или GitHub Страницы.

Сводка

На данный момент, наш сайт Jekyll является жить и editable клиентом. Если нам нужно внести какие-либо изменения в веб-сайт, мы просто нажмите на репозиторий, и он будет автоматически развернуть жить.

Ваш первый Джекилл сайт

Теперь твоя очередь. Множество ресурсов, которые помогут вам создать свой первый веб-сайт Jekyll:

  • Официальный веб-сайт Jekyll является прекрасным местом для начала с углубленной документации по всем особенностям Джекила.
  • Jekyll.tips имеет серию видео-учебник, охватывающий основные темы Джекилла.
  • Взгляните на шаблоны Jekyll на GitHub, чтобы увидеть, как они вместе взятые: Frisco для маркетинговых веб-сайтов, Scholar for documentation и Urban для цифровых агентств.

Если вы мигрируете, Джекилл имеет инструменты для импорта сообщений с WordPress и WordPress.com веб-сайтов. После импорта необходимо вручную мигрировать или создавать макеты, страницы, CSS, JavaScript и другие ресурсы для веб-сайта.

Упаковка

Красота Джекила в его простоте. Хотя WordPress может соответствовать многим особенностям Джекилл, он часто приходит за счет сложности через дополнительные плагины или инфраструктуры.

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

Источник: smashingmagazine.com

Великолепный Журнал

Великолепный, сокрушительный, разящий (см. перевод smashing) независимый журнал о веб-разработке. Основан в 2006 году в Германии. Имеет няшный дизайн и кучу крутых авторов, которых читают 2 млн человек в месяц.

Добавить комментарий

%d такие блоггеры, как: