𝗖𝗢𝗢𝗟𝗬 𝗖𝗢𝗗𝗘 | کولی کد
3 subscribers
223 photos
77 videos
6 files
351 links
Download Telegram
𝗖𝗢𝗢𝗟𝗬 𝗖𝗢𝗗𝗘 | کولی کد
#WhatsThat #javascript #object * متد Object.defineProperty در جاوااسکریپت چیست ؟  * #part1 یکی از روش‌های قدرتمند در جاوااسکریپت برای تعریف یا تغییر ویژگی‌های یک شیء به صورت دقیق و کنترل شده Object.defineProperty است. با استفاده از این متد، می‌توانید ویژگی‌های…
#javascript #js_trick #object


* متد Object.defineProperty در جاوااسکریپت چیست ؟  *
#part2

توی پارت قبلی به معرفی متد Object.defineProperty پرداختیم و ویژگی های کلیدی و ارگومان های مختلف این متد رو بررسی کردیم :

obj | prop | descriptor


و متوجه شدیم که با آرگومان descriptor میتونیم یسری ویژگی های جدید رو به پروپرتی خودمون اضافه کنیم تا کنترل بهتری روی پروپرتی خودمون داشته باشیم، حالا توی این پارت قراره که به صورت جزئی تر به مقادیر آرگومان descriptor بپردازیم و دونه به دونه با هم دیگه بررسی‌شان کنیم


مقادیر آرگومان descriptor 🚀

value : مقدار اولیه ویژگی.

configurable : مقدار بولینی که مشخص می‌کند آیا می‌توان ویژگی را حذف کرد یا تعریف آن را تغییر داد. 🛑🔁

enumerable : یک مقدار بولین که مشخص می‌کند آیا ویژگی در یک حلقه for...in ظاهر می‌شود یا خیر. 👁️‍🗨️

writable : یک مقدار بولین که مشخص می‌کند آیا می‌توان مقدار ویژگی را تغییر داد. 📝

get : یک تابع که بعنوان گِتِر برای پروپرتی ما عمل میکند.

set : یک تابع که به عنوان سِتِر برای پروپرتی ما عمل می‌کند.

مثال عملی :

const person = {};

Object.defineProperty(person, 'name', {
  value: 'علی',
  writable: false,
  enumerable: true,
  configurable: false
});

console.log(person.name); // خروجی: علی

person.name = 'حسن' ;


ℹ️ در این مثال، ما یک ویژگی جدید به نام name با مقدار اولیه علی به آبجکت person اضافه کردیم. همچنین مشخص کردیم که این ویژگی قابل تغییر نیست، در حلقه‌های for...in قابل مشاهده است و نمی‌توان آن را حذف کرد.

⚠️ در نتیجه خط اخر با خطا مواجه میشود زیرا ویژگی writable را برابر با false قرار دادیم و پروپرتی name قابل تغییر نیست.

💥 توی پارت بعدی که پارت پایانی هستش درمورد دو پروپرتی set و get در descriptor به صورت کامل صحبت میکنیم و به صورت جزئی به بررسی این دو ویژگی می‌پردازیم

Channel | YouTube | Instagram
#javascript #js_trick


* تبدیل مقادیر آرایه از String به Number *

یکی از روش های جالب برای تبدیل تایپ همه آیتم های یک آرایه از string به number استفاده از روش زیر هست

const stringNumbers = ["12", "4.36", "2000", "mohammad"];

const numbers = stringNumbers.map(Number);

console.log(numbers);


خروجی کد 🧑‍💻
[457, 5.36, NaN, 4500]



توی این کد متد map روی آرایه stringNumbers اعمال می‌شود. این متد هر عنصر آرایه را به یک تابع (در اینجا تابع Number) پاس می‌دهد و نتیجه را در یک آرایه جدید قرار می‌دهد.
تابع Number تلاش می‌کند که هر رشته را به یک عدد تبدیل کند. اگر رشته قابل تبدیل به عدد نباشد، NaN برمی‌گرداند.

در نهایت برای حذف مقادیر NaN میایم و فیلترشون میکنیم :

const filteredNumbers = numbers.filter(number => !isNaN(number));

console.log(filteredNumbers);


و توی خروجی فقط اعداد درست رو دریافت میکنیم

[457, 5.36, 4500]


