🔺ـ Tree Shaking یعنی چی؟ 🤔
- وقتی با ابزارهایی مثل وبپک میخوایم از یک برنامهٔ جاوااسکریپتی بیلد بگیریم، تکنیک Tree Shaking با حذف کدهای اضافی و بلااستفاده (به قول معروف Dead Code) بهمون کمک میکنه تا حجم کدهای کمتری توی باندل نهایی قرار بگیره که در نتیجه سرعت برنامه بالاتر میره
- برای مثال اگه توی برنامه import/export هایی داشته باشیم که هیچ جایی استفاده نمیشن، ابزارهایی مثل وبپک هنگام باندل کردن برنامه با آنالیزهایی که انجام میدن متوجه این import/export ها میشن و اونها از خروجی نهایی حذف میکنن
- به این مرحله از عملیات باندل کردن به اصطلاح گفته میشه Tree Shaking یا Dead Code Elimination
عکس از Unsplash
#tips
- وقتی با ابزارهایی مثل وبپک میخوایم از یک برنامهٔ جاوااسکریپتی بیلد بگیریم، تکنیک Tree Shaking با حذف کدهای اضافی و بلااستفاده (به قول معروف Dead Code) بهمون کمک میکنه تا حجم کدهای کمتری توی باندل نهایی قرار بگیره که در نتیجه سرعت برنامه بالاتر میره
- برای مثال اگه توی برنامه import/export هایی داشته باشیم که هیچ جایی استفاده نمیشن، ابزارهایی مثل وبپک هنگام باندل کردن برنامه با آنالیزهایی که انجام میدن متوجه این import/export ها میشن و اونها از خروجی نهایی حذف میکنن
- به این مرحله از عملیات باندل کردن به اصطلاح گفته میشه Tree Shaking یا Dead Code Elimination
عکس از Unsplash
#tips
👍45👏3❤1
Ditty | دیتی
🔺چقدر با مفاهیم Core Web Vitals آشنایی داری؟
🔺توی این نظرسنجی، بیشتر شرکتکنندهها درباره Core Web Vitals که یک موضوعِ داغ و مهم توی دنیای امروز فرانتاند هست، گفتن اطلاعی ندارن
- خبر خوب اینه که دوست خوبم، صالح فدائی یکی از با دانشترین دولوپرهایی که میشناسم، قراره توی یک همایش درباره Core Web Vitals صحبت کنه 👋
- پیشنهاد میکنم این همایش رو از دست ندین. برای اطلاعات بیشتر این پست رو ببینین:
https://news.1rj.ru/str/quera_ir/1692
- صالح توی گروه دیتی هست. سوالی داشتین توی گروه بپرسین
#frontend
- خبر خوب اینه که دوست خوبم، صالح فدائی یکی از با دانشترین دولوپرهایی که میشناسم، قراره توی یک همایش درباره Core Web Vitals صحبت کنه 👋
- پیشنهاد میکنم این همایش رو از دست ندین. برای اطلاعات بیشتر این پست رو ببینین:
https://news.1rj.ru/str/quera_ir/1692
- صالح توی گروه دیتی هست. سوالی داشتین توی گروه بپرسین
#frontend
👏12❤2👍2
🔺سایپرس (Cypress) یکی از جالبترین و مدرنترین ابزارهای تست End to End برنامههای فرانت هست. یکی از دوستان زحمت کشیده و داره آموزشهایی از این ابزار به صورت ویدئویی و رایگان منتشر میکنه. پیشنهاد میکنم سری به این کانال بزنین:
https://news.1rj.ru/str/automationcamp
#links
https://news.1rj.ru/str/automationcamp
#links
www.cypress.io
Testing Frameworks for Javanoscript | Write, Run, Debug | Cypress
Simplify front-end testing with Cypress' open-source app. Explore our versatile testing frameworks for browser-based applications and components.
👍16❤1🥰1
🔺توابع Debounce و Throttle چه فرقی با هم دارن؟ 🤔
- هر دو تابع شباهتهای زیادی دارن و برای به تاخیر انداختن اجرای یک قطعه کد به کار میرن. به قول معروف برای Rate Limiting
- تابع Throttle مشخص میکنه که کدهای ما توی یک بازه زمانی مشخص فقط یک بار اجرا بشه
- مثلاً میخوایم یک قطعه کد توی بازه زمانی ۱۰ ثانیه، حداکثر یکبار اجرا بشه. اینجا از تابع Throttle استفاده میکنیم
- با تابع Debounce میتونیم مطمئن بشیم که یک قطعه کد دوباره اجرا نمیشه مگر اینکه مقدار مشخصی از زمان گذشته باشه
- معروفترین مثال Debounce برای پیادهسازی جستجوی لحظهای هست. ابتدا صبر میکنیم تا کاربر دست از تایپ کردن بکشه و بعد جستجو رو شروع میکنیم. مثلاً میگیم اگه از آخرین تایپ کاربر ۱ ثانیه گذشته بود جستجو رو شروع کن. در غیر این صورت، جستجو رو به تعویق بنداز
- به زودی توی دیتی نحوه پیادهسازی این توابع رو قرار میدم (منابع)
#tips
- هر دو تابع شباهتهای زیادی دارن و برای به تاخیر انداختن اجرای یک قطعه کد به کار میرن. به قول معروف برای Rate Limiting
- تابع Throttle مشخص میکنه که کدهای ما توی یک بازه زمانی مشخص فقط یک بار اجرا بشه
- مثلاً میخوایم یک قطعه کد توی بازه زمانی ۱۰ ثانیه، حداکثر یکبار اجرا بشه. اینجا از تابع Throttle استفاده میکنیم
- با تابع Debounce میتونیم مطمئن بشیم که یک قطعه کد دوباره اجرا نمیشه مگر اینکه مقدار مشخصی از زمان گذشته باشه
- معروفترین مثال Debounce برای پیادهسازی جستجوی لحظهای هست. ابتدا صبر میکنیم تا کاربر دست از تایپ کردن بکشه و بعد جستجو رو شروع میکنیم. مثلاً میگیم اگه از آخرین تایپ کاربر ۱ ثانیه گذشته بود جستجو رو شروع کن. در غیر این صورت، جستجو رو به تعویق بنداز
- به زودی توی دیتی نحوه پیادهسازی این توابع رو قرار میدم (منابع)
#tips
Stack Overflow
Difference between throttling and debouncing a function
Can anyone give me an in-simple-words explanation about the difference between throttling and debouncing a function for rate-limiting purposes?
To me, both seem to do the same the thing. I have che...
To me, both seem to do the same the thing. I have che...
👍27🔥6
🔺متد
- تا به حال جایی مجبور شدین از
- برای آشنایی با متد
https://ditty.ir/p/XolQJ
پ.ن: زحمت کد توی عکس رو تماماً GitHub Copilot کشیده 😁
#javanoscript
reduceRight کاملاً مشابه reduce عمل میکنه با این تفاوت که از راست به چپ پیمایش انجام میده- تا به حال جایی مجبور شدین از
reduceRight استفاده کنین؟- برای آشنایی با متد
reduce این پست رو بخونین:https://ditty.ir/p/XolQJ
پ.ن: زحمت کد توی عکس رو تماماً GitHub Copilot کشیده 😁
#javanoscript
👍24❤3👏3
Ditty | دیتی
🔺توابع Debounce و Throttle چه فرقی با هم دارن؟ 🤔 - هر دو تابع شباهتهای زیادی دارن و برای به تاخیر انداختن اجرای یک قطعه کد به کار میرن. به قول معروف برای Rate Limiting - تابع Throttle مشخص میکنه که کدهای ما توی یک بازه زمانی مشخص فقط یک بار اجرا بشه -…
🔺پیادهسازی توابع Throttle و Debounce توی جاوااسکریپت با جزییات فراوان:
https://ditty.ir/499
#javanoscript
https://ditty.ir/499
#javanoscript
دیتی | Ditty.ir
پیادهسازی توابع Throttle و Debounce در جاوااسکریپت
با دو تابع آشنا میشیم که کمک میکنن برنامهٔ بهینهتر و سریعتر و کاربرد پذیرتر داشته باشیم
🔥14👍8🎉1
🔺دوستان زحمت کشیدن و یک پکیج اختصاصی برای عمل تفریق توی جاوااسکریپت طراحی کردن: 😄
https://www.npmjs.com/package/subtract
#links
https://www.npmjs.com/package/subtract
#links
npm
npm: subtract
subtract numbers. Latest version: 0.0.3, last published: 7 years ago. Start using subtract in your project by running `npm i subtract`. There are no other projects in the npm registry using subtract.
😁29🤬10🤩3👏2🔥1
Ditty | دیتی
🔺دوستان زحمت کشیدن و یک پکیج اختصاصی برای عمل تفریق توی جاوااسکریپت طراحی کردن: 😄 https://www.npmjs.com/package/subtract #links
🔺در راستای زحمات دوستان، یک پکیج وجود داره به اسم is-odd با ۲۰۰هزار دانلود هفتگی که برای تشخیص عدد فرد استفاده میشه:
https://www.npmjs.com/package/is-odd
- یک پکیج دیگه وجود داره به اسم is-even که برای تشخیص عدد زوج استفاده میشه، ۴۲۹هزار نصب هفتگی داره و توی خودش داره به شکل زیر از پکیج is-odd استفاده میکنه:
https://www.npmjs.com/package/is-odd
- یک پکیج دیگه وجود داره به اسم is-even که برای تشخیص عدد زوج استفاده میشه، ۴۲۹هزار نصب هفتگی داره و توی خودش داره به شکل زیر از پکیج is-odd استفاده میکنه:
var isOdd = require('is-odd');
module.exports = function isEven(i) {
return !isOdd(i);
};
#tips😁49🤯8👍4👎3🔥2
🔺آقای مارتین فاولر میگه: یک برنامهنویس بد کدی مینویسه که فقط یک کامپیوتر بتونه اون رو درک کنه. اما یک برنامهنویس خوب کدی مینویسه که یک انسان بتونه اون رو متوجه بشه!
- توی Code Review هایی که انجام میدم و رزومههایی که بررسی میکنم، معمولاً اولین و مهمترین معیار برای قبولی کد، تمیزی و خوانایی اون هست. و کار کردن کد اولویت دوم
- میخوایم با چند مقاله آشنا بشیم که کمک میکنن کدهای تمیزتر و خواناتری داشته باشیم:
• Clean Code Explained – A Practi...
• Clean Code concepts adapted for...
• Clean Code Practice: How to write...
• JavaScript Clean Coding Best P...
• Function parameters in JavaScript
• Keeping your code clean
• Best Practices for Using Modern...
• Best practices for cross node/w...
• Writing Clean Code
• Writing Clean Code and The Pra...
• Clean code, dirty code, human...
• Practical Ways to Write Better...
• The Must-Know Clean Code Princ...
منبع
#javanoscript
- توی Code Review هایی که انجام میدم و رزومههایی که بررسی میکنم، معمولاً اولین و مهمترین معیار برای قبولی کد، تمیزی و خوانایی اون هست. و کار کردن کد اولویت دوم
- میخوایم با چند مقاله آشنا بشیم که کمک میکنن کدهای تمیزتر و خواناتری داشته باشیم:
• Clean Code Explained – A Practi...
• Clean Code concepts adapted for...
• Clean Code Practice: How to write...
• JavaScript Clean Coding Best P...
• Function parameters in JavaScript
• Keeping your code clean
• Best Practices for Using Modern...
• Best practices for cross node/w...
• Writing Clean Code
• Writing Clean Code and The Pra...
• Clean code, dirty code, human...
• Practical Ways to Write Better...
• The Must-Know Clean Code Princ...
منبع
#javanoscript
freeCodeCamp.org
Clean Code Explained – A Practical Introduction to Clean Coding for Beginners
By Yiğit Kemal Erinç "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
🔥37👍20❤9
🔺آمار نظرسنجی Stackoverflow سال ۲۰۲۲ هم منتشر شد
» نکتههایی از این آمار:
• برای دهمین سال پیاپی و طبق معمول، جاوااسکریپت پر استفادهترین زبان
• دیتابیس MySQL پراستفادهترین دیتابیس
• نود جیاس و ریاکت پراستفادهترین فریمورکهای وب
• ویاس کد (VS Code) پراستفادهترین IDE
• زبان Rust دوستداشتنیترین زبان و MATLAB ترسناکترین
• دوستداشتنیترین دیتابیس PostgreSQL
• دوستداشتنیترین فریمورکهای وب Phoenix و Svelte و Deno
• ترسناکترین فریمورکهای وب Angular.js و Drupal و jQuery
• دوستداشتنیترین ابزارها Docker و Kubernetes
• دوستداشتنیترین IDE ها Neovim و VS Code
• ترسناکترین IDE ها NetBeans و Eclipse
• به طور میانگین، از سال ۲۰۲۱ تا ۲۰۲۲ میزان دستمزدها ۲۳٪ افزایش داشته
• زبانهای Clojure و Erlang و #F پردرآمدترین زبانها
» آمار با جزییات کامل
#stats
» نکتههایی از این آمار:
• برای دهمین سال پیاپی و طبق معمول، جاوااسکریپت پر استفادهترین زبان
• دیتابیس MySQL پراستفادهترین دیتابیس
• نود جیاس و ریاکت پراستفادهترین فریمورکهای وب
• ویاس کد (VS Code) پراستفادهترین IDE
• زبان Rust دوستداشتنیترین زبان و MATLAB ترسناکترین
• دوستداشتنیترین دیتابیس PostgreSQL
• دوستداشتنیترین فریمورکهای وب Phoenix و Svelte و Deno
• ترسناکترین فریمورکهای وب Angular.js و Drupal و jQuery
• دوستداشتنیترین ابزارها Docker و Kubernetes
• دوستداشتنیترین IDE ها Neovim و VS Code
• ترسناکترین IDE ها NetBeans و Eclipse
• به طور میانگین، از سال ۲۰۲۱ تا ۲۰۲۲ میزان دستمزدها ۲۳٪ افزایش داشته
• زبانهای Clojure و Erlang و #F پردرآمدترین زبانها
» آمار با جزییات کامل
#stats
👍44❤8👎2
🔺توی #تایپاسکریپت اگه بخوایم یک مقدار رو غیر قابل تغییر یا Immutable کنیم، راههای زیادی وجود داره که یکی از جالبترین اونها استفاده از Const Assertion هست
- با این ویژگی اینجا آشنا بشین:
ditty.ir/500 💯
#typenoscript
- با این ویژگی اینجا آشنا بشین:
ditty.ir/500 💯
#typenoscript
دیتی | Ditty.ir
با Const Assertion تایپاسکریپت چه کارهایی میشه کرد؟
با قابلیتی آشنا میشیم که خیلی راحت اجازه میده مقادیری غیر قابل تغییر یا به قول معروف Immutable داشته باشیم
🔥17👍8
🔺توی تایپاسکریپت، Narrowing یعنی چی؟ 🤔
- اگه مستندات و آموزشهای تایپاسکریپت رو خونده باشین، حتماً واژه Narrowing رو زیاد دیدین
- معنی تحتاللفظی این واژه یعنی محدود کردن یا باریک کردن
- تایپاسکریپت با عملیات Narrowing کاری میکنه که یک تایپ به شکل یک تایپ خاصتر و مشخصتر برای ما در دسترس باشه
- توی عکس همونطور که میبینیم، پارامتر
- همچنین توی بلاک
#typenoscript
- اگه مستندات و آموزشهای تایپاسکریپت رو خونده باشین، حتماً واژه Narrowing رو زیاد دیدین
- معنی تحتاللفظی این واژه یعنی محدود کردن یا باریک کردن
- تایپاسکریپت با عملیات Narrowing کاری میکنه که یک تایپ به شکل یک تایپ خاصتر و مشخصتر برای ما در دسترس باشه
- توی عکس همونطور که میبینیم، پارامتر
x ممکنه رشته باشه یا عدد. توی این کد دو عملیات Narrowing انجام گرفته: یکی برای بلاک if و یکی هم برای else
- با این ویژگی، با پارامتر x توی بلاک if فقط به صورت رشته رفتار میشه. برای مثال اگه متد toFixed رو صدا بزنیم خطا میگیریم. چون توی این بلاک، x فقط به صورت رشته قابل دسترس هست- همچنین توی بلاک
else تایپاسکریپت میدونه که نوع x دیگه رشته نیست و قطعاً عددی هست. پس با اون مثل یک عدد رفتار میکنه#typenoscript
👍27🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🔺به این ویدئوی کوتاه نگاه کنین، میخوایم درباره یک اصل از Core Web Vitals صحبت کنیم
- کاربر قصد داره روی دکمه خاکستری بزنه، اما درست قبل از کلیک، یک باکس سفید بالای فرم نمایش داده میشه و کاربر ناخواسته دکمهٔ آبی رو کلیک میکنه 🤦♂️
- گوگل توی سومین اصل Core Web Vitals درباره Cumulative Layout Shift (مخفف: CLS) صحبت میکنه و میگه توی یک صفحهٔ ضعیف، بخاطر لود شدن مرحله به مرحلهٔ المنتها (مثل لود شدن یک عکس سنگین) شیفتها و جابجاییهای ناخواستهای رخ میده که برای کاربر گیجکننده هست که در نتیجه UX و امتیاز اون صفحه پایین میاد
- گوگل با مطرح کردن مباحثی مثل Core Web Vitals داره میگه که User Experience بیشتر از هر موقع دیگهای اهمیت داره و در نتیجه یک صفحه وب زمانی امتیاز خوبی میگیره که یک کاربر توی اون احساس راحتی کنه
- منبع ویدئو
#tips
- کاربر قصد داره روی دکمه خاکستری بزنه، اما درست قبل از کلیک، یک باکس سفید بالای فرم نمایش داده میشه و کاربر ناخواسته دکمهٔ آبی رو کلیک میکنه 🤦♂️
- گوگل توی سومین اصل Core Web Vitals درباره Cumulative Layout Shift (مخفف: CLS) صحبت میکنه و میگه توی یک صفحهٔ ضعیف، بخاطر لود شدن مرحله به مرحلهٔ المنتها (مثل لود شدن یک عکس سنگین) شیفتها و جابجاییهای ناخواستهای رخ میده که برای کاربر گیجکننده هست که در نتیجه UX و امتیاز اون صفحه پایین میاد
- گوگل با مطرح کردن مباحثی مثل Core Web Vitals داره میگه که User Experience بیشتر از هر موقع دیگهای اهمیت داره و در نتیجه یک صفحه وب زمانی امتیاز خوبی میگیره که یک کاربر توی اون احساس راحتی کنه
- منبع ویدئو
#tips
👍44😁5❤3
🔺معیار LCP از Core Web Vitals چیه؟ 🤔
- این اولین معیار از Core Web Vitals و مخفف Largest Contentful Paint هست
- گوگل توی این معیار، بزرگترین محتوای توی صفحه (مثل عکس، ویدئو، بلاک متنی) رو نگاه میکنه و بررسی میکنه که این محتوا توی چه مدت زمانی لود میشه
- هر چقدر مدت زمان لود شدن این محتوا کمتر باشه، امتیاز صفحه برای LCP بهتر خواهد بود. مثلاً اگه بزرگترین المنت صفحه یک تصویر باشه و این تصویر توی مدت زمان زیادی لود بشه، این صفحه امتیاز پایینی برای LCP میگیره و نیاز به بهینهسازی داره
- عدد خوب برای LCP یک صفحه از ۰ تا ۲.۵ ثانیه هست. عددی بین ۲.۵ تا ۴ ثانیه یک معیار متوسط هست و نیاز به بهینهسازی داره و عددی بزرگتر از ۴ ثانیه به عنوان یک صفحه ضعیف شناخته میشه
- با استفاده از تکنیکهای بهینهسازی مثل preload و استفاده از CDN ها میتونیم یک LCP خوب داشته باشیم
#tips
- این اولین معیار از Core Web Vitals و مخفف Largest Contentful Paint هست
- گوگل توی این معیار، بزرگترین محتوای توی صفحه (مثل عکس، ویدئو، بلاک متنی) رو نگاه میکنه و بررسی میکنه که این محتوا توی چه مدت زمانی لود میشه
- هر چقدر مدت زمان لود شدن این محتوا کمتر باشه، امتیاز صفحه برای LCP بهتر خواهد بود. مثلاً اگه بزرگترین المنت صفحه یک تصویر باشه و این تصویر توی مدت زمان زیادی لود بشه، این صفحه امتیاز پایینی برای LCP میگیره و نیاز به بهینهسازی داره
- عدد خوب برای LCP یک صفحه از ۰ تا ۲.۵ ثانیه هست. عددی بین ۲.۵ تا ۴ ثانیه یک معیار متوسط هست و نیاز به بهینهسازی داره و عددی بزرگتر از ۴ ثانیه به عنوان یک صفحه ضعیف شناخته میشه
- با استفاده از تکنیکهای بهینهسازی مثل preload و استفاده از CDN ها میتونیم یک LCP خوب داشته باشیم
#tips
👍11🔥3
سلام دوستان. متاسفم بابت اینکه کمتر دارم فعالیت میکنم. واقعاً دوست دارم مثل سابق فعالیت داشته باشم. اما توی برههای هستم که کمتر میتونم تمرکز داشته باشم. ولی هدفم اینه که خیلی زود با گذشت از این برهه بتونم دوباره به صورت مستمر فعالیت داشته باشم. خواستم تشکر کنم از اینکه حضور دارین و امیدوارم با دعای خیرتون بتونم مثل سابق و حتی بهتر فعالیت کنم و در خدمتتون باشم 🌹❤️
❤129👍12👏2
🔺اگه توی جاوااسکریپت تازه کار هستین، پیشنهاد میکنم یکی از پرطرفدارترین قسمتهای «جاوااسکریپت برای مبتدیان» توی دیتی که ساختن SPA با Vanilla JS (جاوااسکریپت خام) هست رو ببینین و بررسی کنین:
» Demo
» Source Code
» Video
#javanoscript
» Demo
» Source Code
» Video
#javanoscript
GitHub
alin11.github.io/playground/vanillajs-single-page-application at master · AliN11/alin11.github.io
Contribute to AliN11/alin11.github.io development by creating an account on GitHub.
🔥18👍6❤2
🔺به جاوااسکریپت یک متد جدید اضافه شده به اسم hasOwn که کارایی اون خیلی شبیه به hasOwnProperty هست و به زودی قراره به عنوان جایگزین این متد معرفی بشه
- این متد از آبجکتِ Object در دسترس هست و بررسی میکنه که آیا یک پراپرتی توی یک آبجکت وجود داره یا نه
- توی این پست به صورت اختصاصی با این متد و تفاوتهای اون با hasOwnProperty آشنا بشین:
ditty.ir/503 💯
#javanoscript
- این متد از آبجکتِ Object در دسترس هست و بررسی میکنه که آیا یک پراپرتی توی یک آبجکت وجود داره یا نه
- توی این پست به صورت اختصاصی با این متد و تفاوتهای اون با hasOwnProperty آشنا بشین:
ditty.ir/503 💯
#javanoscript
دیتی | Ditty.ir
همه چیز از متد hasOwn جاوااسکریپت
با یک متد جدید توی جاوااسکریپت آشنا میشیم که کارایی مشابه hasOwnProperty داره و قراره جایگزین این متد بشه
🔥21👍6👏2
🔺توی کروم DevTools یک تب داریم به اسم Changes که توی اون میتونین تغییرات موقتی که به استایلها و جاوااسکریپت دادین رو رصد کنین
- برای مشاهده تب Changes توی DevTools مثل عکس سوم عمل کنین
- اطلاعات بیشتر
#tips
- برای مشاهده تب Changes توی DevTools مثل عکس سوم عمل کنین
- اطلاعات بیشتر
#tips
❤26👍18🔥4👏2