tgindex

| کانال توسعه‌دهندگان جاوااسکریپت |

описание

⭕️ کانال توسعه‌دهندگان جاوااسکریپت دولوپیکس 💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport

3 920
подписчиков

Лучшие посты

за три месяца
  • 30 мая1 655 просмотров3 реакций7 пересылок

    در نمونه‌کد بالا برای فیلتر کردن یک آرایه بزرگ، در هر بار تکرار حلقه دوباره sort و filter روی کل داده‌ها اجرا شده که هم باعث پیچیدگی زمانی بسیار بالا (حدود O(n² log n)) و هم مصرف اضافی مموری می‌شود. در نسخهٔ بهبود‌یافته، ابتدا داده‌ها یک‌بار نرمال‌سازی و مرتب می‌شوند و سپس فقط یک‌بار روی آن‌ها فیلتر و جست‌وجو انجام می‌گیرد. به نظر شما چرا استفاده از متغیرهای میانی و جلوگیری از ایجاد آرایه‌های موقت متعدد می‌تواند در این سناریو باعث کاهش مصرف مموری و افزایش سرعت برنامه، مخصوصاً روی لیست‌های بزرگ (مثلاً > ۱۰۰هزار آیتم)، شود؟ 🔖 #Javascript #JS #جاوااسکریپت 👤 Developix 💎 Channel: @DevelopixJavascript

  • 30 мая1 534 просмотров7 пересылок

    без подписи

  • 29 июн.1 503 просмотров3 реакций4 пересылок

    خروجی این کد JavaScript چیست؟ در این مثال از prototype chain و shadowing روی یک property استفاده شده است. با دقت به ترتیب اجرا و این‌که هر بار چه مقداری log می‌شود توجه کنید و خروجی نهایی را به ترتیب سطرها بنویسید. const base = { value: 1, inc() { this.value++; console.log("base:", this.value); } }; const obj = Object.create(base); obj.value = 10; obj.inc(); base.inc(); delete obj.value; obj.inc(); base.value = 100; obj.inc(); خروجی دقیق این کد در console چه خواهد بود؟ (همه سطرهای خروجی را به ترتیب بنویسید) 🔖 #Javascript #JS #جاوااسکریپت 👤 Developix 💎 Channel: @DevelopixJavascript

  • 26 июн.1 441 просмотров3 реакций4 пересылок

    💠 نسخه جدید ران‌تایم دینو (Deno) منتشر شده است 🔸 ارتقا از نسخه 2.8.3 به 2.9.0 🔹 لیست تغییرات این نسخه: - افزوده شدن زیرکامند جدید deno desktop برای ساخت اپ دسکتاپ - اضافه شدن زیرکامندهای جدید deno watch / deno link / deno list در CLI - پشتیبانی نصب و قفل‌سازی از bun، pnpm، yarn، npm و بهبود node_modules - افزوده شدن قابلیت‌های پیشرفته تست مثل Deno.test.each، snapshot، shard و retry - پشتیبانی کامل‌تر از Node-API v10 و node:test mocks برای سازگاری بیشتر با Node.js - بهبودهای فرمت‌دهی، پوشش کد و شبکه، به‌روزرسانی WebCrypto و غیره 🔖 #deno, #js, #release 💎 @DevelopixJavascript

  • 16 июн.1 273 просмотров1 реакций

    🏆آفرهای جام جهانی ۲۰۲۶ هاست‌ایران فعال شد! با کمپین «ترکیب برنده سایتت»، زیرساخت سایتت رو برای روزهای پرترافیک آماده کن: 🔥 ۲۵٪ تخفیف روی پلن‌های ۳ ماهه هاست اشتراکی ایران ⚡ ۵۰٪ تخفیف روی پلن‌های یک‌ماهه سرویس ابری در دیتاسنترهای تهران، مشهد و اهواز 🧠 مشاوره رایگان زیرساخت توسط کارشناسان هاست‌ایران فرصت استفاده از تخفیف‌ها و ثبت فرم مشاوره محدود است. 📌 برای کپی کدهای تخفیف و ثبت‌نام در فرم مشاوره، روی لینک زیر کلیک کنید: 📌صفحه فرم مشاوره 📌تلگرام هاست‌ایران 📌بله هاست‌ایران #هاست_ایران #سرور_ابری_هاست_ایران #هاست_اشتراکی #دیتاسنتر #مشاوره_زیرساخت #جام_جهانی2026

  • 14 июн.1 235 просмотров6 реакций5 пересылок

    ⏱ جلوگیری از اجرای اضافی event با debounce ساده تو پروژه‌های فرانت، eventهایی مثل scroll و input می‌تونن تو هر ثانیه ده‌ها بار فایر بشن و باعث لگ، مصرف CPU و رندر اضافه بشن. یک تکنیک ساده برای کنترل این ماجرا، استفاده از debounce هست. 😉 ایده: تا وقتی کاربر داره پشت‌سرهم تایپ یا اسکرول می‌کنه، تابع اصلی اجرا نشه؛ فقط وقتی یک مدت کوتاه هیچ eventی نیومد، تابع رو صدا بزن. function debounce(fn, delay) { let timeoutId; return function (...args) { if (timeoutId) clearTimeout(timeoutId); timeoutId = setTimeout(() => { fn.apply(this, args); }, delay); }; } const handleSearch = debounce((event) => { console.log("Search:", event.target.value); }, 400); const input = document.querySelector("#search"); input.addEventListener("input", handleSearch); 💡 این کار تعداد requestهای سرچ، رندر مجدد و لاگ‌ها رو به‌شدت کم می‌کنه و UX نرم‌تری می‌سازه. مرجع بیشتر در مورد timing ها و eventها: MDN - setTimeout امتحانش روی inputهای سرچ یا resize و scroll نتیجه خیلی ملموسی می‌دهد. 🚀 🔖 #Javascript #JS #جاوااسکریپت #JavaScript #debounce #performance #events #frontend 👤 Developix 💎 Channel: @DevelopixJavascript

  • 25 июн.1 215 просмотров4 реакций3 пересылок

    💠 نسخه جدید ران‌تایم نود جی‌اس (NodeJS) منتشر شده است 🔸 ارتقا از نسخه 26.3.1 به 26.4.0 🔹 لیست تغییرات این نسخه: - به‌روزرسانی وضعیت پایداری blockList به «کاندید انتشار» - پشتیبانی از بافر سفارشی در fs.readFile() - افزودن بسته‌مپ‌ها در لودر ماژول‌ها (package maps) - افزودن گزینه فشرده‌سازی گواهی در TLS - افزودن گزینه‌های جدید TCP keepalive در net.setKeepAlive() - افزودن زیرسیستم جدید node:vfs و تغییرات مرتبط، و غیره 🔖 #nodejs, #web, #js, #release 💎 @DevelopixJavascript

  • 8 июл.1 200 просмотров7 реакций4 пересылок

    💠 نسخه جدید ران‌تایم نود جی‌اس (NodeJS) منتشر شده است 🔸 ارتقا از نسخه 26.4.0 به 26.5.0 🔹 لیست تغییرات این نسخه: - افزودن متد جدید blob.textStream() در ماژول buffer - افزودن فلگ جدید --experimental-import-text برای ESM - افزودن نمونه‌برداری تأخیر هر چرخه رویداد در perf_hooks - افزودن و اکسپوز کردن ReadableStreamTee در ماژول stream - گزارش گروه‌های مذاکره‌شده TLS در ماژول tls - سایر بهبودها و به‌روزرسانی‌های داخلی و مستندات، و غیره 🔖 #nodejs, #web, #js, #release 💎 @DevelopixJavascript

  • 14 июл.1 182 просмотров8 реакций20 пересылок

    ساخت TODO List یکی از بهترین تمرین‌های واقعی برای جا افتادن مفاهیم DOM، event ها و ذخیره داده‌ها در مرورگر است. این بار بدون React و فریم‌ورک، فقط با Vanilla JS و LocalStorage 💪 منبع اصلی ایده و توضیحات: آموزش MDN درباره Web Storage API و مستندات DOM Manipulation. ایده کلی 👇 یک فرم ساده داریم برای اضافه‌کردن task ها، لیست را با JS توی DOM رندر می‌کنیم و هر تغییری که کاربر می‌دهد را در localStorage ذخیره می‌کنیم تا بعد از refresh هم از بین نرود. نکته خوبش این است که با همین مثال ساده، چند تا چیز مهم جا می‌افتد: • کار با querySelector و ساخت element های جدید • مدیریت event ها مثل submit و click • تبدیل array به string و برعکس با JSON.stringify و JSON.parse • sync نگه‌داشتن UI با state ذخیره‌شده در localStorage یک اسکلت ساده از کد 👇 <!-- index.html --> <form id="todo-form"> <input id="todo-input" placeholder="کار جدید..." /> <button type="submit">اضافه کن</button> </form> <ul id="todo-list"></ul> <script src="app.js"></script> و فایل جاوااسکریپت: // app.js const form = document.querySelector("#todo-form"); const input = document.querySelector("#todo-input"); const list = document.querySelector("#todo-list"); const STORAGE_KEY = "jsdev_todos"; let todos = loadTodos(); render(); form.addEventListener("submit", (e) => { e.preventDefault(); const text = input.value.trim(); if (!text) return; todos.push({ id: Date.now(), text }); input.value = ""; saveTodos(); render(); }); list.addEventListener("click", (e) => { if (!e.target.matches("button[data-id]")) return; const id = Number(e.target.dataset.id); todos = todos.filter((t) => t.id !== id); saveTodos(); render(); }); function loadTodos() { const raw = localStorage.getItem(STORAGE_KEY); try { return raw ? JSON.parse(raw) : []; } catch { return []; } } function saveTodos() { localStorage.setItem(STORAGE_KEY, JSON.stringify(todos)); } function render() { list.innerHTML = ""; todos.forEach((todo) => { const li = document.createElement("li"); li.textContent = todo.text + " "; const btn = document.createElement("button"); btn.textContent = "حذف"; btn.dataset.id = todo.id; li.appendChild(btn); list.appendChild(li); }); } چند نکته ریز ولی مهم 🧠 • همیشه روی داده localStorage یک try...catch بگذار که اگر خراب شد (مثلاً دستی ویرایش شده بود) اپ کرش نکند. • از یک key ثابت مثل jsdev_todos استفاده کن تا اگر بعداً چند بخش دیگر هم اضافه شد، تداخل نداشته باشند. • برای id ها اینجا از Date.now() استفاده شده، که برای پروژه‌های کوچک کافی است. با همین ساختار پایه می‌شود بعدها checkbox برای completed، فیلتر، و حتی sync ساده با backend هم اضافه کرد. یک بار این نمونه را تا انتها بساز، بعد هر جای اپ‌های واقعی که state و UI sync می‌شوند خیلی قابل فهم‌تر به نظر می‌رسد ⚡️ اگر ساختی و کمی شخصی‌سازی‌اش کردی، نسخه‌ات را برای بقیه بچه‌های جاوااسکریپت هم بفرست؛ همین مثال‌های کوچک کم‌کم تبدیل به component و pattern های جدی‌تر می‌شوند. 🔖 #Javascript #JS #جاوااسکریپت #JavaScript #LocalStorage #DOM #VanillaJS #Frontend 👤 Developix 💎 Channel: @DevelopixJavascript

  • 22 июл.1 061 просмотров1 реакций2 пересылок

    با Migration Boost هاست‌ایران، برای مهاجرت به سرور ابری دوباره هزینه ترافیک نده! 🚀 با خرید اولین سرور ابری غیرساعتی از **هاست‌ایران**، بسته ترافیک هدیه مهاجرت به‌صورت خودکار برای سرویس شما فعال می‌شود: ✅ حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت ✅ افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه ✅ ترافیک آپلود رایگان ✅ بدون محدودیت زمانی سرور ابری هاست‌ایران را راه‌اندازی کنید و بکاپ‌ها، فایل‌ها و پایگاه داده خود را بدون دغدغه هزینه‌های پنهان ترافیک منتقل کنید. 👇 مشاهده پلن‌های سرور ابری هاست‌ایران hostiran.club/Migration hostiran.club/Migration

  • 29 июл.924 просмотров9 пересылок

    без подписи

  • 29 июл.921 просмотров9 пересылок

    در کد زیر یک اشتباه رایج در استفاده از async/await داخل حلقه دیده می‌شود که باعث اجرای سریالی درخواست‌ها و کند شدن شدید برنامه در مواجهه با تعداد آیتم‌های زیاد می‌شود. در نسخه‌ی اصلاح‌شده با استفاده از Promise.all و تبدیل حلقه به مجموعه‌ای از Promiseها، همه‌ی درخواست‌ها به صورت موازی اجرا می‌شوند و در سناریوهایی مثل فراخوانی چندین API مستقل، زمان پاسخ برنامه به شکل چشم‌گیری کاهش پیدا می‌کند. به نمونه‌کد بالا دقت کنید: در چه شرایطی استفاده از Promise.all به جای await داخل حلقه می‌تواند بهترین انتخاب برای بهبود Performance و کاهش زمان اجرای کل عملیات باشد؟ 🔖 #Javascript #JS #جاوااسکریپت 👤 Developix 💎 Channel: @DevelopixJavascript

  • 4 авг.709 просмотров4 реакций5 пересылок

    💠 نسخه جدید ران‌تایم نود جی‌اس (NodeJS) منتشر شده است 🔸 ارتقا از نسخه 26.5.1 به 26.6.0 🔹 لیست تغییرات این نسخه: - افزودن تابع جدید ffi.getCurrentEventLoop - افزودن context.log() و رویداد test:log در test_runner - گزارش فیلد entryFile در رویدادهای TestStream - بهبودهای کارایی رویدادها و once()/removeListener() - قابلیت انتقال TCP Server و Socket بین worker threads - به‌روزرسانی وابستگی‌ها (npm 11.18.0، V8، OpenSSL، zlib و غیره) 🔖 #nodejs, #web, #js, #release 💎 @DevelopixJavascript

  • 6 авг.681 просмотров2 реакций3 пересылок

    💠 نسخه جدید ران‌تایم نود جی‌اس (NodeJS) منتشر شده است 🔸 ارتقا از نسخه 26.6.0 به 26.7.0 🔹 لیست تغییرات این نسخه: - پشتیبانی از بارگذاری کلید خصوصی با STORE loaderها در crypto - به‌روزرسانی ریشه‌گواهی‌ها به NSS 3.125 در crypto - افزودن پشتیبانی Perfetto برای پروفایلینگ کارایی - پیاده‌سازی Symbol.dispose در ModuleHooks ماژول‌ها - افزودن فلگ --test-coverage-include-all به test_runner - به‌روزرسانی npm به نسخه 11.19.0 و سایر وابستگی‌ها و غیره 🔖 #nodejs, #web, #js, #release 💎 @DevelopixJavascript

  • 13 авг.333 просмотров5 реакций3 пересылок

    без подписи

  • 13 авг.296 просмотров7 реакций6 пересылок

    без подписи