Channel | YouTube | Instagram
𝗖𝗢𝗢𝗟𝗬 𝗖𝗢𝗗𝗘 | کولی کد
#javascript #js_trick #object * متد Object.defineProperty در جاوااسکریپت چیست ؟  * #part2 توی پارت قبلی به معرفی متد Object.defineProperty پرداختیم و ویژگی های کلیدی و ارگومان های مختلف این متد رو بررسی کردیم : obj | prop | descriptor و متوجه شدیم که با…
#javascript #js_trick #object


* متد Object.defineProperty در جاوااسکریپت چیست ؟  *
#part3

توی پارت های قبلی ( یک و دو ) به معرفی متد Object.defineProperty پرداختیم و ویژگی های کلیدی و ارگومان های مختلف این متد رو بررسی کردیم.

حالا توی این پست قراره که پروپرتی های get و set که متعلق به آرگومان descriptor هستند رو باهم بررسی کنیم.


مفهوم getter چیست ؟

گِتِر تابعی است که هر زمان به مقدار یک ویژگی دسترسی پیدا می‌کنید، فراخوانی می‌شود.
به جای بازگرداندن مقدار مستقیم ویژگی، getter می‌تواند یک محاسبه انجام دهد یا مقدار را از منبع دیگری دریافت کند.

مفهوم setter چیست ؟

سِتِر تابعی است که هر زمان مقداری به یک ویژگی نسبت داده می‌شود، فراخوانی می‌شود.
به جای جایگزینی مستقیم مقدار ویژگی، setter می‌تواند مقدار جدید را تغییر دهد یا قبل از ذخیره سازی آن، یک عملیات اعتبارسنجی انجام دهد.

بریم تو مثال عملی ببینیم چیکار میکنند 🚀

const obj = {};

let value = 0;

Object.defineProperty(obj, 'prop', {
    get() {
        return value;
    },
    set(newValue) {
        value = newValue + 1;
    },
    configurable: true,
    enumerable: true
});

obj.prop = 10;
console.log(obj.prop);


set :
وقتی obj.prop = 10 را می‌نویسیم، در واقع setter فراخوانی می‌شود و مقدار value به ۱۱ تغییر می‌کند.

get :
وقتی console.log(obj.prop) را می‌نویسیم، در واقع getter فراخوانی می‌شود و مقدار فعلی value که ۱۱ است در خروجی چاپ خواهد شد.

کاربردهای عملی set و get

محاسبه مقادیر : می‌توانید از getter برای محاسبه مقادیر بر اساس مقادیر دیگر استفاده کنید. 👇

const person = {
   firstName: "ali",
   lastName: "ahmadi"
};

Object.defineProperty(person, 'fullName', {
  get() {
    return ${this.firstName} ${this.lastName}.toUpperCase();
  }
});

console.log(person.fullName);

خروجی :
ALI AHMADI


اعتبارسنجی داده‌ها : می‌توانید از setter برای اطمینان از اینکه مقادیر ورودی معتبر هستند، استفاده کنید. 👇

const person = {};

Object.defineProperty(person, 'age', {
  get() {
    return this._age;
  },
  set(newAge) {
    if (newAge < 0) {
      throw new Error('سن نمی‌تواند منفی باشد.');
    }
    this._age = newAge;
  }
});

person.age = 30;
console.log(person.age); // خروجی: 30

try {
  person.age = -5;
} catch (error) {
  console.error(error.message); // خروجی: سن نمی‌تواند منفی باشد.
}


و این هم از پارت آخر متد Object.defineProperty

یک مقدار طولانی شد به این دلیل که دوسداشتم این متد رو به خوبی درک کنید ❤️

Channel | YouTube | Instagram
#javascript #js_trick #object

* چرا باید از ()Object.is در مقایسه برابری استفاده کنید ؟ *

در جاوا اسکریپت از عملگر == برای مقایسه برابری دو مقدار استفاده می‌شود. با این حال، این عملگر به دلیل تبدیل خودکار نوع داده‌ها (coercion) می‌تواند نتایج غیرمنتظره‌ای را به همراه داشته باشد. برای مثال :

console.log(0 == ""); // true console.log(null == undefined); // true


در مقابل، === مقایسه برابری دقیق تری را انجام می‌دهد و به نوع داده‌ها توجه می‌کند. 👇


