Javascript
18.6K subscribers
809 photos
119 videos
2 files
1.25K links
По всем вопросам - @workakkk

@itchannels_telegram -🔥лучшие ИТ-каналы

@ai_machinelearning_big_data - машинное обучение

@JavaScript_testit- js тесты

@pythonl - 🐍

@ArtificialIntelligencedl - AI

@datascienceiot - ml 📚

РКН: № 5153160945
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Hex/RGB Auto Color Converter in Vue - конвертор цветов из HEX в RGB, выполненный с помощью SCSS и библиотеки Vue.js.

https://codepen.io/collinsworth/pen/WNXxQVP

@javascriptv
👍13🔥31
👨‍💻Как работает JavaScript Proxy

Первый шаг в работе с JavaScript Proxy — создание прокси-объекта с помощью синтаксиса new Proxy(). Этот синтаксис позволяет определить целевой объект и объект-обработчик, содержащий ловушки — специальные методы, которые перехватывают операции с прокси и позволяют настраивать их поведение.

Например, ловушка get перехватывает доступ к свойствам прокси-объекта. Определив эту ловушку, можно настроить реакцию прокси при обращение к свойству. Аналогично, ловушка set перехватывает присвоение свойства, позволяя валидировать или изменить присвоенное значение.

В целом, ловушки в контексте JavaScript Proxy — это специальные методы, которые действуют как посредники, перехватывая и позволяя настраивать такие действия с прокси-объектом, как доступ к свойствам и присвоение. Они предоставляют разработчикам тонкий контроль над поведением прокси, позволяя настраивать и манипулировать им по мере необходимости.

Пример:
const target = {
name: 'Hossein',
age: 26
};

const handler = {
get(target, property) {
console.log(`Getting property: ${property}`);
return target[property];
},
set(target, property, value) {
console.log(`Setting property: ${property} = ${value}`);
target[property] = value;
}
};

const proxy = new Proxy(target, handler);

console.log(proxy.name); // Вывод: Получение свойства: name, Hossein
proxy.age = 30; // Вывод: Установка свойства: age = 26
console.log(proxy.age); // Вывод: получение свойства: age, 30


▪️Здесь ловушка set перехватывает присвоение свойства прокси-объекту и регистрирует присвоенное свойство и значение, прежде чем изменить его в целевом объекте.

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

Перехват операций с объектами с использованием прокси

JavaScript Proxy позволяет перехватывать и настраивать различные операции с объектами. Рассмотрим несколько примеров.

Удаление свойства:
const target = {
name: 'Hossein',
age: 26
};

const handler = {
deleteProperty(target, property) {
console.log(`Deleting property: ${property}`);
delete target[property];
}
};

const proxy = new Proxy(target, handler);

delete proxy.age; // Вывод: Удаление свойства: age
console.log(proxy); // Вывод: { name: 'Hossein' }


▪️В этом примере ловушка deleteProperty перехватывает удаление свойства прокси-объекта. Можно настроить поведение так, чтобы залоггировать удаляемое свойство и затем удалить его из целевого объекта.

Вызов функции:

const target = {
sum: (a, b) => a + b
};

const handler = {
apply(target, thisArg, argumentsList) {
console.log(`Calling function: ${target.name}`);
return target.apply(thisArg, argumentsList);
}
};

const proxy = new Proxy(target.sum, handler);

console.log(proxy(2, 3)); // Вывод: Вызов функции: sum, 5


▪️В этом случае ловушка apply перехватывает вызов функции прокси-объекта. Можно настроить поведение так, чтобы залоггировать имя функции перед ее вызовом с предоставленными аргументами.

📌Продолжение

@javascriptv
👍15🔥52
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Newton's Light Bulbs - изящная анимация лампочки Ньютона. Реализована с помощью CSS и Js.

https://codepen.io/jh3y/pen/abzeaWJ

@javascriptv
👍62👎2🔥2
⚡️Маст-хэв список программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования.
Лучший способ получать свежие обновлении и следить за трендами в разработке.

