جاوااسکریپت | JavaScript
507 subscribers
654 photos
139 videos
3 files
512 links
کانال @IR_javascript حاوی اطلاعات مفید در حوزه برنامه نویس فرانت که بصورت روزانه بروز می‌شود.
در این کانال شما به:
[1] مطالب تازه
[2] تحلیل‌های عمیق
[3] نکات آموزشی
[4] چالش
[5] ابزار و راهنمایی‌های کاربردی
دسترسی خواهید داشت.

🆔@IR_javascript
Download Telegram
Shepherd.js — راهنمای کاربری

یک تور راهنمای تعاملی برای کاربران سایت خود ارائه دهید.

🔗https://github.com/shipshapecode/shepherd
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
1👍1
خبر مهم!

‏Codeium نسخه‌ای فورک شده از VS Code به نام Windsurf Editor معرفی کرده است (می‌توانید از اینجا آن را دانلود و امتحان کنید). این حرکت نشان‌دهنده تلاش Codeium ارائه یک محیط توسعه یکپارچه با قابلیت‌های پیشرفته است.

🔗https://windsurf.ai/
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
👍2👎1
Progressive-Image.js

‏Progressive-Image.js یک کتابخانه برای بارگذاری تدریجی تصاویر است. این کتابخانه ابتدا یک تصویر کوچک و تار نمایش می‌دهد که به مرور زمان با تصویر کامل جایگزین می‌شود. این روش تجربه کاربری (UX) را بهبود می‌بخشد.

🔗https://github.com/craigbuckler/progressive-image.js
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
🔥4
در Vue یک ساختار کم‌استفاده برای ارتباط بین متغیرهای جاوااسکریپت و ویژگی‌های CSS وجود دارد که گاهی از v-bind در بخش style راحت‌تر است:

<template>
<div class="text">Hello, Vue!</div>
</template>

<script setup>
import { ref } from 'vue';

const color = ref('red');
</script>

<style scoped vars="{ colorVar: color }">
.text {
color: var(--colorVar);
}
</style>

این نحوه نوشتار، نسخه‌ی اول ویژگی‌های CSS واکنش‌گرا در Vue 3 است.

سپس، ایوان نسخه‌ای با استفاده از v-bind() ارائه کرد که برخی از محدودیت‌های vars را حل می‌کند.

#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
👍5
جایگزین‌های دستور if…else در جاوااسکریپت

۱️⃣ دستور Switch
مقدار مطابقت داده‌شده یک عبارت را پیدا کرده و بلوک کد مرتبط با آن مقدار را اجرا می‌کند.

۲️⃣ عملگر سه‌گانه (Ternary Operator)
یک شرط را بررسی می‌کند و اگر شرط درست بود، عبارت اول را اجرا می‌کند. در غیر این صورت، عبارت دوم را اجرا می‌کند.

۳️⃣ جدول پرش / ارسال (Jump / Dispatch Table)
مقدار-توابع را در یک شیء ذخیره می‌کند تا به‌طور سریع تابع مناسب را بر اساس مقدار (که به‌عنوان کلید شیء در نظر گرفته می‌شود) فراخوانی کند.

۴️⃣ ارسال پویا (Dynamic Dispatch)
این الگو شامل انتخاب متد پلیمورفیک (چندریختی) مناسب برای فراخوانی بر اساس نوع شیء است.

#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Mockup Ceacle
مجموعه‌ای از موکاپ‌های رایگان که بر اساس دسته‌بندی‌ها تقسیم‌بندی شده‌اند.

🔗https://mockup.ceacle.com/search?kind=all&view=all&order=popular&q=%22free%22
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
👍1
TypeIt

‏TypeIt یک کتابخانه جاوااسکریپت برای انیمیشن‌سازی تایپ متن است. این کتابخانه به شما امکان می‌دهد تا فرآیند تایپ متن را مستقیماً در صفحه وب شبیه‌سازی کنید و حس نوشتن واقعی را ایجاد کنید.

🔗https://github.com/alexmacarthur/typeit
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
Nicepage
در این سایت بیش از پانزده هزار قالب رایگان برای CSS جمع‌آوری شده است.

🔗https://nicepage.com/css-templates
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
🔥1
لیستی از سایت ها و کانال هایی که در آنها می توانید قالب های رایگان پیدا کنید

https://themelock.com/eng/
https://nullmart.net/
https://scriptmafia.org/category/templates/


https://t.me/ingressive4good
https://t.me/themelock
https://t.me/nullmart
https://t.me/DesignGoodies
https://t.me/EnvatoFreebies
https://t.me/michollo

اگر مورد دیگری را میشناسید در بخش نظرات مطرح کنید

#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Flexboxdefense

یک بازی در سبک Tower Defense است که در آن باید برج‌ها را با استفاده از فِلکس‌باکس به درستی قرار دهید تا از حملات دفاع کنید.


🔗http://www.flexboxdefense.com/
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
👏4
دینامیک کردن نام‌های ویژگی‌ها 🥸

وقتی درباره ویژگی‌های دینامیک در جاوااسکریپت صحبت می‌کنیم، معمولاً به انعطاف‌پذیری و راحتی آن فکر می‌کنیم: می‌توانیم اشیاء را در حین اجرا ایجاد کنیم بدون اینکه نیاز داشته باشیم همه کلیدها را از پیش بدانیم. اما مانند هر ابزار دیگری، مهم است که بدانیم کی از آن استفاده کنیم و چگونه از اشتباهات جلوگیری کنیم.

➡️ کی مفید است؟

