00.00
Переключение темы

Воспроизведение звука при клике.

Несколько дней я тестировал контекстную рекламу Яндекс на своём сайте.
Как это обычно бывает, я сначала запилю весь функционал, чтоб всё работало, а потом начинаю глубже разбираться в данном вопросе.
Так и в этот раз оказалось, что доход с 1000 показов такого блока составит около 150 рублей. Я это даже за деньги не считаю.
Да и данный веб сайт не является тем сайтом на котором высокий трафик просмотров в отличие от того же онлайн кинотеатра.
Онлайн кинотеатр является полностью бесплатным проектом для всех пользователей и вставлять рекламу там я не собираюсь. Хостеры которые предоставляют все фильмы и сериалы уже встроили свою рекламу в плееры и это не моих рук дело…
На данном сайте находится мой личный блог по разработке и обычным пользователям он не интересен, по этому посещаемость в разы ниже.
Было принято решение по удалению Яндекс рекламы.

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

// Воспроизводим звук при клике на постер Yandex рекламы ;)
const audio = new Audio('https://youowl.ru/#####/zvuk.mp3');
const element = document.getElementById('yandex_rtb_R-A-3561837-1');
let isPlaying = false;

element.addEventListener('click', () => {
  if (isPlaying) {
    return;
  }
  audio.play();
  isPlaying = true;

  // Обработчик события окончания воспроизведения аудио
  audio.onended = () => {
    isPlaying = false;
  };
});

clean-css — это быстрый и эффективный CSS-оптимизатор для платформы Node.js и любого современного браузера.

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

const { src, dest, series } = require('gulp');
const CleanCSS = require('clean-css');
const concat = require('gulp-concat');

function css() {
    const options = {
        compatibility: '*', // (default) - Internet Explorer 10+ compatibility mode
        inline: ['all'], // enables all inlining, same as ['local', 'remote']
        level: 2 // Optimization levels. The level option can be either 0, 1 (default), or 2, e.g.
        // Please note that level 1 optimization options are generally safe while level 2 optimizations should be safe for most users.
    };

    return src('app/**/*.css')
        .pipe(concat('style.min.css'))
        .on('data', function(file) {
            const buferFile = new CleanCSS(options).minify(file.contents)
            return file.contents = Buffer.from(buferFile.styles)
        })
        .pipe(dest('build'))
}
exports.css = series(css)

Репозиторий плагина Clean-css

Набор инструментов для обработки и сжатия JavaScript для ES6+.

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

const { src, dest, series } = require('gulp');
const { minify } = require('terser');
function js() {
    const options = {
        parse: {
            bare_returns: true, // (default false) -- support top level return statements.
            html5_comments: true, // (default true)
            shebang: true // (default true) -- support #!command as the first line.
        }
    };
    return src('app/**/*.js')
        .on('data', function(file) {
            async function getJs() {
                const result = await minify(file.contents.toString(), options);
                return await minify(result)
            }
            (async function() {
                try {
                    file.contents = Buffer.from(JSON.parse(Buffer.from(JSON.stringify(await getJs()))).code)
                } catch (error) {
                    const { message, line, col, pos } = error
                    console.log('message: ' + message)
                    console.log('filename: ' + file.basename)
                    console.log('line: ' + line)
                    console.log('col: ' + col)
                    console.log('pos: ' + pos)
                }
            })();
        })
        .pipe(dest('build'))
}
exports.js = series(js)

Репозиторий плагина Terser

HTML-компрессор/минификатор на базе Javascript.

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

const { src, dest, series } = require('gulp');
const htmlMinify = require('html-minifier');

const options = {
  includeAutoGeneratedTags: true,
  removeAttributeQuotes: true,
  removeComments: true,
  removeRedundantAttributes: true,
  removeScriptTypeAttributes: true,
  removeStyleLinkTypeAttributes: true,
  sortClassName: true,
  useShortDoctype: true,
  collapseWhitespace: true
};

function html() {
  return src('app/**/*.html')
    .on('data', function(file) {
      const buferFile = Buffer.from(htmlMinify.minify(file.contents.toString(), options))
      return file.contents = buferFile
    })
    .pipe(dest('build'))
}

exports.html = series(html)

Репозиторий плагина html-minifier