Python: t.iss.one/pythonl
C#: t.iss.one/csharp_ci
C/C++/ t.iss.one/cpluspluc
Машинное обучение: t.iss.one/ai_machinelearning_big_data
Data Science: t.iss.one/data_analysis_ml
Devops: t.iss.one/devOPSitsec
Go: t.iss.one/Golang_google
Базы данных: t.iss.one/sqlhub
Rust: t.iss.one/rust_code
Javascript: t.iss.one/javascriptv
React: t.iss.one/react_tg
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Linux: t.iss.one/+A8jY79rcyKJlYWY6
Big Data: t.iss.one/bigdatai
Хакинг: t.iss.one/linuxkalii
Java: t.iss.one/javatg

💼 Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy

🎞 YouTube канал: https://www.youtube.com/@uproger

😆ИТ-Мемы: t.iss.one/memes_prog

🇬🇧Английский: t.iss.one/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ Literally Linked Lists - крутые интерактивные связанные списки, написанные с помощью CSS и JavaScript

https://codepen.io/mattjuggins/pen/KKZRwVL/

@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Expanding Button - красивая анимированная кнопка с различными ссылками на медиа. Реализована с помощью SCSS, Pug и JavaScript.

https://codepen.io/abh1nash/pen/eYjQgEN

@javascriptv
👍113🔥2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Интересное исследование производительности анимации на основе скролла страницы

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

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

#javascript #api #css #web

@javascriptv
👍10🔥31
UptimeSystem — мониторинг доступности веб-сайтов и серверов

UptimeSystem позволяет с лёгкостью отслеживать доступность ваших веб-сайтов, серверов и портов, а также контролировать выполнение ваших Cron-заданий

При этом вы можете получить мгновенные email-уведомления при изменении состояния отслеживаемых сервисов

Стоимость: #бесплатно (но есть платные тарифы)

@javascriptv
7👍5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 CSS Dots wave - анимированная сцена, выполненная с помощью SCSS, без использования JavaScript

https://codepen.io/amit_sheen/pen/vYpZBwP

@javascriptv
🔥17👍32
This media is not supported in your browser
VIEW IN TELEGRAM
About Us Pop-Out Effect - крутые виджеты для блока "О нас" с поп-ап жффектом.

https://codepen.io/ainalem/pen/QWGNzYm

@javascriptv
👍10🔥52
Как сделать кастомный Semi Donut Chart с помощью SVG

Semi Donut Chart — это одна из форм представления отчётов в виде полукруглой диаграммы. Semi Donut Chart в том случае, когда важна не математическая точность, а наглядность.

Если вы хотите сделать интересный Semi Donut Chart без использования библиотек по типу Chart.js, то этот туториал для вас.

@javascriptv
👍7🔥31
This media is not supported in your browser
VIEW IN TELEGRAM
Holiday Feature Folding Cards [Pure CSS] - красивая анимация карточек с дополнительной информацией.

https://codepen.io/Maza-designDev/pen/KKdmyGb

@javascriptv
🔥143👍2
⭐️CSS Diner

Интерактивная игра для прокачки и закрепления знаний о селекторах CSS. В игре даётся анимированная полка блюд, HTML форма и определённый элемент или элементы, которые надо выбрать.

https://flukeout.github.io/

@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍7🔥3
🧑‍💻Техника каррирования в JavaScript: суть, преимущества, примеры

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

Начнем с базового примера.

Рассмотрим функцию add, принимающую 2 аргумента и возвращающую их сумму:
function add(x, y) {
return x + y;
}

console.log(add(3, 4)); // Вывод: 7


Функция add принимает 2 аргумента, x и y, и возвращает их сумму. Теперь выполним каррирование данной функции. Для этого воспользуемся техникой частичного применения:
function add(x) {
return function(y) {
return x + y;
};
}

console.log(add(3)(4)); // Вывод: 7


В варианте с каррированием функция add принимает один аргумент x и возвращает другую функцию, которая принимает второй аргумент y, после чего выполняет сложение. Это позволяет вызвать add(3) и получить новую функцию, которую можно вызвать с оставшимся аргументом 4.