console.log(0 === ""); // false
console.log(null === undefined); // false


* حالا بریم بینیم متد Object.is دقیقا چیه ؟ 🤔 *

این متد یک روش جدید در جاوااسکریپت است که برای مقایسه برابری دقیق دو مقدار، مشابه === ، عمل می‌کند. با این تفاوت که Object.is در موارد خاص مانند مقایسه NaN، -0 و +0، نتایج دقیق‌تری ارائه می‌دهد.

* 💥 مثال عملی 👇 *

const a = NaN;
const b = 0 / 0;

console.log(a === b); // false
console.log(Object.is(a, b)); // true


در این قطعه کد دو متغیر به نام‌های a و b تعریف میکنیم و هر دو را برابر با مقدار NaN قرار می‌دهیم. این مقدار ( NaN ) معمولاً زمانی ایجاد می‌شود که یک عملیات ریاضی منجر به نتیجه‌ای نامعتبر شود، مانند تقسیم صفر بر صفر.

1مقایسه اول ( a ===b ) : این مقایسه از عملگر برابری دقیق (===) استفاده می‌کند که هم مقدار و هم نوع داده‌ای دو متغیر را بررسی می‌کند. در این مورد، هر دو متغیر مقدار NaN دارند اما === باز هم false را برمی‌گرداند. دلیل این اتفاق این است که در استاندارد IEEE 754 (استاندارد اعداد ممیز شناور)، NaN با خودش برابر نیست.


2 مقایسه دوم ( Object.is(a, b) ) : این مقایسه از متد Object.is استفاده می‌کند که برای مقایسه برابری دو مقدار طراحی شده است. این متد در بیشتر موارد مانند === عمل می‌کند، اما در مورد NaN رفتاری متفاوت دارد. Object.is تشخیص می‌دهد که هر دو متغیر مقدار NaN دارند و بنابراین true را برمی‌گرداند.


* مزایای استفاده از این متد چیه ؟ *

دقت بیشتر : این متد در مقایسه با == و === دقت بیشتری در مقایسه برابری دارد 🚀

خوانایی کد: استفاده از این متد کد شما را خواناتر و قابل فهم‌تر می‌کند

سازگاری با استانداردها: این متد بخشی از استاندارد های ECMAScript 2015 است و در اکثر مرورگرهای مدرن پشتیبانی می‌شود

Channel | YouTube | Instagram
#javascript #js_trick #unary_operators

* عملگرهای یکانی (unary operators) در جاوااسکریپت *

این نوع از عملگر ها فقط بر روی یک عملوند ( یک مقدار یا متغیر ) عمل می‌کنند. به زبان ساده، عملگرهایی هستند که فقط یک ورودی دارند و کار خاصی رو بر روی آن انجام می‌دهند.

این عملگرها عملیات مختلفی مانند افزایش/کاهش، ارزیابی نوع داده، منفی کردن یک مقدار و غیره را انجام می‌دهند


بریم چند موردش رو تو کد ببینیم 🚀


عملگر بیتی (~) : بیت‌های یک عدد را معکوس می‌کند.
let x = 5; // در باینری: 0000000000000000000000000000010
x = ~x; // در باینری: 11111111111111111111111111111010


عملگر void : هر مقداری را نادیده می‌گیرد و undefined برمی‌گرداند
function exampleFunction() {
    return 42; // این مقدار برگشتی تابع است
}

console.log(void exampleFunction()); // undefined


اگر دوست داشتید در مورد بقیه unary operator ها بدونید توی پست زیر به طور کامل بررسیشون کردیم 🔥

https://www.instagram.com/p/C-a5UK5swFQ

Channel | YouTube | Instagram
#javascript #triks #js_trick

● استفاده از Optional Chaining در جاوااسکریپت ●

وقتی میخواید به یک پروپرتی در یک آبجکت دسترسی پیدا کنید و مطمئن نیستید که آیا اون پروپرتی وجود داره یا نه، میتونید از Optional Chaining استفاده کنید تا از ارور جلوگیری کنید

مثل عملی 🚀

let user = {
  name: "Ali",
  address: {
    city: "Tehran"
  }
};

console.log(user.address?.city); // "Tehran"
console.log(user.contact?.phone); // undefined (بدون ارور)



