Web Мастерская»Блог

Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.

Как передавать информер на другие сайты

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

С помощью JavaScript и JSONP (JSON with Padding)


Этот метод позволяет обойти политику безопасности браузера (Same Origin Policy), которая препятствует обмену данными между доменами.

Пример:
Информер на сайте (HTML):
<!-- index.html -->
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Инфомер</title>
</head>
<body>
    <div id="infomer"></div>
    <script src="https://example.com/informer.js"></script>
</body>
</html>

Сторонний сайт (informer.js):
// informer.js
(function() {
    var infomerDiv = document.getElementById('infomer');
    var scriptEl = document.createElement('script');
    scriptEl.src =
...

Namespace в JavaScript

В JavaScript нет понятия namespace в классическом понимании, как в языках вроде Java или C#, где namespaces — это особая структура для именования классов и модулей. Однако, есть похожие концепции, которые позволяют организовывать код и предотвращать конфликты имен:

Имена объектов (Object Namespaces)


Это простейший способ создать пространство имен. Вы создаете объект, в котором хранятся все ваши функции и переменные:
var MyApp = {};

MyApp.Utils = {
    add: function(a, b) { return a + b; },
    multiply: function(a, b) { return a * b; }
};

console.log(MyApp.Utils.add(2, 3)); // Output: 5

IIFE (Immediately Invoked Function Expression)


Это анонимная функция, которая исполняется сразу после объявления. Внутри нее можно объявлять приватные переменные и функции, доступные только внутри этой функции:
(function () {
    var privateVar = "I'm private";
    
    window.MyApp = {
        publicMethod: function() {
            console.log(privateVar);
        }
   
...

Как организовать код в JavaScript

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

Модульность


Одним из самых важных принципов является деление кода на модули. Каждый модуль должен отвечать за отдельную задачу и предоставлять четко определенное API.
  • CommonJS (require/exports): традиционный подход, используемый в Node.js.
  • ES Modules (import/export): современная спецификация, поддерживаемая большинством современных браузеров и Node.js.

Пример ES-модулей:
// utils.js
export function add(a, b) {
    return a + b;
}

// main.js
import { add } from './utils.js';
console.log(add(2, 3)); // 5

Namespace (Пространства имен)


Для избежания конфликтов имен в глобальном пространстве можно использовать namespaces:
var myApp = {};

myApp.utils = {
    add: function(a, b) {
        return a + b;
    }
};

console.log(myApp.utils.add(2, 3)); // 5

...

Перевод rows в пиксели на JS и jQuery

Представим, что есть такой textarea:
<textarea name="val[text]" rows="12" cols="50" id="text"></textarea>

И необходимо при помощи чистого JavaScript или jQuery получить значение rows="12" и перевести его в пиксели. Как это сделать в этой статье.

Для того чтобы получить значение атрибута rows и конвертировать его в пиксели на jQuery, нужно выполнить несколько шагов:
  1. Получить значение атрибута rows с помощью jQuery.
  2. Преобразовать это значение в пиксели, умножив на среднюю высоту строки.

Пример кода:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Пример преобразования rows в пиксели</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <textarea name="val[text]" rows="12" cols="50" id="text"></textarea>

    <script>
        // Получаем значение атрибута rows
        var rowsCount = parseInt($('#text').attr('rows'));

        // Средняя высота строки обычно принимается равной 20 пикселям
        var
...

Как в JS / jQuery сделать неизменную переменную?

В стандартной JavaScript и jQuery нет понятия «константной» переменной, как в языках программирования, таких как Java или C++. Однако есть несколько способов, которые помогут достичь аналогичного эффекта:

Способ 1: Использовать ключевое слово const


Синтаксис ES6 (ECMAScript 2015) ввёл ключевое слово const, которое позволяет объявлять переменные, которые не могут быть повторно определены:
const MY_CONSTANT = 'This is a constant';
console.log(MY_CONSTANT); // This is a constant

MY_CONSTANT = 'New Value'; // Будет ошибка: Assignment to constant variable.

Способ 2: Использовать IIFE (Immediately Invoked Function Expression)


Если нужно объявить постоянную переменную в локальном контексте, можно использовать немедленно вызываемую анонимную функцию:
(function () {
    var CONSTANT_VALUE = 'Some Constant Value';
    console.log(CONSTANT_VALUE); // Some Constant Value
})();

// Попытка доступа извне невозможна:
console.log(CONSTANT_VALUE); // ReferenceError: CONSTANT_VALUE is not defined

С

...