Каррирование обеспечивает ряд преимуществ.
Во-первых, оно позволяет создавать специализированные функции из более общих. Создадим переиспользуемую функцию addOne путем частичного применения функции add:
const addOne = add(1);
console.log(addOne(5)); // Вывод: 6
console.log(addOne(10)); // Вывод: 11


В примере addOne  — это новая функция, производная от add, которая всегда прибавляет 1 к своему аргументу. Эту функцию можно повсеместно переиспользовать в базе кода без дублирования логики.

Во-вторых, каррирование делает возможным создание функций высшего порядка, улучшающих компонуемость. Рассмотрим функцию multiply, принимающую 3 аргумента и возвращающую их произведение:
function multiply(x, y, z) {
return x * y * z;
}

console.log(multiply(2, 3, 4)); // Вывод: 24


Выполняем каррирование функции multiply:
function multiply(x) {
return function(y) {
return function(z) {
return x * y * z;
};
};
}

console.log(multiply(2)(3)(4)); // Вывод: 24


Вариант с каррированием позволяет связать вызовы функций в цепочку, передавая по одному аргументу за раз. Это прием улучшает читаемость кода и упрощает композицию функций:
const multiplyByTwo = multiply(2);
const multiplyByThree = multiplyByTwo(3);

console.log(multiplyByThree(4)); // Вывод: 24
console.log(multiply(2)(3)(4)); // Вывод: 24


В-третьих, каррирование способствует созданию более гибких функций. Создадим вариации функции, частично применив несколько аргументов и позднее предоставив другие:

Продолжение

@javascriptv
👍232👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Создайте крутой проект для портфолио

В рамках этого видео вы поработаете с вёрсткой и JavaScript, познакомитесь с различными библиотеками и научитесь динамически комбинировать различные элементы.

По итогу вы получите клон действующего сервиса по выбору цветов:

https://www.youtube.com/watch?v=OaNICHKM5KM

#javascript #туториал

@javascriptv
👍142🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Tiling SVG Animation - красивая анимация состава разных кофейных напитков. Реализована с помощью CSS и JS.

https://codepen.io/RominaMartin/pen/KKgQmEW

@javascriptv
👍18🔥72
⭐️ Обзор 10 приемов JavaScript для эффективного программирования

1. Объект Intl
Объект Intl позволяет форматировать числа, даты и валюту с учетом разных локалей и параметров.

Он предоставляется с множеством свойств, которые обеспечивают быстрое и безупречное форматирование данных.

Рассмотрим пример форматирования валюты:
let num = 100;

let RupeeFormatter = new Intl.NumberFormat("en-IN",
{style: "currency", currency: "INR"})

let RupeeFormatted = RupeeFormatter.format(num);

console.log(RupeeFormatted)
//
100

let USDFormatter = new Intl.NumberFormat("en-IN",
{style: "currency", currency: "USD"})

let USDFormatted = USDFormatter.format(num)

console.log(USDFormatted)
// $100


2. Оператор ??
Оператор ?? присваивает переменной значение по умолчанию, если она null или undefined.

Используйте данный оператор, если сомневаетесь в существовании у объекта того или иного свойства. Если свойство отсутствует, переменной присваивается значение по умолчанию.

Пример:
let user = {}

let name = user.name ?? "Anonymous"

console.log(name)
// "Anonymous"


3. Object.fromEntries()
Метод Object.fromEntries() преобразует массив пар “ключ-значение” в объект.

Возьмем следующий массив и создадим из него объект, как показано ниже:
let arr = [["name", "Alice"], ["age", 25]]

let obj = Object.fromEntries(arr);

console.log(obj)
// {name: "Alice", age: 25}


4. Array.flat()
Метод Array.flat() преобразует вложенный массив в один единственный.

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

Пример:
let arr = [1, [2, [3, [4]]]];

let flat = arr.flat(Infinity)

console.log(flat)
// [1, 2, 3, 4]