ممنون میشم با ری‌ اکشنای خودتون بهمون انرژی بدید ❤️
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
Channel | Group | YouTube | Instagram
🔒 مخفی کردن قسمتی از اطلاعات حساس با JavaScript

خیلی وقتا نیاز داریم که تنها بخشی از یک داده حساس مثل شماره تلفن، شماره کارت بانکی و غیره را نمایش بدیم و باقی اون رو با کاراکترهای خاصی مثل * کاور کنیم. با استفاده از این کد ساده در جاوا اسکریپت، میتونید این کار رو به راحتی انجام بدید 🚀

const mask = (value) => {
return value.trim().slice(-4).padStart(value.length, '*');
}

console.log(mask('09121111111'));

// خروجی => 1111*******


اگه خوشت اومد برای پستای بیشتر مارو دنبال کن ❤️

#javascript #trick #js_trick
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
Channel | Group | YouTube
#javascript  #js_trick


نزار بیشتر از یک بار کلیک کنه

برای اطمینان از اینکه یک ایونتی فقط یک بار اجرا بشه داخل جاوااسکریپت، میتونید از ویژگی once توی ارگومان سوم ایونتتون استفاده کنید.

button.addEventListener('click',() => {
alert('سلام رفیق 👋');
}, { once: true });


🌐 مشاده آنلاین مثال استفاده واقعی

🆔 Channel | Group | YouTube
#javascript #js_trick

اطلاعات کامل باتری با جاوااسکریپت🔋

با استفاده از Battery Status Api میتونید سطح باتری، وضعیت شارژ شدن و دیگر اطلاعات مرتبط با باتری رو به دست بیارید و ازشون استفاده کنید.

نمونه کد 🚀

navigator.getBattery().then(battery => {
console.log(`Battery level: ${battery.level * 100}%`);
console.log(`Is charging: ${battery.charging ? 'Yes' : 'No'}`);
});


🌐 استفاده واقعی در وبسایت

🆔 Channel | Group | YouTube
#WhatsThat #javascript #window


آبجکت window چیه و چه کار هایی برای ما انجام می‌ده ؟

آبجکت window یک global object هستش که درواقع نماینده پنجره فعلی مرورگریه که اسکریپت شما در حال اجراست و یه جورایی می‌شه گفت که این window مثل مدیر ساختمونه که همه اتاقا و وسایل رو کنترل می‌کنه.

1️⃣ مدیریت تب‌های مرورگر

می‌تونی با window.open یه تب جدید باز کنی یا با window.close یه تب رو ببندی.

let myWindow = window.open("https://example.com")
// بستن تب باز شده بعد از 5 ثانیه
setTimeout(() => {
    myWindow.close();
}, 5000);


2️⃣ دسترسی به ابعاد پنجره

می‌تونی با window.innerWidth و window.innerHeight بفهمی اندازه فعلی پنجره فعلی چقدره. این خیلی به دردت می‌خوره وقتی می‌خوای سایز یه عنصر رو نسبت به اندازه صفحه تنظیم کنی.

let width = window.innerWidth;
let height = window.innerHeight;

let myDiv = document.getElementById("myDiv");

myDiv.style.width = (width / 2) + "px";
// نصف عرض پنجره

myDiv.style.height = (height / 3) + "px";
// یک سوم ارتفاع پنجره


3️⃣ ذخیره اطلاعات کاربر در LocalStorage

با window.localStorage می‌تونی اطلاعات کاربر رو ذخیره کنی که حتی بعد از بستن و باز کردن مرورگر هم باقی بمونه. مثلا یه کاربر می‌تونه تم سایت رو عوض کنه و بعداً همون تم دوباره براش لود بشه.

// ذخیره اطلاعات
window.localStorage.setItem("theme", "dark");

// خوندن اطلاعات
let theme = window.localStorage.getItem("theme");
console.log("تم انتخاب شده: " + theme);

// پاک کردن اطلاعات
window.localStorage.removeItem("theme");


4️⃣ کنترل URL

با window.location می‌تونی آدرس URL رو بخونی یا عوض کنی. مثلا کاربر رو به یه صفحه دیگه هدایت کنی.

// خوندن آدرس فعلی صفحه
console.log("آدرس فعلی: " + window.location.href);

