📌 حلقهها در جاوااسکریپت؛ کدت رو چندباره کن بدون خستگی!
حلقهها بهت اجازه میدن یه کار رو تکراری اجرا کنی. تو جاوااسکریپت چند نوع حلقه داریم که هرکدوم جایگاه خودشون رو دارن:
-----------------------------------------
🔁 for کلاسیک
وقتی تعداد دفعات مشخصه:
for (let i = 0; i < 5; i++) {
console.log(i); // 0 1 2 3 4
}
🔁 while
وقتی شرط نامشخصه و ممکنه اصلاً اجرا نشه:
🔁 do...while
حداقل یک بار اجرا میشه، حتی اگر شرط غلط باشه:
برای آرایهها و اشیاء قابل تکرار (iterable):
🔁 for...in
برای کلیدهای object (با احتیاط استفاده کن):
-----------------------------------------
⚠️ نکته مهم:
از for...in روی آرایه استفاده نکن (ترتیب رو رعایت نمیکنه و خواص اضافی رو هم میاره). به جاش از for...of یا forEach استفاده کن.
✅ عملکرد:
حلقههای for و while سرعت بالایی دارن، ولی برای خوانایی کد، for...of و متدهای مدرن مثل map، filter رو ترجیح بده.
-----------------------------------------
💡 جمعبندی:
- تعداد مشخص → for
- شرط نامشخص → while
- حداقل یک بار → do...while
- آرایه/رشته → for...of
- آبجکت → for...in (با دقت)
حلقهها رو درست انتخاب کن تا کدت هم سریع باشه هم خواناتر! 🚀
#جاوااسکریپت #حلقه #JavaScript #آموزش
@awat_dev
حلقهها بهت اجازه میدن یه کار رو تکراری اجرا کنی. تو جاوااسکریپت چند نوع حلقه داریم که هرکدوم جایگاه خودشون رو دارن:
-----------------------------------------
🔁 for کلاسیک
وقتی تعداد دفعات مشخصه:
for (let i = 0; i < 5; i++) {
console.log(i); // 0 1 2 3 4
}
🔁 while
وقتی شرط نامشخصه و ممکنه اصلاً اجرا نشه:
let n = 3;
while (n > 0) {
console.log(n--);
}
🔁 do...while
حداقل یک بار اجرا میشه، حتی اگر شرط غلط باشه:
let x = 10;🔁 for...of (مدرن)
do {
console.log(x);
} while (x < 5); // چاپ ۱۰
برای آرایهها و اشیاء قابل تکرار (iterable):
const colors = ['red', 'green', 'blue'];
for (let c of colors) {
console.log(c);
}
🔁 for...in
برای کلیدهای object (با احتیاط استفاده کن):
const user = {name: 'Ali', age: 25};
for (let key in user) {
console.log(key, user[key]);
}
-----------------------------------------
⚠️ نکته مهم:
از for...in روی آرایه استفاده نکن (ترتیب رو رعایت نمیکنه و خواص اضافی رو هم میاره). به جاش از for...of یا forEach استفاده کن.
✅ عملکرد:
حلقههای for و while سرعت بالایی دارن، ولی برای خوانایی کد، for...of و متدهای مدرن مثل map، filter رو ترجیح بده.
-----------------------------------------
💡 جمعبندی:
- تعداد مشخص → for
- شرط نامشخص → while
- حداقل یک بار → do...while
- آرایه/رشته → for...of
- آبجکت → for...in (با دقت)
حلقهها رو درست انتخاب کن تا کدت هم سریع باشه هم خواناتر! 🚀
#جاوااسکریپت #حلقه #JavaScript #آموزش
@awat_dev
❤3
╭─ 🎨 AI IMAGE COMMANDS ─╮
🛍️ Marketing
"/product_ad" • "/banner" • "/promo" • "/sale"
"/offer" • "/new_product" • "/brand"
📱 Social Media
"/telegram_post" • "/story_ad" • "/thumbnail"
"/channel_cover" • "/quote" • "/announcement"
✨ Styles
"/luxury_ad" • "/minimal_ad" • "/cinematic"
"/3d_ad" • "/neon" • "/retro" • "/cyberpunk" • "/premium"
🍔 Specialized
"/food_ad" • "/fashion_ad" • "/cosmetic_ad"
"/tech_ad" • "/packaging" • "/logo_mockup"
📊 Info
"/infographic" • "/educational" • "/comparison"
"/before_after" • "/testimonial" • "/countdown" • "/giveaway"
🎯 Special
"/seasonal" • "/event" • "/viral" • "/isometric"
@awat_dev
╰─ ✦ Create • Design • Inspire ✦ ─╯
🛍️ Marketing
"/product_ad" • "/banner" • "/promo" • "/sale"
"/offer" • "/new_product" • "/brand"
📱 Social Media
"/telegram_post" • "/story_ad" • "/thumbnail"
"/channel_cover" • "/quote" • "/announcement"
✨ Styles
"/luxury_ad" • "/minimal_ad" • "/cinematic"
"/3d_ad" • "/neon" • "/retro" • "/cyberpunk" • "/premium"
🍔 Specialized
"/food_ad" • "/fashion_ad" • "/cosmetic_ad"
"/tech_ad" • "/packaging" • "/logo_mockup"
📊 Info
"/infographic" • "/educational" • "/comparison"
"/before_after" • "/testimonial" • "/countdown" • "/giveaway"
🎯 Special
"/seasonal" • "/event" • "/viral" • "/isometric"
@awat_dev
╰─ ✦ Create • Design • Inspire ✦ ─╯
🔥1🤩1🗿1
</awat>
فردا توضیح رو میزارم براتون ببینم چی جواب میدین
جواب چالش قبلی 👇
گزینهی درست: B) 1 - 4 - 3 - 2
چرا؟ چون جاوااسکریپت تکرشتهایه و کدهای سینک (مثل console.log("۱") و console.log("۴")) همیشه اول اجرا میشن.
بعدش نوبت Microtask Queue میرسه؛ یعنی Promise.then ها، که زودتر از هر تایمر اجرا میشن، حتی اگه setTimeout با ۰ میلیثانیه صدا زده شده باشه.
در آخر نوبت Macrotask Queue، یعنی setTimeout، میرسه.
نکته مهم: setTimeout(fn, 0) یعنی «فوری» نیست؛ یعنی «هر وقت stack و microtask queue خالی شدن». این سؤال کلاسیک مصاحبههای فرانتاندیه، حتماً حفظش کن 😉
اگه گزینهی درست رو زده بودی، تو کامنتها بگو! فوروارد هم یادت نره 🔁
گزینهی درست: B) 1 - 4 - 3 - 2
چرا؟ چون جاوااسکریپت تکرشتهایه و کدهای سینک (مثل console.log("۱") و console.log("۴")) همیشه اول اجرا میشن.
بعدش نوبت Microtask Queue میرسه؛ یعنی Promise.then ها، که زودتر از هر تایمر اجرا میشن، حتی اگه setTimeout با ۰ میلیثانیه صدا زده شده باشه.
در آخر نوبت Macrotask Queue، یعنی setTimeout، میرسه.
نکته مهم: setTimeout(fn, 0) یعنی «فوری» نیست؛ یعنی «هر وقت stack و microtask queue خالی شدن». این سؤال کلاسیک مصاحبههای فرانتاندیه، حتماً حفظش کن 😉
اگه گزینهی درست رو زده بودی، تو کامنتها بگو! فوروارد هم یادت نره 🔁
بریم HTML رو باهم یاد بگیریم!
قراره از صفر شروع کنیم و دونهدونه تگهای HTML رو با مثال یاد بگیریم...
ساده، کوتاه و بدون حاشیه؛
قراره از صفر شروع کنیم و دونهدونه تگهای HTML رو با مثال یاد بگیریم...
ساده، کوتاه و بدون حاشیه؛
🔥7🗿3❤1
🧱 مرحله ۱ | تگهای پایه HTML
🔹 تگ "<html>"
مشخص میکنه کل صفحه یک سند HTML هست.
🔹 تگ "<head>"
اطلاعات و تنظیمات صفحه اینجا نوشته میشه.
🔹 تگ "<title>"
عنوانی که روی تب مرورگر نمایش داده میشه.
🔹 تگ "<body>"
محتوایی که داخل صفحه دیده میشه، اینجا قرار میگیره.
@awat_dev
#HTML
🔹 تگ "<html>"
مشخص میکنه کل صفحه یک سند HTML هست.
🔹 تگ "<head>"
اطلاعات و تنظیمات صفحه اینجا نوشته میشه.
🔹 تگ "<title>"
عنوانی که روی تب مرورگر نمایش داده میشه.
🔹 تگ "<body>"
محتوایی که داخل صفحه دیده میشه، اینجا قرار میگیره.
<html>
<head>
<title>صفحه من</title>
</head>
<body>
سلام!
</body>
</html>
@awat_dev
#HTML
❤4🕊1
رفقا دمتون گرم تا اینجای کار همراه تیم آوات بودید ، به مناسبت 130 تایی شدنمون هر هفته 10 تا سایت کاربردی میگیم که مربوط به حوضه FrontEnd میشه 🔥❤️
❤4
🚀 ۱۰ سایت کاربردی که هر فرانتاندکار مبتدی بهتره بشناسه
یادمه اوایل کدنویسی، همیشه سردرگم بودم که آموزش رو از کجا دنبال کنم. این لیست همون چیزیه که کاش زودتر پیدا میکردم؛ سیوش کن، به دردت میخوره 👇
1️⃣ مرجع کامل HTML، CSS و JavaScript
developer.mozilla.org
2️⃣ آموزش و راهنمای Performance سایت
web.dev
3️⃣ مقالهها و منابع کاربردی CSS
css-tricks.com
4️⃣ یادگیری JavaScript از صفر تا مباحث پیشرفته
javascript.info
5️⃣ بررسی سازگاری ویژگیها با مرورگرها
caniuse.com
6️⃣ تمرینهای واقعی و پروژهمحور Front-End
frontendmentor.io
7️⃣ محیط آنلاین برای تست و اشتراکگذاری کد
codepen.io
8️⃣ آموزشهای رایگان و پروژهمحور
freecodecamp.org
9️⃣ ساخت و مدیریت پالتهای رنگی
coolors.co
🔟 فونتهای رایگان مناسب استفاده در وب
fonts.google.com
💡 نکته مهم:
لازم نیست همه این سایتها رو همزمان دنبال کنی. هر هفته روی یکی از اونها تمرکز کن و واقعاً ازش استفاده کن؛ نتیجه خیلی محسوستره.
اگه به دردت خورد، سیوش کن و برای یه فرانتاندکار دیگه هم بفرست 🙌
@awat_dev
یادمه اوایل کدنویسی، همیشه سردرگم بودم که آموزش رو از کجا دنبال کنم. این لیست همون چیزیه که کاش زودتر پیدا میکردم؛ سیوش کن، به دردت میخوره 👇
1️⃣ مرجع کامل HTML، CSS و JavaScript
developer.mozilla.org
2️⃣ آموزش و راهنمای Performance سایت
web.dev
3️⃣ مقالهها و منابع کاربردی CSS
css-tricks.com
4️⃣ یادگیری JavaScript از صفر تا مباحث پیشرفته
javascript.info
5️⃣ بررسی سازگاری ویژگیها با مرورگرها
caniuse.com
6️⃣ تمرینهای واقعی و پروژهمحور Front-End
frontendmentor.io
7️⃣ محیط آنلاین برای تست و اشتراکگذاری کد
codepen.io
8️⃣ آموزشهای رایگان و پروژهمحور
freecodecamp.org
9️⃣ ساخت و مدیریت پالتهای رنگی
coolors.co
🔟 فونتهای رایگان مناسب استفاده در وب
fonts.google.com
💡 نکته مهم:
لازم نیست همه این سایتها رو همزمان دنبال کنی. هر هفته روی یکی از اونها تمرکز کن و واقعاً ازش استفاده کن؛ نتیجه خیلی محسوستره.
اگه به دردت خورد، سیوش کن و برای یه فرانتاندکار دیگه هم بفرست 🙌
@awat_dev
❤7
</awat>
zeblo_winblur.rar
دوستان این فایل رو extract کنید و توی مسیر C:\Program Files بریزید
فایل Register.cmd کلیک راست کنید و گزینه run as administrator بزنید بعد از پنج ثانیه ویندوز شما شیشه ای میشه
فایل Register.cmd کلیک راست کنید و گزینه run as administrator بزنید بعد از پنج ثانیه ویندوز شما شیشه ای میشه
💯4
چجوری توی تیلویند کامپوننت ایجاد کنیم؟
بعضی موقع شده چند دکمه یا چند بخش استایل هایی کاملا شبیه به هم دارند این درست نیست به هر کدوم این استایل ها رو دوباره بدیم چون بهینه نیست و استایل ها یکیه و سند مارو شلوغ میکنه برای اینکه از شلوغ شدن صفحه جلوگیری بشه و کد ما تمیز تر و بهینه تر باشه از کامپوننت استفاده میکنیم
برای ایجاد کامپوننت توی تیلویند سی اس اس به سند input.css باید بریم و اونجا کامپوننت های خودمون رو بزاریم
حالا چجوری ؟
ما باید با کد زیر مشخص کنیم که میخوایم کامپوننت ایجاد کنیم:
با کد بالا شما میتونید بیس ایجاد کامپوننت خودتون رو ایجاد کنید داخل کریلی بریسس شما باید یک کلاس نام گذاری کنید طبق سکشنی که دارید میزنید یه کلاس مربوط بدید و داخل اون کلاس شما هم میتونید بصورت سی اس اس خام استایل هاتون رو تعریف کنید هم بصورت تیلویند بصورت سی اس اس خام در پایین مثال میزنم براتون:
با سی اس اس خام مثل مثال بالا میتونید استایلتون رو بدید و کلاس btn رو به سکشن یا دکمتون بدید
میتونید مثل کد بالا استایلتون رو بصورت تیلویند تعریف کنید.
اگ کاربردی بود براتون لایک کنید حتمی
باتشکر.
بعضی موقع شده چند دکمه یا چند بخش استایل هایی کاملا شبیه به هم دارند این درست نیست به هر کدوم این استایل ها رو دوباره بدیم چون بهینه نیست و استایل ها یکیه و سند مارو شلوغ میکنه برای اینکه از شلوغ شدن صفحه جلوگیری بشه و کد ما تمیز تر و بهینه تر باشه از کامپوننت استفاده میکنیم
برای ایجاد کامپوننت توی تیلویند سی اس اس به سند input.css باید بریم و اونجا کامپوننت های خودمون رو بزاریم
حالا چجوری ؟
ما باید با کد زیر مشخص کنیم که میخوایم کامپوننت ایجاد کنیم:
@layer components {}با کد بالا شما میتونید بیس ایجاد کامپوننت خودتون رو ایجاد کنید داخل کریلی بریسس شما باید یک کلاس نام گذاری کنید طبق سکشنی که دارید میزنید یه کلاس مربوط بدید و داخل اون کلاس شما هم میتونید بصورت سی اس اس خام استایل هاتون رو تعریف کنید هم بصورت تیلویند بصورت سی اس اس خام در پایین مثال میزنم براتون:
@layer components {
.btn{
display:flex;
justify-content: center;
align-items: center;
}
}با سی اس اس خام مثل مثال بالا میتونید استایلتون رو بدید و کلاس btn رو به سکشن یا دکمتون بدید
اگر میخواید استایل هاتون رو توی کامپوننت هم بصورت تیلویند باشه باید با @apply این کار رو انجام بدید مثالش رو پایین براتون میزنم:@layer components {
.btn{
@apply flex justify-center items-center;
}
}میتونید مثل کد بالا استایلتون رو بصورت تیلویند تعریف کنید.
اگ کاربردی بود براتون لایک کنید حتمی
باتشکر.
❤11
خب دوستان یه مقاله داریم راجب ساخت header و footer توی جاوا اسکریپت و قرار دادن توی همه صفحات سایت
🤩6❤1
</awat>
خب دوستان یه مقاله داریم راجب ساخت header و footer توی جاوا اسکریپت و قرار دادن توی همه صفحات سایت
اولین راهی که به ذهنتون میاد اینه که توی همه صفحات کد های HTML رو اضافه کنیم ولی خب این روش باعث زیاد شدن کد ها و در نتیجه سنگین شدن سایت میشه
ساخت Header و Footer مشترک برای همه صفحات با JavaScript
اگه چندتا صفحه HTML داری، لازم نیست Header و Footer رو توی همه صفحات کپی کنی. میتونی اونها رو یکبار داخل JavaScript بسازی و در همه صفحات رندر کنی.
📁 ساختار پروژه:
در HTML فقط جای Header و Footer رو مشخص کن:
حالا داخل
نتیجه؟
از این به بعد هر صفحهای که
این روش برای پروژههای ساده و تمرین JavaScript خیلی خوبه و مفاهیم مهمی مثل DOM، innerHTML، Template Literal و Component-like thinking رو هم بهت یاد میده.
بعداً میتونی همین ایده رو حرفهایتر کنی و مثلاً لینک صفحه فعلی رو با کلاس active مشخص کنی.
@awat_dev
اگه چندتا صفحه HTML داری، لازم نیست Header و Footer رو توی همه صفحات کپی کنی. میتونی اونها رو یکبار داخل JavaScript بسازی و در همه صفحات رندر کنی.
📁 ساختار پروژه:
project/
├── index.html
├── about.html
├── contact.html
└── js/
└── components.js
در HTML فقط جای Header و Footer رو مشخص کن:
<div id="header"></div>
<main>
<h1>صفحه اصلی</h1>
</main>
<div id="footer"></div>
<script src="./js/components.js"></script>
حالا داخل
components.js:const header = document.querySelector("#header");
header.innerHTML = `
<header>
<nav>
<a href="index.html">خانه</a>
<a href="about.html">درباره ما</a>
<a href="contact.html">تماس با ما</a>
</nav>
</header>
`;
const footer = document.querySelector("#footer");
footer.innerHTML = `
<footer>
<p>© 2026 My Website</p>
</footer>
`;نتیجه؟
از این به بعد هر صفحهای که
components.js رو لود کنه، Header و Footer رو بهصورت خودکار دریافت میکنه.این روش برای پروژههای ساده و تمرین JavaScript خیلی خوبه و مفاهیم مهمی مثل DOM، innerHTML، Template Literal و Component-like thinking رو هم بهت یاد میده.
بعداً میتونی همین ایده رو حرفهایتر کنی و مثلاً لینک صفحه فعلی رو با کلاس active مشخص کنی.
@awat_dev
❤10🔥1🕊1
📱 چرا در Tailwind CSS بهتره Mobile First طراحی کنیم؟
امروزه بخش بزرگی از کاربران با موبایل وارد سایتها میشن؛ به همین دلیل طراحی از صفحههای کوچکتر شروع کردن، یک روش استاندارد و کاربردیه. در Tailwind CSS هم سیستم Responsive بهصورت Mobile First طراحی شده؛ یعنی استایلهای پایه برای موبایل نوشته میشن و بعد برای صفحههای بزرگتر تغییرات اضافه میشن.
اما چرا این روش بهتره؟
✅ 1. تمرکز روی تجربه کاربر موبایل
وقتی از ابتدا محدودیتهای صفحه کوچک رو در نظر میگیریم، مجبور میشیم فقط عناصر ضروری رو نگه داریم و رابط کاربری سادهتر و کاربردیتری بسازیم.
✅ 2. کد تمیزتر و قابل مدیریتتر
در Tailwind لازم نیست برای هر اندازه صفحه از اول استایل بنویسیم. استایل موبایل بهعنوان پایه قرار میگیره و فقط در breakpointهای بزرگتر تغییرات اضافه میشن. مثلا:
یعنی متن در موبایل وسطچین است و در صفحههای بزرگتر چپچین میشود.
✅ 3. جلوگیری از Overrideهای اضافی
در روش Desktop First معمولا بعداً مجبور میشیم کلی استایل را برای موبایل اصلاح کنیم. اما در Mobile First، ساختار از ابتدا با محدودیتها هماهنگ میشود.
✅ 4. سرعت توسعه بیشتر
با کلاسهای آماده Tailwind میتوانیم سریعتر Responsive Design بسازیم، بدون اینکه مدام Media Queryهای پیچیده بنویسیم.
✅ 5. آیندهنگری بهتر
طراحی Mobile First باعث میشود سایت روی دستگاههای مختلف مثل موبایل، تبلت و دسکتاپ راحتتر گسترش پیدا کند.
🔻 خلاصه:
@awat_dev
امروزه بخش بزرگی از کاربران با موبایل وارد سایتها میشن؛ به همین دلیل طراحی از صفحههای کوچکتر شروع کردن، یک روش استاندارد و کاربردیه. در Tailwind CSS هم سیستم Responsive بهصورت Mobile First طراحی شده؛ یعنی استایلهای پایه برای موبایل نوشته میشن و بعد برای صفحههای بزرگتر تغییرات اضافه میشن.
اما چرا این روش بهتره؟
✅ 1. تمرکز روی تجربه کاربر موبایل
وقتی از ابتدا محدودیتهای صفحه کوچک رو در نظر میگیریم، مجبور میشیم فقط عناصر ضروری رو نگه داریم و رابط کاربری سادهتر و کاربردیتری بسازیم.
✅ 2. کد تمیزتر و قابل مدیریتتر
در Tailwind لازم نیست برای هر اندازه صفحه از اول استایل بنویسیم. استایل موبایل بهعنوان پایه قرار میگیره و فقط در breakpointهای بزرگتر تغییرات اضافه میشن. مثلا:
text-center md:text-left
یعنی متن در موبایل وسطچین است و در صفحههای بزرگتر چپچین میشود.
✅ 3. جلوگیری از Overrideهای اضافی
در روش Desktop First معمولا بعداً مجبور میشیم کلی استایل را برای موبایل اصلاح کنیم. اما در Mobile First، ساختار از ابتدا با محدودیتها هماهنگ میشود.
✅ 4. سرعت توسعه بیشتر
با کلاسهای آماده Tailwind میتوانیم سریعتر Responsive Design بسازیم، بدون اینکه مدام Media Queryهای پیچیده بنویسیم.
✅ 5. آیندهنگری بهتر
طراحی Mobile First باعث میشود سایت روی دستگاههای مختلف مثل موبایل، تبلت و دسکتاپ راحتتر گسترش پیدا کند.
🔻 خلاصه:
Mobile First یعنی اول بهترین تجربه را برای کوچکترین صفحه بساز، بعد امکانات و جزئیات را برای صفحههای بزرگتر اضافه کن. این رویکرد هم با فلسفه Tailwind هماهنگ است و هم باعث میشود کد مرتبتر، قابل توسعهتر و کاربرپسندتر داشته باشیم.
@awat_dev
❤7