Web МастерскаяБлог
Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.
Performance Optimization в JavaScript: Руководство по улучшению производительности
Оптимизация производительности JavaScript — это комплекс мероприятий, направленных на повышение скорости работы приложения, снижение потребления ресурсов и улучшение пользовательского опыта. В этой статье мы рассмотрим основные техники и подходы, которые помогут вашему JavaScript-приложению работать быстрее и эффективнее.
Оптимизация работы с DOM
Манипуляции с DOM — это дорогостоящее занятие. Вот несколько советов, как минимизировать их влияние:
Основные проблемы производительности
- Замедление при взаимодействии с DOM: постоянные манипуляции с деревом DOM замедляют работу приложения.
- Бесконтрольное использование памяти: создание и удаление большого количества объектов приводит к перерасходу памяти.
- Слишком сложные вычисления: тяжелые математические операции и циклы замедляют приложение.
- Неправильное использование асинхронности: неправильное использование обещаний и
async/awaitможет привести к "заморозке" главного потока.
Основные техники оптимизации
Оптимизация работы с DOM
Манипуляции с DOM — это дорогостоящее занятие. Вот несколько советов, как минимизировать их влияние:
- Batch Updates: сгруппируйте изменения
- Жалоба
JS: Отличие переменных с $ вначале и без него?
В JavaScript наличие символа
Префикс
$ в начале имени переменной не имеет никакого особого значения для языка. Сам JavaScript рассматривает переменные с префиксом $ так же, как и любые другие переменные.Почему программисты используют $?
Префикс
$ чаще всего используется для соблюдения соглашения о стиле кодирования и улучшения читаемости кода. Вот несколько распространённых причин, почему разработчики добавляют $ к именам переменных:
- DOM-объекты: Традиционно переменные, содержащие ссылки на элементы DOM (Document Object Model), называют с префиксом
$, чтобы подчеркнуть, что они ссылаются на DOM-объекты.
Пример:const $header = document.querySelector('header'); const $button = document.getElementById('submit-btn'); - Обозначения jQuery-оберток: В jQuery традиционно переменные, содержащие обернутые элементы jQuery, обозначаются с префиксом
$, чтобы напомнить, что переменная содержит jQuery-коллекцию.
Пример:const $btn = $('#submit-btn'); - Чистая конвенция: Иногда префикс
$используетс
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: 5IIFE (Immediately Invoked Function Expression)
Это анонимная функция, которая исполняется сразу после объявления. Внутри нее можно объявлять приватные переменные и функции, доступные только внутри этой функции:
(function () {
var privateVar = "I'm private";
window.MyApp = {
publicMethod: function() {
console.log(privateVar);
}
Как организовать код в JavaScript
Организация кода в JavaScript важна для поддержания чистоты, ясности и удобства дальнейшей поддержки и развития проекта. Рассмотрим несколько базовых принципов и методик, которые помогут структурировать ваш код эффективно.
Одним из самых важных принципов является деление кода на модули. Каждый модуль должен отвечать за отдельную задачу и предоставлять четко определенное API.
Пример ES-модулей:
Для избежания конфликтов имен в глобальном пространстве можно использовать namespaces:
...
Модульность
Одним из самых важных принципов является деление кода на модули. Каждый модуль должен отвечать за отдельную задачу и предоставлять четко определенное 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)); // 5Namespace (Пространства имен)
Для избежания конфликтов имен в глобальном пространстве можно использовать namespaces:
var myApp = {};
myApp.utils = {
add: function(a, b) {
return a + b;
}
};
console.log(myApp.utils.add(2, 3));Перевод rows в пиксели на JS и jQuery
Представим, что есть такой
И необходимо при помощи чистого JavaScript или jQuery получить значение
Для того чтобы получить значение атрибута rows и конвертировать его в пиксели на jQuery, нужно выполнить несколько шагов:
Пример кода:
...
textarea:
<textarea name="val[text]" rows="12" cols="50" id="text"></textarea>И необходимо при помощи чистого JavaScript или jQuery получить значение
rows="12" и перевести его в пиксели. Как это сделать в этой статье.Для того чтобы получить значение атрибута rows и конвертировать его в пиксели на jQuery, нужно выполнить несколько шагов:
- Получить значение атрибута
rowsс помощью jQuery. - Преобразовать это значение в пиксели, умножив на среднюю высоту строки.
Пример кода:
<!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 пикселям
Категории
- Apache 6
- CMS 3
- CSS 25
- FTP 1
- HTML 16
- JavaScript 47
- MySQL 17
- Nginx 15
- PHP 54
- phpMyAdmin 2
- SEO 4
- SVG 10
- URL 1
- XML 3
- Безопасность 9
- Библиотека JS 18
- Графика 2
- Инструкция 1
- Кодировка 2
- Контент 8
- Мнение 3
- Монетизация сайта 1
- Настройка 3
- Ошибка 14
- Поисковая система 2
- Продвижение сайта 5
- Производительность 3
- Прочее 1
- Софт 1
- Старт 1
- Сценарий 1
- Функция 1
- Хостинг | Сервер 2
Реклама