// هدایت کاربر به صفحه دیگه
window.location.href = "https://example.com";

// تغییر قسمتی از URL بدون لود مجدد صفحه
window.location.hash = "section1"; // کاربر رو به بخش مشخصی از صفحه هدایت می‌کنه


5️⃣ تعامل با کاربر از طریق آلرت‌ها

می‌تونی با window.alert() یه پیام پاپ‌آپ به کاربر نشون بدی یا با window.prompt() ازش چیزی بپرسی.

// نمایش پیام ساده
window.alert("به وبسایت ما خوش آمدید!");

// پرسیدن سوال از کاربر
let name = window.prompt("اسمت چیه؟");
console.log("اسمی که کاربر وارد کرده: " + name);

// گرفتن تأییدیه از کاربر
let result = window.confirm("آیا مطمئن هستید که می‌خواهید ادامه دهید؟");
if (result) {
    console.log("کاربر ادامه داد");
} else {
    console.log("کاربر لغو کرد");
}


در کل همه اینها یسری از قابلیت های پر کاربرد آبجکت window بودن، به زودی یه پست دیگه درست میکنم تا متد های بیشتری از window رو‌ بررسی کنیم

🌐 مشاهده داکیومنت window

🆔 Channel | Group | YouTube
#javascript #geolocation

💎 گرفتن لوکیشن کاربر با جاوااسکریپت 💎

با استفاده از Geolocation API در جاوااسکریپت می‌تونید به سادگی موقعیت جغرافیایی کاربر رو دست بیارید و توی بخش های مختلف ازش استفاده کنید.

این API به شما اجازه می‌ده با دریافت اجازه از کاربر، عرض و طول جغرافیایی دقیقش رو به دست بیارید.


نمونه کد 🚀
navigator.geolocation.getCurrentPosition((position) => {
console.log(`
Lat:${position.coords.latitude},
Long:${position.coords.longitude}
`);
});


🌐 مثال استفاده در پروژه واقعی

🆔 Channel | Group | YouTube
This media is not supported in your browser
VIEW IN TELEGRAM
منطق جاوااسکریپت :

- ولی حالا جدایی ازینا js خفن و گوگلیه :)😂

#️⃣ #fun #javascript

🚀@coolycode
میدونستید با استفاده از متد vibrate داخل جاوااسکریپت میتونید ویبره گوشی کاربر رو مدیریت کنید ؟

🔸 برای استفاده ازشم کافیه از گلوبال آبجکت navigator متد vibrate رو کال بکنید و به عنوان ورودی بهش مدت زمان ویبره رو به میلی‌ثانیه بهش بدید

نمونه کد 🚀
navigator.vibrate(200);


💎 مشاهده استفاده عملی
توی پروژه بالا براتون یه مثال عملی از این متد رو براتون گذاشتم‌ 🔺


🌐 داکیومنت متد vibrate

#️⃣ #javascript #vibrate

🚀 @coolycode
معرفی Symbol در جاوااسکریپت

سیمبل ( Symbol ) درواقع یک نوع داده ( data type ) در جاوااسکریپت است که برای ایجاد شناسه‌های منحصر به فرد استفاده می‌شود. هر Symbol حتی اگر با همان توضیحات ایجاد شده باشد، یکتا و غیرقابل تکرار است. این ویژگی باعث می‌شود که Symbol به خصوص برای تعریف کلیدهای یکتا در اشیاء و جلوگیری از تداخل نام‌ها مفید باشد.

🚀 مثال عملی
   const sym1 = Symbol('test')
   const sym2 = Symbol('test');
   console.log(sym1 === sym2); // false


🌐 مشاهده داکیومنت Symbol

#️⃣ #javascript #symbol

🚀 @coolycode
لیزی لودینگ (Lazy Loading) چیست ؟ 🦥

لیزی لودینگ تکنیکی است که به بارگذاری تأخیری محتوای غیرضروری تا زمانی که کاربر به آن نیاز داشته باشد کمک می‌کند. به جای اینکه همه منابع (تصاویر، ویدیوها یا کامپوننت‌های سنگین) به‌صورت همزمان با بارگذاری اولیه صفحه، بارگذاری شوند، این منابع فقط زمانی که کاربر به آن‌ها اسکرول کند یا نیاز داشته باشد، بارگیری می‌شوند.