به عنوان مثال، در هنگام توسعه سیستم‌های ردیابی رویدادها یا لاگ‌ها، معمولاً نیاز است که هر شیء کلید منحصر به فردی داشته باشد – برای مثال، بر اساس زمان وقوع رویداد. به جای ایجاد یک شیء استاتیک، می‌توان ویژگی دینامیک با برچسب زمانی که برای هر رویداد منحصر به فرد است، اضافه کرد.

function logEvent(event) {
const timestamp = new Date().toISOString();
return {
[timestamp]: event,
};
}

console.log(logEvent("User logged in")); // { '2024-11-11T09:19:04.939Z': 'User logged in' }

➡️ چه نکاتی باید در نظر گرفته شود؟

یکی از مشکلات بالقوه با کلیدهای دینامیک، امکان نداشتن ویژگی است. به عنوان مثال، در دسترسی به object[dynamicKey]، جاوااسکریپت تضمین نمی‌کند که این کلید واقعاً در شیء موجود باشد و در صورتی که نباشد، undefined را برمی‌گرداند؛
زمانی که کلیدها بر اساس متغیرها ایجاد می‌شوند، کد برای کسانی که بعداً آن را می‌خوانند کمتر قابل پیش‌بینی می‌شود. بنابراین، برای اینکه کد قابل فهم باقی بماند، نباید از ویژگی‌های دینامیک به طور افراطی استفاده کرد و باید ساختار داده‌ها مستند شود.

در نهایت، ویژگی‌های دینامیک می‌توانند زمان زیادی را برای شما صرفه‌جویی کرده و کد را ساده‌تر کنند، اما تنها در صورتی که با دقت از آن‌ها استفاده کنید. 👍

پ.ن. پیاده‌سازی‌ها برای درک راحت‌تر ساده شده‌اند :)

#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
👍1
گوگل کروم بازی دایناسور (T-Rex) را به‌صورت بی‌پایان در حالت عدم اتصال به اینترنت ارائه می‌دهد. بیایید کلاه هکرهایمان را به سر بگذاریم و کمی با این بازی دست‌کاری کنیم.

اگر قادر به مشاهده صفحه "بدون اینترنت" نیستید، یک تب جدید باز کرده و عبارت chrome://dino را وارد کنید و سپس اینتر بزنید. سپس کد زیر را در کنسول پیست کنید

function dispatchKey(type, key) {
document.dispatchEvent(new KeyboardEvent(type, {keyCode: key}));
}
setInterval(function () {
const KEY_CODE_SPACE_BAR = 32
const KEY_CODE_ARROW_DOWN = 40
const CANVAS_HEIGHT = Runner.instance_.dimensions.HEIGHT
const DINO_HEIGHT = Runner.instance_.tRex.config.HEIGHT

const obstacle = Runner.instance_.horizon.obstacles[0]
const speed = Runner.instance_.currentSpeed

if (obstacle) {
const w = obstacle.width
const x = obstacle.xPos // measured from left of canvas
const y = obstacle.yPos // measured from top of canvas
const yFromBottom = CANVAS_HEIGHT - y - obstacle.typeConfig.height
const isObstacleNearby = x < 25 * speed - w / 2

if (isObstacleNearby) {
if (yFromBottom > DINO_HEIGHT) {
// Pterodactyl going from above, do nothing
} else if (y > CANVAS_HEIGHT / 2) {
// Jump
dispatchKey("keyup", KEY_CODE_ARROW_DOWN)
dispatchKey("keydown", KEY_CODE_SPACE_BAR)
} else {
// Duck
dispatchKey("keydown", KEY_CODE_ARROW_DOWN)
}
}
}
}, Runner.instance_.msPerFrame);


#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
👍3
ویدیو دوبله شده در مورد شش سبک محبوب‌ معماری API [+لینک]
با میلیاردها درخواست API که روزانه انجام می‌شود، درک سبک‌های معماری API اهمیت بیشتری پیدا کرده است. این سبک‌ها ستون فقرات دنیای دیجیتال امروزی را تشکیل می‌دهند و واسط‌های برنامه‌نویسی کاربردی (API) نقش کلیدی در توسعه نرم‌افزارهای مدرن دارند.

🔗https://aparat.com/v/uka260b
#️⃣#tip #dub
👥@IR_javascript_group
🆔@IR_javascript
زمانی مدال‌ها عنصر نسبتاً پیچیده‌ای بودند که باعث ایجاد تعداد زیادی کتابخانه برای نمایش آن‌ها شد .

امروز، HTML <dialog> این کار را به‌راحتی و بدون دردسر انجام می‌دهد.

در اینجا یک مثال از یک مدال در ۳۰ خط کد با اورلی، امکان بسته شدن با کلیک خارج از پنجره و فشردن دکمه ESC، همراه با پشتیبانی از دسترس‌پذیری و دیگر استانداردهای W3C آورده شده است:

<script setup lang="ts">
import { ref } from "vue";

const dialog = ref(null);

function show() {
dialog.value.showModal();
}
function close() {
dialog.value.close();
}

function onClick($event) {
if ($event.target === dialog.value) {
dialog.value.close();
}
}

defineExpose({ show, close });
</script>

<template>
<dialog
ref="dialog"
role="textbox"
tabindex="0"
@click="onClick"
>
<slot />
</dialog>
</template>

<style scoped></style>

استفاده:

const holaModal = useTemplateRef("holaModal");

// holaModal.value.show();
...
<ModalDialog ref="holaModal">
<div>Hola!</div>
<button @click="holaModal.close()">
Close
</button>
</ModalDialog>




#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
شهادت مظلومانه دخت پیامبر ام ابیها مظلومه عالم خلقت حضرت فاطمه الزهرا سلام الله بر تمامی شیعیان تسلیت باد .

#️⃣#event
👥@IR_javascript_group
🆔@IR_javascript
15