<MyRusakov.ru />

Программирование на JavaScript с Нуля до Гуру 2.0

Программирование на JavaScript с Нуля до Гуру 2.0

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

Дополнительно, почти к каждому уроку идут упражнения.

Помимо самого курса Вас ждёт ещё 5 бесплатных ценных Бонусов: «Библиотека jQuery», «Защита JavaScript-кода от копирования», «Решение упражнений из курса», «HTML для начинающих» и «CSS для начинающих».

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Верстка страниц сайта с помощью Gulp и Live Reload

Верстка страниц сайта с помощью Gulp и Live Reload

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

К счастью современная верстка, по которой у меня есть видеокурс "Система Вёрстка сайта с нуля 2.0", позволяет по максимуму автоматизировать повторяющиеся рутинные операции, значительно снизить количество совершаемых ошибок и повысить скорость и удобство верстки.

За счет чего спросите Вы? Отвечаю - за счет создания базовых шаблонов страниц, в которых меняется только содержимое, за счет использования препроцессоров CSS и так далее. Для верстальщика, особенно начинающего это может прозвучать несколько странно, однако мы фактически переносим опыт разработки бэкэнда (программной части) сайта на строну фронтэнд разработки.

При создании программной части сайта (бэкэнда), как известно для упрощения разработки код сайта делят на контроллеры, шаблоны и модели. В данном случае нас интересуют шаблоны. Шаблоны содержат часть верстки, того или иного компонента сайта, будь то формы входа на сайт, формы поиска, макета сайта и так далее. Часто шаблоны верстки в PHP пишутся на определенных движках шаблонизации, таких как например Twig или Blade, но мы в нашем примере будем использовать JavaScript шаблонизатор Nunjucks. (Для тех, кто знаком с Twig он будет крайне прост в понимании).

Однако мало перенести общую часть верстаемых страниц в отдельные файлы шаблонов, нам еще надо настроить менеджер задач (Gulp) так, чтобы он автоматически собирал эти шаблоны в HTML файлы страниц, а также выполнял еще определенные полезные действия, например, собирал бы стили препроцессора (SASS, например) в один CSS файл.

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

Итак, начнем с настройки менеджера задач Gulp (NodeJS) и плагинов. Для начала его надо установить глобально (глобально также поставим и live-server для автоматической перезагрузки браузера) и локально, также установим зависимости проекта:

C:\> npm init -y

C:\> npm install -g gulp live-server

C:\> npm install --save-dev gulp 

C:\> npm install --save-dev gulp-rename gulp-nunjucks gulp-pretty-html del gulp-sass node-sass gulp-remove-empty-lines 

Содержимое папки с исходниками src:

D:.                              
├───scripts                      
│       bundle.js                
│                                
├───styles                       
│   │   main.scss                
│   │                            
│   └───includes                 
│           _aside_menu.scss     
│           _content.scss        
│           _header.scss         
│           _navigation.scss     
│                                
└───templates                    
    │   index.njk                
    │                            
    └───includes                 
            _aside_menu.njk      
            _content.njk         
            _header.njk          
            _nav.njk             

Теперь создаем gulpfile.js, который будет содержать логику сборки фронтэнда сайта.

/*

импортируем функции из модуля gulp: 
src - работает с исходными файлами, которые надо преобразовать, на вход передаем массив путей из которых надо включать (или исключать) исходные файлы.
dest - куда надо помещать собранные файлы.
watch - следит за изменениями файлов в папке, нужна для автоматической пересборки проекта.

*/

const { src, dest, watch } = require('gulp');

// переименовывает файлы, в нашем случае из *.njk - файлы шаблонизатора Nunjucks в html
const rename        = require('gulp-rename');

// плагин Nunjucks для Gulp
const nunjucks      = require('gulp-nunjucks');

// плагин Gulp для того, чтобы получившиеся html файлы были читаемы
const prettifyHtml  = require('gulp-pretty-html');

// для автоматической очистки папки с собранными страницами
const del           = require('del');

// Плагин препроцессора SASS
const sass          = require('gulp-sass');
sass.compiler       = require('node-sass');

// удаляет лишние переводы строк в сгенерированных html файлах
const removeEmptyLines = require('gulp-remove-empty-lines');



// Далее идут задачи Gulp - просто функции

// сборка шаблонов в html файлы
const template = () => (
    src([   
        './src/templates/**/*.njk',       // включаемые пути
        '!./src/templates/includes/**/*', // исключаемые пути начинаюся со знака (!)
        '!./src/templates/macro/**/*'
    ])
        .pipe(nunjucks.compile())           // компипилируем шаблон
        .pipe(rename({ extname: '.html' })) // переименовываем в html
        .pipe(prettifyHtml())               // форматируем получившийся html
        .pipe(removeEmptyLines())           // удаляем лишние пробелы
        .pipe(dest('dist'))                 // сохраняем результат в папке dist
);

// собираем стили
const styles = () => (
    src('./src/styles/**/*.scss')
        .pipe(sass().on('error', sass.logError))
        .pipe(dest('./dist/styles'))
);


// скрипты
const scripts = () => (
    src('./src/scripts/**/*.js')
        .pipe(dest('./dist/js'))
);


// задача очистки
const clean = () => del(['dist/*'])


// задача перестройки проекта при изменении файлов в нем
const buildOnChange = () =>  (
    watch('src/**/*').on('all',(path,file) => {

        console.log('Rebuild running...');

        template();
        styles();
        scripts();

        console.log('Rebuild completed.');
    })
);


// экспорт задач
exports.default = () => (template(), styles(), scripts())

exports.buildOnChange = buildOnChange;
exports.build = template;
exports.sass  = styles;
exports.js    = scripts;
exports.clean = clean;

Обратите внимание, что это базовый шаблон gulpfile.js, вы можете добавить в него такие задачи, которые вам потребуется.

Запускаем так (первая консоль):

C:\> gulp buildOnChange

Вторая консоль (отслеживаем папку dist, при изменении файлов в ней перезагружаем браузер):

C:\> live-server --port=5555 --host=127.0.0.1 --wait=500 dist

Браузер автоматически загрузит индексную страницу из папки dist по адресу http://localhost:5500.

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.