ویژگی‌های کلیدی لیزی لودینگ

افزایش سرعت بارگذاری اولیه
با بارگذاری محتوای ضروری، صفحات سریع‌تر لود می‌شوند.

کاهش استفاده از پهنای باند
چون محتوای غیرضروری به‌صورت همزمان لود نمی‌شود، مصرف داده کاهش می‌یابد.

بهبود تجربه کاربری
کاربران تجربه بهتری از سرعت و عملکرد صفحه خواهند داشت.


چجوری از لیزی لودینگ استفاده کنیم ... ⁉️😁

🔸 برای استفاده از لیزی لودینگ، می‌تونید از اتریبیوت HTML5 زیر برای تصاویر استفاده کنید.

<img src="image.jpg" alt="Sample Image" loading="lazy" />

با استفاده از اتریبیوت loading با مقدار lazy، مرورگر تصویر را تنها زمانی که کاربر به آن نزدیک می‌شود یا به آن نیاز پیدا می‌کند (مثلاً وقتی اسکرول می‌کند) بارگذاری می‌کند.
🔸 در فریم‌ورک‌هایی مانند React.js، می‌تونید با استفاده از تکنیک‌هایی مثل React.lazy و Suspense کامپوننت‌های غیرضروری زو به‌صورت لیزی لود کنید

const LazyComponent = React.lazy(() => import('./MyComponent'));

function App() {
return (
<React.Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</React.Suspense>
);
}

این کد با استفاده از React.lazy کامپوننت را به‌صورت لیزی لود می‌کند و با کمک Suspense تا زمان بارگذاری کامل، یک پیام یا محتوای موقت (مثل "Loading...") را نمایش می‌دهد.
برای اطلاعات بیشتر در مورد لیزی لودینگ و نحوه استفاده از این تکنیک توی شرایط مختلف پیشنهاد میکنم دو تا مقاله زیر رو مطالعه کنید 💥👇

🌐 article

🌐 article 2

#️⃣ #WhatsThat #lazyloading #javascript

🚀 @coolycode
💎 بررسی tree shaking در جاوااسکریپت 💎

درواقع Tree Shaking در جاوااسکریپت یک تکنیک بهینه‌سازیه که کدهای استفاده نشده رو از باندل نهایی حذف می‌کنه و به طور خاص با ماژول‌های ES6 کار می‌کنه که از دستورهای import و export برای مدیریت وابستگی‌ها استفاده می‌کنند.

هدف اصلی tree shaking اینه که فقط کدی که واقعاً در برنامه استفاده میشود در باندل نهایی باقی بماند و کدهای اضافی حذف شوند 💥


چه مزایایی داره ؟ 🚀

با کاهش حجم باندل با حذف کدهای اضافی و استفاده‌نشده، حجم فایل نهایی کاهش پیدا می‌کنه و بارگذاری صفحات سریع‌تر می‌شه و همچنین باعث می‌شه تا منابع سیستم کمتر مصرف بشن.

نحوه کار Tree Shaking 📈

درواقع Tree shaking تنها با ماژول‌های ES6 کار می‌کنه، چون این ماژول‌ها به طور ایستا وابستگی‌های خودشونو مشخص می‌کنن ( برای درک بهتر این مقاله رو بخونید )، حالا وقتی که از کدهای import و export استفاده میکنیم، ابزارهایی مثل Webpack می‌تونن بفهمند کدوم بخش از کد ما مورد استفاده قرار نمی‌گیره و اونها را حذف کنند.

نکته ای که وجود داره اینه که جاوااسکریپت به تنهایی نمیتونه tree shaking رو فعال کنه و توسط bundler‌هایی مثل webpack و rollup انجام می‌شه !


نحوه فعال کردن tree shaking

برای اطلاع از نحوه کارکرد tree-shaking در Webpack و Rollup میتونید از لینک های زیر استفاده کنید

🌐 Webpack

🌐 Rollup


توی این پست سعی کردم به طور کامل tree shaking رو بهتون توضیح بدم، اگر دوست داشتید با ری‌اکشناتون بهمون انرژی بدید ❤️

#️⃣ #WhtsThat #javascript #bundlesize #tree_shaking #webpack #rollup

