🔺هزاران آیکون SVG 👌
• https://iconbuddy.app
• https://fonty.io
• https://iconoir.com
• https://healthicons.org
• https://atlasicons.vectopus.com
• https://www.mingcute.com
#links
• https://iconbuddy.app
• https://fonty.io
• https://iconoir.com
• https://healthicons.org
• https://atlasicons.vectopus.com
• https://www.mingcute.com
#links
Free SVG Icons
Iconbuddy — Free and Open Source SVG icons
Browse and download 300,000+ SVG icons from multiple open source icon libraries. Customize color, size, and export as SVG, PNG, JSX, or Base64.
👍21👌2
🔺سوال مصاحبه: چرا توی JSX ریاکت، برای رندر کردن یک لیست از
- جوابتون رو توی کامنتها به اشتراک بذارین👇👏
#quiz
()forEach. بجای ()map. استفاده نمیکنیم؟- جوابتون رو توی کامنتها به اشتراک بذارین👇👏
#quiz
👍23🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔺ترفند: توی کنسول کروم و فایرفاکس میتونیم با استفاده از
#tricks
0$ به آخرین المنتی که توی تب Inspect انتخاب شده دسترسی داشته باشیم#tricks
🔥35👍22❤6
🔺یه نکتهٔ ریز ریاکتی که دوست داشتم براتون به اشتراک بذارم
- همونطور که میدونیم وقتی توی یک کامپوننت والد تغییری رخ میده (مثلاً State بروز میشه)، باعث میشه کامپوننتهای فرزند Re-render بشن. برای جلوگیری از این اتفاق میتونیم از
- کامپوننتی که از
- حالا فرض کنیم میخوایم از کامپوننت والد به فرزند یک آبجکت یا یک تابع (Callback) رو پاس بدیم. اینجا حتی اگه تغییری توی این آبجکت یا تابع رخ نده، در صورت ری-رندر شدن کامپوننت والد، کامپوننتهای فرزند در هر صورت (با
- دلیل این اتفاق اینه که توی Re-render هایی که برای یک کامپوننت رخ میده، تمام State ها از نو ساخته میشن و بنابراین اگه یک State از نوع آبجکت داشته باشیم، اون آبجکت توی رندر اولیه کاملاً متفاوت هست با آبجکتی که توی رندرهای بعدی داریم. گرچه ممکنه تغییری توی ظاهر آبجکت رخ نده، میدونیم که دو آبجکت با ظاهر یکسان با هم برابر نیستن
- بنابراین اگه یک کامپوننت فرزند داره از
- اینجاست که هوکهای
- بنابراین، اگه جایی از برنامه پرفورمنس برامون اهمیت داره و به کامپوننتهای فرزند داریم مقادیر غیر Primitive (آبجکت، آرایه، تابع کالبک) پاس میدیم، بهتره به این نکته توجه کنیم
- مثال عملی رو میتونید از اینجا ببینید:
https://bit.ly/3O9oTIm
پ.ن: این فقط یکی از کاربردهای
#react #tricks
- همونطور که میدونیم وقتی توی یک کامپوننت والد تغییری رخ میده (مثلاً State بروز میشه)، باعث میشه کامپوننتهای فرزند Re-render بشن. برای جلوگیری از این اتفاق میتونیم از
React.memo تو کامپوننت فرزند استفاده کنیم- کامپوننتی که از
React.memo استفاده میکنه، فقط زمانی Re-render میشه که تغییری توی Props اون رخ بده- حالا فرض کنیم میخوایم از کامپوننت والد به فرزند یک آبجکت یا یک تابع (Callback) رو پاس بدیم. اینجا حتی اگه تغییری توی این آبجکت یا تابع رخ نده، در صورت ری-رندر شدن کامپوننت والد، کامپوننتهای فرزند در هر صورت (با
memo یا بدون اون) ری-رندر میشن- دلیل این اتفاق اینه که توی Re-render هایی که برای یک کامپوننت رخ میده، تمام State ها از نو ساخته میشن و بنابراین اگه یک State از نوع آبجکت داشته باشیم، اون آبجکت توی رندر اولیه کاملاً متفاوت هست با آبجکتی که توی رندرهای بعدی داریم. گرچه ممکنه تغییری توی ظاهر آبجکت رخ نده، میدونیم که دو آبجکت با ظاهر یکسان با هم برابر نیستن
- بنابراین اگه یک کامپوننت فرزند داره از
React.memo استفاده میکنه و در صورتی که داریم یک آبجکت یا تابع (توابع هم نوعی آبجکت هستن) رو به اون کامپوننت پاس میدیم، با Re-render شدن کامپوننت والد، کامپوننت فرزند باز هم Re-render میشه. چون React.memo میبینه که پراپرتیها با هم برابر نیستن {} ==! {}- اینجاست که هوکهای
useCallback و useMemo به کارمون میان. این هوکها تضمین میکنن که توی رندرهای متعدد، مقدارها و توابع ما بدون تغییر باقی میمونن و توی هر رندر دقیقاً همون مقدار پیشین رو برمیگردونن (از useRef هم میشه استفاده کرد)- بنابراین، اگه جایی از برنامه پرفورمنس برامون اهمیت داره و به کامپوننتهای فرزند داریم مقادیر غیر Primitive (آبجکت، آرایه، تابع کالبک) پاس میدیم، بهتره به این نکته توجه کنیم
- مثال عملی رو میتونید از اینجا ببینید:
https://bit.ly/3O9oTIm
پ.ن: این فقط یکی از کاربردهای
useMemo هست. کاربرد اصلی اون کش کردن خروجی توابع هست.#react #tricks
👌49👍13❤6🔥1
🔺نویسندهٔ کتاب You Don't Know JS، آقای کایل سیمپسون یه جایی درباره رجکت شدنش توی مصاحبه با یه شرکت معروف صحبت میکرد و میگفت اون شرکت با دلیل اینکه «فکر نمیکنیم به اندازهٔ کافی جاوااسکریپت بلد باشی» من رو رد کردن.
- داستانهای جالبی رو از رجکت شدن افراد توی مصاحبههای شغلی اینجا میتونین ببینین:
https://rejected.us
#interview
- داستانهای جالبی رو از رجکت شدن افراد توی مصاحبههای شغلی اینجا میتونین ببینین:
https://rejected.us
#interview
🤣52👍21😁5❤3
🔺میخواید به صورت عملی ببینید #جاوااسکریپت چطوری عملیات Async رو مدیریت میکنه؟ اینجا رو ببینید:👇
https://www.jsv9000.app
#links
https://www.jsv9000.app
#links
👍31❤6🔥4🙏2
🔺همینطور که به روز ولنتاین نزدیک میشیم، بد نیست کدهای HTTP رو با مثالهایی از این روز یاد بگیریم:
HTTP codes as Valentine’s Day comics
#fun
HTTP codes as Valentine’s Day comics
#fun
Medium
HTTP codes as Valentine’s Day comics
With Valentine’s Day around the corner, it is a time for romantic hopefuls to ask out the object of their affection, and await an answer…
😁19🤣9❤4👍2😍2
🔺 تجربه مصاحبه
دوستان توی #مصاحبه وقتی از شما سوالی میشه، فوراً شروع نکنین به جواب دادن. سعی کنین اطلاعات بیشتری از سوال بدست بیارین.
مثلاً از شما پرسیده میشه که بزرگترین چالشی که توی آخرین پروژهتون داشتین چی بوده. شما اینجا بهتره تلاش کنین که منظور سوال رو متوجه بشین. چه نوع چالشی منظورش هست؟ فنی؟ ارتباطی؟
یک جواب مناسب میتونه این باشه:
«راستش توی پروژه قبلی چالشهای مختلفی داشتیم. هم فنی و هم غیر فنی. اما میشه لطفاً مشخص کنین که چه نوع چالشی منظورتون هست؟»
با این کار هم سوال رو دقیقتر متوجه میشین و میتونین جواب مناسبتری بدین، و هم زمان بیشتری برای فکر کردن به جواب بدست میارین.
#tips
دوستان توی #مصاحبه وقتی از شما سوالی میشه، فوراً شروع نکنین به جواب دادن. سعی کنین اطلاعات بیشتری از سوال بدست بیارین.
مثلاً از شما پرسیده میشه که بزرگترین چالشی که توی آخرین پروژهتون داشتین چی بوده. شما اینجا بهتره تلاش کنین که منظور سوال رو متوجه بشین. چه نوع چالشی منظورش هست؟ فنی؟ ارتباطی؟
یک جواب مناسب میتونه این باشه:
«راستش توی پروژه قبلی چالشهای مختلفی داشتیم. هم فنی و هم غیر فنی. اما میشه لطفاً مشخص کنین که چه نوع چالشی منظورتون هست؟»
با این کار هم سوال رو دقیقتر متوجه میشین و میتونین جواب مناسبتری بدین، و هم زمان بیشتری برای فکر کردن به جواب بدست میارین.
#tips
👍100❤14
🔺تجربهٔ مصاحبه
فرض کنین چنین سوالی ازتون پرسیده میشه: «برای شروع یک پروژه چه ابزارهایی رو انتخاب میکنید؟»
- جواب غلط: «من برای شروع یک پروژه از Next.js و GraphQL و تایپاسکریپت و تیلویند و استوریبوک و [+۱۰۰ ابزار دیگه که نشون بدیم چقدر خفن و با کاربلد هستیم]»
- چرا این جواب غلطه؟ چون با حداقل اطلاعات و چشمبسته داریم چنین جوابی رو میدیم و بنابراین نشوندهندهٔ تعصب هست. شما برای شغل ریاکتی اقدام کردین و مصاحبهکننده قطعاً میدونه که شما در حالت عادی از چنین ابزارهایی استفاده میکنین. یک مصاحبهشونده و یک مصاحبهکنندهٔ سالم از تعصب خوشش نمیاد. و تعصب هم یعنی یک همتیمی مغرور و غیر قابل انعطاف.
- جواب درست: «کاملاً بستگی داره. من قبل از شروع پروژه بررسی میکنم که موضوع پروژه چیه، چقدر زمان و بودجه در نظر گرفته شده. در واقع باید ابتدا اولویتها رو بررسی کنیم و همچنین ببینیم افرادی که توی پروژه دخیل هستن چه مهارتهایی دارن. و براساس این اطلاعات حتی شاید مجبور بشیم با ابزارهایی کار کنیم که تابحال تجربهٔ نداشتیم.»
- در واقع بهتره که از تکنیک پست قبل هم استفاده کنین. مثلاً به مصاحبهکننده بگید که «کاملاً بستگی داره» و ازش بخواین که بیشتر توضیح بده. مثلاً:
«راستش بسته به اینکه موضوع پروژه و نیازهای ما چه چیزهایی هستن، ابزارهای متفاوتی رو میشه به کار گرفت. امکانش هست لطفاً بیشتر درباره این موارد توضیح بدین تا جواب بهتری میتونم بدم؟» اون هم مشتاقانه جواب میده «بله بله! البته! ببینید، ... » و شما هم زمان بیشتری بدست میارین تا به سوال فکر کنین و هم جواب مرتبطتری میدین :)
#tips
فرض کنین چنین سوالی ازتون پرسیده میشه: «برای شروع یک پروژه چه ابزارهایی رو انتخاب میکنید؟»
- جواب غلط: «من برای شروع یک پروژه از Next.js و GraphQL و تایپاسکریپت و تیلویند و استوریبوک و [+۱۰۰ ابزار دیگه که نشون بدیم چقدر خفن و با کاربلد هستیم]»
- چرا این جواب غلطه؟ چون با حداقل اطلاعات و چشمبسته داریم چنین جوابی رو میدیم و بنابراین نشوندهندهٔ تعصب هست. شما برای شغل ریاکتی اقدام کردین و مصاحبهکننده قطعاً میدونه که شما در حالت عادی از چنین ابزارهایی استفاده میکنین. یک مصاحبهشونده و یک مصاحبهکنندهٔ سالم از تعصب خوشش نمیاد. و تعصب هم یعنی یک همتیمی مغرور و غیر قابل انعطاف.
- جواب درست: «کاملاً بستگی داره. من قبل از شروع پروژه بررسی میکنم که موضوع پروژه چیه، چقدر زمان و بودجه در نظر گرفته شده. در واقع باید ابتدا اولویتها رو بررسی کنیم و همچنین ببینیم افرادی که توی پروژه دخیل هستن چه مهارتهایی دارن. و براساس این اطلاعات حتی شاید مجبور بشیم با ابزارهایی کار کنیم که تابحال تجربهٔ نداشتیم.»
- در واقع بهتره که از تکنیک پست قبل هم استفاده کنین. مثلاً به مصاحبهکننده بگید که «کاملاً بستگی داره» و ازش بخواین که بیشتر توضیح بده. مثلاً:
«راستش بسته به اینکه موضوع پروژه و نیازهای ما چه چیزهایی هستن، ابزارهای متفاوتی رو میشه به کار گرفت. امکانش هست لطفاً بیشتر درباره این موارد توضیح بدین تا جواب بهتری میتونم بدم؟» اون هم مشتاقانه جواب میده «بله بله! البته! ببینید، ... » و شما هم زمان بیشتری بدست میارین تا به سوال فکر کنین و هم جواب مرتبطتری میدین :)
#tips
👍68❤6✍1👌1
🔺ـReact Strict DOM چیه؟ 🤔
- اگه تجربه توسعه برنامههای موبایلی با React Native رو داشته باشین، میدونین که استفاده از کامپوننتهای ریاکت نسخه وب توی نِیتیو خیلی هم ساده نیست. و باید از یکسری کامپوننتهای خاص استفاده کرد
- مثلاً توی نیتیو نمیتونیم از
- اما فیسبوک این پکیج (که فعلاً آزمایشی هست) رو چند روز پیش منتشر کرده که اجازه میده کامپوننتهایی داشته باشیم که به قول معروف Universal و عمومیتر هستن و کمک میکنن راحتتر بتونیم از کامپوننتهای موجود بین برنامههای وب و نیتیو استفاده کنیم
- برای مثال بجای استفاده از
🔗 مشاهده نمونه
#react
- اگه تجربه توسعه برنامههای موبایلی با React Native رو داشته باشین، میدونین که استفاده از کامپوننتهای ریاکت نسخه وب توی نِیتیو خیلی هم ساده نیست. و باید از یکسری کامپوننتهای خاص استفاده کرد
- مثلاً توی نیتیو نمیتونیم از
div استفاده کنیم و بجاش باید از المنت View استفاده کرد- اما فیسبوک این پکیج (که فعلاً آزمایشی هست) رو چند روز پیش منتشر کرده که اجازه میده کامپوننتهایی داشته باشیم که به قول معروف Universal و عمومیتر هستن و کمک میکنن راحتتر بتونیم از کامپوننتهای موجود بین برنامههای وب و نیتیو استفاده کنیم
- برای مثال بجای استفاده از
<div> و یا <View>، از یک المنت مشترک به اسم <html.div> استفاده میکنیم. و این ابزار پشت پرده کار تبدیل رو بهصورت خودکار انجام میده🔗 مشاهده نمونه
#react
GitHub
GitHub - facebook/react-strict-dom: React Strict DOM (RSD) standardizes the development of styled React components for web and…
React Strict DOM (RSD) standardizes the development of styled React components for web and native. - facebook/react-strict-dom
👍27❤3
🔺آشنایی با ویژگیهای جدید جاوااسکریپت (ES14)
- توی اکمااسکریپت ١۴ ویژگیهای جالبی رو داریم از جمله چند متد کاربردی مربوط به آرایهها
- توی این پست با این ویژگیها که توی جدیدترین نسخههای جاوااسکریپت و تایپاسکریپت در دسترس هستن آشنا بشیم:
https://ditty.ir/536
#javanoscript
- توی اکمااسکریپت ١۴ ویژگیهای جالبی رو داریم از جمله چند متد کاربردی مربوط به آرایهها
- توی این پست با این ویژگیها که توی جدیدترین نسخههای جاوااسکریپت و تایپاسکریپت در دسترس هستن آشنا بشیم:
https://ditty.ir/536
#javanoscript
🔥31❤8👍5🤯2🙏1
🔺ترفند ریاکتی
- توی ریاکت وقتی از useState استفاده میکنیم، برای مقدار اولیه اون، بجای پاس دادن مقدار بهصورت مستقیم میتونیم اون رو توی یک تابع محصور کنیم (مثل عکس)
- توی عکس همونطور که میبینیم، تابعی داریم به اسم heavyCalculation که مثلاً کار سنگینی انجام میده و میخوایم خروجی اون رو به عنوان مقدار useState قرار بدیم
- میتونستیم این کار رو بدون استفاده از تابع هم انجام بدیم، که توی این حالت باید بدونیم که هر بار که این کامپوننت رندر میشه، تابع پاس دادهشده هم مجدد اجرا میشه. که اگه عملیات ما سنگین باشه باعث افت عملکرد کامپوننت میشه
- حالا وقتی که تابع یا یک عملیات سنگین رو توی یک تابع محصور میکنیم، ریاکت توی رندر ابتدایی، این تابع رو اجرا و توی رندرهای بعدی از خروجی این تابع (که توی رندر ابتدایی محاسبه شده) استفاده میکنه. یعنی فقط یک بار اجرای اون عملیات سنگین
- از این ترفند بهتره زمانی استفاده کنیم که واقعاً عملیات سنگینی داریم که هر بار اجرای اون، عملکرد کامپوننت رو تحت تأثیر قرار میده
- مشاهدهٔ نمونه عملی
#react
- توی ریاکت وقتی از useState استفاده میکنیم، برای مقدار اولیه اون، بجای پاس دادن مقدار بهصورت مستقیم میتونیم اون رو توی یک تابع محصور کنیم (مثل عکس)
- توی عکس همونطور که میبینیم، تابعی داریم به اسم heavyCalculation که مثلاً کار سنگینی انجام میده و میخوایم خروجی اون رو به عنوان مقدار useState قرار بدیم
- میتونستیم این کار رو بدون استفاده از تابع هم انجام بدیم، که توی این حالت باید بدونیم که هر بار که این کامپوننت رندر میشه، تابع پاس دادهشده هم مجدد اجرا میشه. که اگه عملیات ما سنگین باشه باعث افت عملکرد کامپوننت میشه
- حالا وقتی که تابع یا یک عملیات سنگین رو توی یک تابع محصور میکنیم، ریاکت توی رندر ابتدایی، این تابع رو اجرا و توی رندرهای بعدی از خروجی این تابع (که توی رندر ابتدایی محاسبه شده) استفاده میکنه. یعنی فقط یک بار اجرای اون عملیات سنگین
- از این ترفند بهتره زمانی استفاده کنیم که واقعاً عملیات سنگینی داریم که هر بار اجرای اون، عملکرد کامپوننت رو تحت تأثیر قرار میده
- مشاهدهٔ نمونه عملی
#react
👍67❤4🔥1
🔺توی جاوااسکریپت و مبحث پرامیسها، تفاوت متدهای race و any چیه؟ متد all و allSettled چطور؟ 🤔
- این متدها که از Promise به صورت استاتیک قابل دسترس هستن (یعنی مثلاً ()Promise.resolve یا ()Promise.race) کاربردهای زیادی دارن و بهمون کمک میکنن یک برنامهٔ سریعتر و پویاتر داشته باشیم. توی این پست این متدها رو بررسی میکنیم و با مثالهایی از کاربرد اونها توی دنیای واقعی آشنا میشیم:
ditty.ir/537
#javanoscript
- این متدها که از Promise به صورت استاتیک قابل دسترس هستن (یعنی مثلاً ()Promise.resolve یا ()Promise.race) کاربردهای زیادی دارن و بهمون کمک میکنن یک برنامهٔ سریعتر و پویاتر داشته باشیم. توی این پست این متدها رو بررسی میکنیم و با مثالهایی از کاربرد اونها توی دنیای واقعی آشنا میشیم:
ditty.ir/537
#javanoscript
❤27🔥2
سلام دوستان، عیدتون مبارک 👋
- نسخهٔ PDF برای ۸۰ سوال مصاحبهٔ فرانتاند و ۷۰ سوال مصاحبهٔ جاوااسکریپت رو میتونین دانلود کنین 👇
• 80 FE Interview Questions
• 70 JavaScript Interview Questions
#interview
- نسخهٔ PDF برای ۸۰ سوال مصاحبهٔ فرانتاند و ۷۰ سوال مصاحبهٔ جاوااسکریپت رو میتونین دانلود کنین 👇
• 80 FE Interview Questions
• 70 JavaScript Interview Questions
#interview
🔥61❤24👍5🙏5😍3💯1
🔺تصاویر، فونتها، اسکریپتها و فایلهای یک برنامهٔ فرانتاندی رو چطوری مدیریت کنیم؟ 🤔
- یکی از مهارتهایی که بهعنوان توسعهدهندهٔ فرانتاند باید اون رو بلد باشیم، نحوهٔ مدیریت Asset های برنامه هست
- توی این پست نکتهها و تجربیاتی رو برای مدیریت Asset ها (فایلها و تصاویر و ...) توی برنامههای فرانتاند براتون به اشتراک گذاشتم:
ditty.ir/540
#tips
- یکی از مهارتهایی که بهعنوان توسعهدهندهٔ فرانتاند باید اون رو بلد باشیم، نحوهٔ مدیریت Asset های برنامه هست
- توی این پست نکتهها و تجربیاتی رو برای مدیریت Asset ها (فایلها و تصاویر و ...) توی برنامههای فرانتاند براتون به اشتراک گذاشتم:
ditty.ir/540
#tips
دیتی | Ditty.ir
آشنایی با روشهای مختلف مدیریت Asset ها (فایلها و تصاویر) توی برنامههای فرانتاند
میخوایم با نکتهها و تجربیاتی درباره نحوهٔ مدیریت فایلهای استاتیک مثل تصاویر و ویدئوها و فونتها آشنا بشیم که کمک میکنن یک برنامهٔ فرانتاندی خوانا و قابل توسعه داشته باشیم
❤26👍5🔥1
🔺یک منبع بهروز و پر از آموزش و نکتهٔ برای فرانتاند:
https://frontendmasters.com/guides/front-end-handbook/2024
#links
https://frontendmasters.com/guides/front-end-handbook/2024
#links
👍24🔥2❤1👏1
🔺 توی برنامههای فرانتاندی، آیا تفاوت Building و Bundling رو میدونیم؟ 🤔 تفاوت Minify و Uglify چطور؟
- توی این پست دیتی میخوایم ۶ واژه که شبیه به هم هستن رو بررسی کنیم:
ditty.ir/543
#frontend
- توی این پست دیتی میخوایم ۶ واژه که شبیه به هم هستن رو بررسی کنیم:
ditty.ir/543
#frontend
👍25❤4
🔺با HTTP Caching و نحوهٔ کارکرد اون توی مرورگر آشنا بشیم
- توی این پست میخوایم با چند هدر HTTP آشنا بشیم که بطور اختصاصی برای Caching و مدیریت ذخیرهسازی اطلاعات استفاده میشن
- این تکنیک با حذف کردن درخواستهای HTTP اضافی، استفاده از پهنای باند رو به شکل قابل توجهی کاهش میده که نتیجهٔ اون افزایش سرعت و عملکرد برنامههای فرانتاندی هست
- جدیدترین پست دیتی:
ditty.ir/545
#frontend
- توی این پست میخوایم با چند هدر HTTP آشنا بشیم که بطور اختصاصی برای Caching و مدیریت ذخیرهسازی اطلاعات استفاده میشن
- این تکنیک با حذف کردن درخواستهای HTTP اضافی، استفاده از پهنای باند رو به شکل قابل توجهی کاهش میده که نتیجهٔ اون افزایش سرعت و عملکرد برنامههای فرانتاندی هست
- جدیدترین پست دیتی:
ditty.ir/545
#frontend
👍11❤6👌2