5. Оператор ?
Оператор ?. обеспечивает доступ к свойствам объекта без проверки, является ли он null или undefined.

Используйте его, когда не знаете, существует ли объект или нет.

Пример:
let user = null

let age = user?.age

console.log(age)
// undefined


6. Array.reduce()
Метод Array.reduce() применяет функцию к каждому элементу массива и суммирует результат в одно значение.

Пример сложения всех чисел массива:
let arr = [1, 2, 3, 4, 5]

let sum = arr.reduce((a, b) => a + b)

console.log(sum)
// 15


7. String.repeat()
Метод String.repeat() создает новую строку, повторяя заданную строку указанное количество раз.

Пример:
let str = "js".repeat(10)

console.log(str)
// 'jsjsjsjsjsjsjsjsjsjs'


8. Array.from()
Метод Array.from() создает новый массив из массивоподобного или итерируемого объекта.

Пример:
let str = "Hello"

let arr = Array.from(str)

console.log(arr)
// ["H", "e", "l", "l", "o"]


9. Math.hypot()
Метод Math.hypot() находит квадратный корень из суммы квадратов его аргументов.

Так, сумма квадратов 3 и 4 равна 25, а квадратный корень из 25 равен 5. Следовательно, Math.hypot(3, 4) возвращает 5.

Пример:
let hyp = Math.hypot(3, 4);

console.log(hyp)
// 5


10. Object.assign()
Метод Object.assign() копирует значения всех перечисляемых собственных свойств из одного или нескольких исходных объектов в целевой объект.

Пример:
let obj1 = {a: 1, b: 2};

let obj2 = {c: 3, d: 4};

let obj3 = Object.assign(obj1, obj2)

console.log(obj3)
// {a: 1, b: 2, c: 3, d: 4}


@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4011🔥7👎1
🔥 Дайджест полезных материалов из мира : Javascript за неделю

Почитать:
Под капотом анимаций в React Native. Часть 2/2: Reanimated and JSI
Подборка VS Code-плагинов для Frontend-разработчиков и не только
Рефлексия в JavaScript и TypeScript: обзор основных техник. Как сгенерировать CLI-интерфейс для класса
Считаем «a=1; b=2; x=pi/3; abcos(x)»
JavaScript повсюду или почему веб-технологии захватили мир
DOM, DI и View: деревья в Angular
Как уменьшали размер VS Code, используя name mangling — сокращение идентификаторов во время сборки
Как показать миллион зданий на карте — и не сломать браузер
Одно PWA, чтоб править всеми
Как запретить разработчику делать не то что нужно?
Introduction to Sets in JavaScript: A Comprehensive Guide
Pune Escorts Services: Exploring a World of Connection and Luxury
Cortexi Reviews 2023 - Ear Drops, Ingredients, Reviews, Benefits & Price?
Latest Newsletter: Bingeing the Past and Building the Future (Issue #129)
Web Application Debugging with Sentry Session Replay: Comprehensive Walkthrough 🚀🚀
Elevate Your Buttons with CopyShareify-js: Copy, Share, and More!
The Art of Earning with Amazon's Affiliate Program
Introducing OTP Designer jQuery Plugin
EasyCaptchaJS: Simplified reCAPTCHA Integration
SysCorp Technology PVT LTD

Посмотреть:
🌐 NEW Way To Create Variables In JavaScript ( 12:13)
🌐 Help Me Teach You TypeScript ( 00:45)

Хорошего дня!

@javascriptv
👍14🔥21
This media is not supported in your browser
VIEW IN TELEGRAM
Glassmorphing card - Карточка в стиле стекломорфизма с плавным 3D-наклоном при наведении, созданная с помощью библиотеки Tilt.js.

https://codepen.io/pieter-biesemans/pen/QWKmXEE

@javascriptv
👍153🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Video Sharing Platform UI

Пользовательский интерфейс платформы обмена видео, реализован с помощью CSS и JS

#анимация #css

https://codepen.io/TurkAysenur/pen/abvrNgx

@javascriptv
👍102🔥2