🚀 @coolycode
تا امروز سعی کردیم که مطالب فوق‌العاده کاربردی و با کیفیتی رو‌برای شما عزیزان تولید کنیم و هم اکنون میتونید به صد‌ها مطلب جذاب در حوزه وب دسترسی داشته باشید 💎

با توجه به گسترده شدن مطالب کانال کولی‌کُد تصمیم، گرفتیم که یک دسته بندی مناسبی رو روی تمامی پست‌های کانال اعمال کنیم، که میتونید به صورت کامل لیستش رو مشاهده کنید 🚀
#WhatsThat : معرفی و بررسی تکنولوژی‌ها

#tools : ابزار ها و سرویس ‌های کاربردی

👨‍💻 #programming : مباحث عمومی حوزه تک

🪄 #tricks : تریک و ترفندها‌ ‌ ‌‌ ‌ ‌ ‌ ‌‌ ‌ ‌ ‌ ‌ ‌

🔗#website : معرفی وبسایت‌‌ ‌ ‌ ‌ ‌‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

📝 #tips : نکات مهم و کاربردی‌ ‌ ‌ ‌  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

😆 #fun : فان و سرگرمی‌ ‌‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

✌️ #javascript : مربوط به جاوااسکریپت

🔵 #css : مربوط به سی‌اس‌اس ‌ ‌ ‌ ‌

💻 #Frontend : حوزه ‌فرانت‌اند ‌ ‌ ‌ ‌  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

🌲 #Backend : حوزه بکند‌ ‌ ‌ ‌ ‌ ‌‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌‌ ‌‌ ‌ ‌ ‌ ‌

🔖#libarary : معرفی لایبرری های کاربردی

💻 #framework : معرفی و بررسی فریم‌ورک

🆚 #VS : مقایسه و بررسی تفاوت‌ها

📗#book : معرفی کتاب‌‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

🗣️ #golden_sentence : جملات ناب حوزه تک

🌐 #NEWPost : پست های اینستاگرام

📹 #youtube : ویدیو های چنل یوتوب

🎞 #video : آموزش های ویدیویی

🖥 #uiux : مباحث مربوط به ui, ux


اگر مورد جدیدی به مطالب کانال اضافه بشه داخل این لیست قرار میگیره

راستی میتونید بنرمون رو برای دوستان خودتون ارسال کنید تا اونا هم به جمع ما بپیوندن 🔻

CoolyCode Banner 🫰


#category #دسته_بندی

🧑‍💻 𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣
Please open Telegram to view this post
VIEW IN TELEGRAM
💎 بررسی nested object destructuring در جاوااسکریپت 💎

هموطنور که بیشترتون میدونید destructuring در جاوااسکریپت به ما این امکان رو می‌ده که از یک آبجکت یا آرایه به راحتی مقادیر خاصی رو استخراج کنیم

توی مثال زیر پروپرتی name رو از user اومدیم و destruct کردیم 🔻

const user = { name: 'Mmd', address: { city: 'cool city', } };

const { name } = user; console.log(name); // Mmd


ولی خب احتمالاً خیلی کم راجع به nested object destructuring شنیده‌ باشید. توی این حالت، وقتی آبجکت‌ما شامل آبجکت‌های دیگه‌ای به عنوان مقادیرش باشه، می‌تونیم به راحتی از destructuring برای استخراج دیتای داخل آبجکت تو در تو هم استفاده کنیم

توی مثال زیر پروپرتی city رو به سادگی از address اومدیم و destruct کردیم 🚀

const { name, address: { city } } = user;
console.log(name); // Mmd
console.log(city); // cool city


حتماً از این نوع destructuring توی پروژه هاتون استفاده کنید چون باعث می‌شه که کدتون کوتاه‌تر و خواناتر بشه

امیدوارم از این مطلب لذت برده باشید، با ری‌اکشنای خودتون بهمون انرژی بدید ❤️‍🔥

#️⃣ #javascript #tricks

𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣
10 ترفند جالب و کاربردی در جاوااسکریپت

کوتاه کردن string با ...
const truncate = (str, length) => 
str.length > length ? str.slice(0, length) + "..." : str;
console.log(truncate("JavaScript Tricks", 10)); // "JavaScript..."

ساخت آرایه عددی با طول دلخواه
const array = Array.from({ length: 5 }, (_, i) => i + 1);
console.log(array); // [1, 2, 3, 4, 5]

تبدیل string به number
const num = +"42";
console.log(num); // 42

جمع سریع آرایه‌ای از اعداد
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((total, num) => total + num, 0);
console.log(sum); // 10

بررسی مقدار زوج یا فرد بودن
const isEven = (num) => num % 2 === 0;
console.log(isEven(4)); // true

برعکس کردن String
const reverseString = (str) => str.split("").reverse().join("");
console.log(reverseString("hello")); // "olleh"

پیشنهاد : این مورد رو خودتون سعی کنید بدون استفاده از متد های آماده جاوااسکریپت بسازید جالبه و ساده ؛)
تبدیل شرط چندگانه به شیوه‌ای تمیزتر
const getDay = (day) => ({
1: "Monday",
2: "Tuesday",
3: "Wednesday",
}[day] || "Invalid day");
console.log(getDay(1)); // "Monday"

حذف مقادیر خالی از آرایه
const arr = [0, null, undefined, "", 5];
const filtered = arr.filter(Boolean);
console.log(filtered); // [5]

مقایسه سریع دو آرایه
const arraysAreEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b);
console.log(arraysAreEqual([1, 2], [1, 2])); // true

⓿➊ حذف مقادیر تکراری از آرایه
const unique = [...new Set([1, 2, 2, 3])];
console.log(unique); // [1, 2, 3]


امیدوارم از این مطلب لذت برده باشید، با ری‌اکشنای خودتون بهمون انرژی بدید ❤️‍🔥

#️⃣ #tricks #javascript

🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣
💎 آشنایی با ORM‌ها، چی هستد و به چه کاری میان 💎

کلمه ORM و یا همون Object-Relational Mapping ابزاریه که به شما این امکان رو میده تا با استفاده از زبان های برنامه‌نویسی شی‌گرا، به راحتی با دیتابیس کار بکنید.

یعنی دیگه نیازی نیست خودتون به صورت دستی به نوشتن کوئری‌های پیچیده با sql خام بپردازید و میتونید تمرکز بیشتری رو روی منطق برنامه‌نویسی داشته باشید 💥


مزایای ORM‌ها

کاهش کد نویسی
با استفاده از ORM، نیاز به نوشتن کد SQL کاهش پیدا میکنه و عملیات دیتابیس به صورت خودکار انجام می‌شه

افزایش خوانایی کد
کد ORM بیشتر به زبان برنامه‌نویسی شما نزدیکه و فهم اون ساده‌تره.

قابلیت‌های جابجایی
با ORM میتونید به سادگی از یک دیتابیس به یک دیتابیس دیگه منتقل شد.

مدیریت خودکار ریلیشن‌ها
با ORM ها مدیریت روابط ( ریلیشن‌ها ) بین جداول مختلف خیلی ساده تر میشه


معایب ORM‌ها

➊ عملکرد کمتر
برای برخی از عملیات‌های پیچیده مثل گذارش گیری ها ممکنه کارایی کمتری نسبت به نوشتن کد SQL خالص داشته باشن.

➋ پیشرفته بودن برای مبتدیان
درک کامل عملکرد ORM و چگونگی کارکرد اون می‌تونه برای برخی از دولوپر‌های تازه‌کار سخت تر باشه.

➌ محدودیت‌های عملکردی
برای سناریوهایی با نیازهای خاص و پیچیده، ممکنه ORM همه نیازهای مارو برآورده نکنه.


💯 بهترین ORM ها برای Node.js

1. Sequelize
یک ORM قدرتمند برای Node.js و دیتابیس های SQL با پشتیبانی از تعریف مدل، روابط پیچیده، و Migration.

2. TypeORM
به شخصه typeorm رو‌ برای NestJS توصیه میکنم چون فوق‌العاده مناسب برای TypeScript هستش که از database های SQL و NoSQL پشتیبانی میکنه.
3. Mongoose
این یکی برای MongoDB به‌کار می‌ره و درواقع ODM هستش که با Schema‌ها، Middleware و قابلیت Validation، مدیریت دیتای NoSQL رو براتون اسون تر میکنه.
4. Prisma
یک ORM مدرن و TypeScript-friendly برای دیتابیس های SQL با تمرکز بر سرعت، Type-Safty کوئری‌ها.


#️⃣ #lazyloading #javascript

🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