آموزش Svelte فریمورکی که React را به چالش میکشد!
چرا SvelteJS میتواند بهترین فریمورک برای توسعه وب باشد راکت
هرچند Angular قابلیتهای فوقالعادهای دارد، اما شاید برای هر پروژهای مناسب نباشد. برای پروژههای کوچک و سبک، استفاده از Angular ممکن است به پیچیدگی و حجم پروژه اضافه کند. همچنین، یادگیری Angular به دلیل گستردگی امکاناتش کمی دشوارتر است و ممکن است برای توسعهدهندگانی که تازه وارد دنیای فریمورکهای جاوااسکریپت شدهاند، چالشبرانگیز باشد. در چنین شرایطی، انتخاب فریمورکهای سبکتر مثل React یا Vue.js منطقیتر است. Angular یکی از قدیمیترین و پرقدرتترین فریمورکهای جاوااسکریپت است که توسط تیم گوگل توسعه داده شده و به طور مداوم بهروزرسانی و بهبود مییابد. برخلاف React و Vue.js که بیشتر به عنوان کتابخانه شناخته میشوند، Angular یک فریمورک کامل و جامع است که تمام ابزارهای لازم برای ساخت برنامههای تحت وب را در خود جای داده است.
هر دو مدعی ثابت میکنند که ابزار خوبی برای ایجاد رابطهای کاربری سریع و قدرتمند هستند. بنابراین انتخاب شما به ترجیحات، سناریوها و نیازمندیهای پروژه بستگی دارد. همانطور که قبلا اشاره کردم، من فقط یک برنده تعیین نمیکنم زیرا پاسخ بسیار نسبی است و هر دو از نظر اهداف پروژه عملکرد ویژهای خواهند داشت. ویژگی 3- برخلاف React، با کامپوننتهای Svelte میتوانید کد را به گونهای بنویسید که شبیه مدلهای توسعه وب مانند HTML، CSS و JS باشد. همچنین در Svelte کد مختصرتری مینویسید، زیرا یک فریمورک انعطافپذیر است.
همچنین هیچ بخش از CSS که در اپلیکیشن نوشته شده، ظاهر انتخابگر تاریخ را تغییر نمیدهد. پوشه src شامل همه مواردی است که برای تغییر اپلیکیشن لازم داریم و آن فایل main.js است. میبینید که چگونه به روزرسانی foo قبل از تعریف bar اتفاق افتاده؟ به این دلیل است که کامپایلر به جای بررسی از بالا به پایین، کد Svelte را به ترتیب توپولوژی تجزیه میکند. اگر همین کد را به ترتیب توپولوژیک اجرا کنید، هیچ خطایی پیش نمیآید. در عوض نگاهی به همه متغیرها میاندازد و یک نمودار وابستگی ایجاد میکند (یعنی چه چیزی ابتدا به چه چیز دیگری نیاز دارد).
مخصوصا اگر کد نیاز به تغییرات داینامیک داشته باشد، باید از ساختارهای ویژهای استفاده کنید که به کامپایلر متصل شود. با این وجود، جامعه به سرعت در حال رشد است و لیستی از پروژههای شخص ثالث که توسط انجمن برای Svelte ساخته شده است، در حال افزایشاند. توسعه دهندگانی که روی ابزارهای مرتبط با Svelte کار میکنند نابغه هستند و همیشه میتوانید از کانالDiscord ، Twitter یا Reddit درخواست کمک کنید. Svelte اخیرا پشتیبانی از TypeScript را نیز اضافه کرده و بسیار عالی عمل میکند. به طور خودکار سود میبریم، اما این بدان معنی نیست که بتوانیم چندین کامپوننت را از یک فایل واحد صادر کنیم.
و همهی شواهد نشاندهندهی این موضوع است که در سالهای آینده هم این روال ادامه خواهد یافت. Svelte یک کتابخانه یا فریمورک ساده جاوا اسکریپت نیست، بلکه یک کامپایلر مدرن برای این زبان محسوب میشود. این کامپایلر به ما امکان میدهد که کدهایی با درک آسان برای جاوا اسکریپت بنویسیم و سپس آن را به کد با کارایی بالا کامپایل کنیم که روی مرورگر اجرا میشود. در این نوشته به جمعبندی سلسله مقالات آموزش Svelte مجله فرادرس میپردازیم. Svelte یک کامپایلر است که کد برنامه را در زمان ساخت تبدیل میکند، اما React از DOM مجازی برای رندر کد در زمان اجرا بهره میگیرد. به علاوه React قویتر است و به طور گسترده در بین توسعه دهندگان استفاده میشود.
یادگیری آسان و ورود سریع به دنیای توسعه اگر قبلاً با جاوااسکریپت کار کردهاید، کار با React را سریع یاد میگیرید. ساختار این کتابخانه طوری است که توسعهدهندگان تازهکار نیز به راحتی میتوانند با آن شروع کنند. از طرف دیگر، مستندات جامع و آموزشهای فراوانی در اینترنت وجود دارد که کار شما را راحتتر میکند. نخستین دریافت اغلب افراد پس از مواجهه با Svelte این است که آن را بسیار شبیه به جاوا اسکریپت خالی میدانند، تا این که شبیه به کار با فریمورک باشد. البته برخی قواعد وجود دارند و قالبهایی نیز وجود دارند که 100% جاوا اسکریپت نیستند (بیشتر شبیه HTML هستند). اما اغلب مواردی که در فریمورکهای دیگر پیچیده محسوب میشوند در Svelte بسیار ساده و سبک هستند.
با وجود الگوهای ساختاری مشخص و نظمدهی قوی به کدها، مدیریت پروژههای بزرگ با Angular بسیار آسانتر میشود. توسعه وب مدرن بیشتر متمرکز بر کامپوننتها است و Svelte نیز در این زمینه استثنا محسوب نمیشود. کامپوننت یک جزء منفرد از اپلیکیشن است که مستقل محسوب میشود و میتواند ارجاعی به کامپوننتهای دیگر داشته باشد تا خروجی آن را ترکیب کند. نقل قول بالا همان چیزی است که ریچ را به این ایده سوق داده که یک فریمورک میتواند چیزی باشد که در مرحله ساخت اجرا شود و در زمان اجرا نیازی به داشتن واسطه برای کد شما نباشد. به خاطر این ایده است که Svelte صرفا یک کامپایلر است و فریمورک نیست. با این کار هر زمان اطلاعات شما تغییر کرد، دیگر نگران به روزرسانی دستی وضعیت خود نباشید.
برای دسترسی به Svelte و کار با آن، میتوانید به وبسایت رسمی Svelte یا به GitHub مراجعه کنید و مراحل نصب و شروع کار با این فریمورک را بهراحتی دنبال کنید. اما از آنجایی که می توان در کنار سایر فریمورک ها مورد استفاده قرار گیرد ، دیگر نیازی نیست که شما از انتخاب های دیگر خودداری کنید. چه کسی می داند ، شاید به مرور زمان تصمیم به سرمایه گذاری در Svelte برای تیم توسعه شما بسیار سودمند باشد؟ بدون ریسک هیچ وقت نمی توان به نتیجه ایده آل رسید. در این مقاله، به بررسی دقیقتر ویژگیها، مزایا و معایب این دو فناوری خواهیم پرداخت تا بتوانید بر اساس نیازهای خاص پروژه خود، انتخابی هوشمندانه داشته باشید. ویژگی 4- امروزه ادغام Svelte با TypeScript در حال انجام است و تا زمان تکمیل آن باید تمام مراحل typification را به تنهایی اجرا کرد.
نیازی به ابزارهای پیچیده مدیریت شخص ثالث مانند Redux یا Vuex نیست. استفاده از فریمورکهای Vue.js و React برای ساخت سایتهای پویا و مدرن به یک ترند تبدیل شده است. با این حال این فریمورکها همیشه گزینههای خوبی به شمار نمیروند چون به طور عادی سنگین هستند و گاهی پیچیدگیهای غیرضروری به پروژه تحمیل میکنند. نکته عجیب و غریب دیگری وجود دارد که باید به آن اشاره کرد که من مسلما از این موضوع خیلی هیجان زده نیستم و آن انتقال prop ها به کامپوننتهاست. بله کاملا کاربردی است و یادگیری آن آسان است، اما سینتکس برای برخی افراد در اولویت است. برای رسیدگی به prop ها نیز میتوانیم به راحتی آنها را به کامپوننتها در هر کجا که بخواهیم منتقل کنیم.
فریمورکهای وب زیاد دیگری میتوانند اتصالهای دوطرفهای را ایجاد کنند و این یک الگوی رایج است. در این بخش از سلسله مقالات آموزش Svelte در مورد Binding در Svelte صحبت کردهایم. این تصویر به وضوح نشان میدهد که هر دو فریمورک React و Svelte، به هدف نهایی یعنی بهروزرسانی و مدیریت DOM میرسند، اما رویکردهای متفاوتی دارند. با Svelte دیگر نگران نوشتن کلاسها یا استایلهای منحصر به فرد نیستید. همچنین استایلها در تگهای مخصوص خود دارای کامپوننتهای محدود هستند و این به شما امکان میدهد یک استایل را انعطاف پذیر کنید.
همچنین DOM مجازی را با DOM واقعی مقایسه میکند تا تعیین کند که چه چیزی به خاطر این به روزرسانی داده تغییر کرده است. سپس فقط قسمتهایی از DOM را که با نسخه جدید در DOM مجازی مطابقت ندارد، دوباره تغییر داده و هر بار که این فرایند صورت میگیرد نیازی به بروزرسانی مجدد کل DOM نیست. هنگامی که یک برنامه React را رندر میکنید، ریاکت یک کپی از DOM را در چیزی به نام DOM مجازی نگه میدارد. DOM مجازی مانند واسطهای بین کد ریاکت و آنچه مرورگر برای DOM ترسیم میکند، عمل خواهد کرد. با استفاده از Svelte میتوانیم اتصالهای دوطرفهای بین دادهها و UI ایجاد کنیم.
ReactJS در خط مقدم توسعه وب قرار دارد و به طور یکپارچه با ابزارهای پیشرفته مانند Vite و Webpack ادغام می شود. اکوسیستم آن شامل ابزارهای قدرتمندی مانند Babel برای جمعآوری جاوا اسکریپت، ESLint برای حفظ کیفیت کد و Prettier برای قالببندی سازگار است. این ابزارها در مجموع گردش کار توسعه را بهبود میبخشند، خطاها را کاهش میدهند و تضمین میکنند که محصول نهایی هم با کیفیت بالا و هم قابل نگهداری است. این ادغام قوی به توسعه دهندگان یک تجربه پیچیده و کارآمد ارائه می دهد و امکان ایجاد برنامه های پیچیده را به راحتی فراهم می کند. از سوی دیگر، ReactJS که یکی از محبوبترین کتابخانههای جاوااسکریپت است، به توسعه دهندگان ابزارهایی قدرتمند برای ساخت برنامههای پیچیده و مقیاسپذیر ارائه میدهد. این کتابخانه با بهرهگیری از اکوسیستم گسترده و قابلیتهای منحصر به فرد خود، به عنوان یک استاندارد طلایی در توسعه رابطهای کاربری شناخته میشود.
در میان گزینههای مختلف، دو نام برجسته به نامهای Svelte و ReactJS به چشم میخورند. این دو فناوری به طور قابل توجهی بر صنعت توسعه وب تاثیر گذاشتهاند و هر کدام با ویژگیها و امکانات منحصر به فرد خود، توجه توسعهدهندگان را به خود جلب کردهاند. هنگامی که یک برنامه Svelte را اجرا میکنید، کد شما را در vanilla javascript به صورت بسیار بهینه سازی شده کامپایل میکند. این امر عملکرد کلی برنامه را بهبود میبخشد، زیرا مرورگر کار کمتری برای انجام دارد. این اولین باری بود با فریمورکی کار کردم که رویکردی کاملا متفاوت برای حل مسائل توسعه وب مدرن داشت.
اما وقتی کسی به تازگی کار خود را آغاز کرده، بد نیست که کمی انتزاع را بپذیرد تا کارهای جالب را با سرعت بیشتری انجام دهد. "فریمورکها ابزاری برای سازماندهی کد نیستند، بلکه آنها ابزاری برای سازماندهی ذهن شما هستند." سعی کنید کد بالا را به صورت کامل مطالعه کرده و حتما آن را بررسی کنید. بنابراین در این حالت وقتی Svelte هر عبارتی را با پیشوند $ مشاهده کند، میداند که متغیر سمت چپ مقدار خود را از متغیر سمت راست میگیرد. این عنوان ممکن است کمی اغراق آمیز باشد، اما ایدهای که پشت آن است واقعا همین است.
یکی از نقاط قوت ReactJS، جامعه کاربری گسترده و منابع آموزشی فراوان آن است که یادگیری و استفاده از این فریمورک را تسهیل میکند. Svelte بهعنوان یک فریمورک مدرن و سبک، با کاهش نیاز به کدهای زائد و پیکربندیهای پیچیده، تجربهای ساده و کارآمد برای توسعهدهندگان فراهم میکند. این ویژگیها به خصوص در پروژههایی که نیاز به کارایی بالا و بارگذاری سریع دارند، نقش کلیدی ایفا میکند. تا قبل از اینکه فریمورکهای جاوا اسکریپت معروف شوند، توسعه وباپلیکیشنها و برنامههای تحت وب بسیار چالشبرانگیز بود. این مشکلات باعث عدم صحت عملکرد و اجرای نادرست برنامههای وب میشد. در این نخستین مطلب تلاش کردهایم توضیحاتی در مورد خود فریمورک و کامپوننتهای آن ارائه کنیم.
با اینکه Svelte به شما کمک میکند رابط کاربری خود را با آخرین وضعیت خود سازگار کنید، میتوانید در طول پروژه بر منطق کار خود تمرکز کنید. برای مطالعه بیشتر میتوانید مقاله ۱۰ دلیل برای اینکه Svelte را به هر توسعه دهنده وب جدیدی پیشنهاد کنیم را نیز بررسی کنید. تمام تلاش ما در برند reactapp در کنار آموزش با کیفیت و استفاده از دانش روز، اضافه کردن چاشنی تجربه چندین ساله فعالیت در پروژه های داخلی و خارجی بوده. زمانی که شما به یادگیری اختصاص دادید برای ما اهمیت بسیار بالایی داره و به همین دلیل سعی میکنیم متحوای تولید شده، غنی، پر بار و در راستای نیاز های بازار کار باشه. LogRocket مانند یک DVR برای برنامههای وب است که به معنای واقعی کلمه هر آنچه در برنامه React شما اتفاق میافتد را ضبط میکند.
در ادامه این بخش در مورد اسلاتهای Svelte و رویدادهای چرخه عمری Svelte نیز صحبت کردهایم. این بستهها امکان استفاده از TypeScript برای تعریف تایپها و افزایش دقت کد را فراهم میکنند. با معرفی Sapper که یک نسخه Svelte از Next.js است و از Svelte Native برای ساخت برنامههای تلفن همراه بومی بهره میگیرد، در حال رشد است تا به یک رقیب قویتر در حوزه فناوری فرانت-اند تبدیل شود. حتما آن را بررسی و امتحان کنید و در پروژههای واقعی به کار بگیرید تا بتوانید برنامههای سریع Svelte بسازید. React از یک DOM مجازی برای تفسیر کد برنامه در زمان اجرا استفاده میکند.
برای اجرای مرحله ساخت در package.json فقط کافی است یک دستور اضافه کنید و همه چیز آماده است. مطمئنا میتوانید بگویید که اگر مبتدیان آنها را دستکاری نکنند، همه ماژولها و فایلهای اضافی که فریمورکهای دیگر به آنها نیاز ندارند مشکلی ایجاد نمیکنند. اما به نظر من هرچه موارد اضافی برای تازهکارها کمتر در نظر گرفته شود، بهتر است. بنابراین به جای اینکه مبتدیان را مجبور به دستکاری DOM کنید، اجازه دهید آنها مستقیما از متغیرها برای نشانه گذاری استفاده کنند. اکنون میتوانند اصول اولیه state را بدون گرفتار شدن در علفهای هرز فرا بگیرند.
از آنجایی که ما به حق شما برای حفظ حریم خصوصی احترام می گذاریم، می توانید برخی از انواع کوکی ها را مجاز نکنید. برای اطلاعات بیشتر و مدیریت تنظیمات برگزیده خود، روی عناوین دسته بندی های مختلف کلیک کنید. لطفاً توجه داشته باشید که مسدود کردن برخی از انواع کوکی ها ممکن است بر تجربه شما از سایت و خدماتی که ما می توانیم ارائه دهیم تأثیر بگذارد. این تفاوت بسیار زیادی را از لحاظ عملکرد ایجاد میکند، به ویژه در دستگاههای کم مصرف یا برنامههایی که پردازش آنها وابسته به CPU است. زمانی که هیچ هوکی در React وجود نداشت، من در حال یادگیری context بودم و سعی میکردم چیزهای سادهای که این API به من میداد را درک کنم. کانتکست در React از دو کامپوننت اصلی استفاده میکند و اطلاعات را از کامپوننت Provider به کامپوننتهای فرزند خود (Consumer) منتقل مینماید.
توجه داشته باشید که این یک آموزش در مورد نحوه شروع کار با Svelte نیست. اما در تلاش هستیم به زودی یک آموزش تعاملی گام به گام عالی را برایتان آماده کنیم. همه این ویژگی ها به شما کمک میکند تا سریعتر کد بزنید.در ادامه ویژگی هایی که Svelte برای سازمان ها داره رو بیان میکنیم. کوکیها و فناوریهای مشابه در سایتهای ما برای شخصیسازی محتوا و تبلیغات استفاده میشوند. در زیر می توانید جزئیات بیشتر را بیابید و تنظیمات شخصی خود را تغییر دهید. با کلیک بر روی تأیید, یا با کلیک بر روی هر محتوایی در سایتهای ما, با استفاده از این کوکیها و فناوریهای مشابه موافقت می کنید.
این تصویر به مقایسه تفاوتهای کلیدی بین دو فریمورک جاوااسکریپت، React و Svelte میپردازد. در اینجا به بررسی دقیق هر قسمت از تصویر و توضیح مفاهیم آن پرداختهایم. Svelte/motion، svelte/transfer، svelte/animated و svelte/easing ماژولهای قدرتمندی برای ایجاد انیمیشنهای شگفت انگیز به صورت out-of-the-box در اختیار ما قرار میدهند. برای ایجاد انیمیشنهایی که در React ایجاد میکنید نیازی به استفاده از کتابخانه شخص ثالث نیست. امروزه توسعه دهندگان گزینههای زیادی برای انتخاب در میان فناوریهای مختلف دارند. سوال این است که کدام یک قویتر بوده و چه مزایایی برای توسعه دهندگان در اهدافشان به همراه خواهد داشت.
انعطافپذیری در ادغام اگر در حال حاضر از یک پروژه موجود استفاده میکنید و میخواهید بخشی از آن را به کمک Vue.js توسعه دهید، نگران نباشید! Vue به راحتی با پروژههای دیگر ادغام میشود و شما میتوانید بدون نگرانی از ناسازگاریها، فقط بخشهایی از پروژه را به این فریمورک منتقل کنید. در نتیجه، کامپایلر Svelte یک بسته جاوا اسکریپت کوچک و بسیار بهینه شده تولید می کند که می تواند مستقر شود. به همین دلیل است که ریاکت دارای APIهایی مانند shouldComponentUpdate ، useMemo ، React.PureComponent و مواردی از این دست میباشد. بلکه این کامپایلری است که کد شما را میگیرد و جاوااسکریپت بومی را که مستقیما با DOM شما تعامل دارد بدون نیاز به واسطه از بین میبرد.
این یعنی ممکن است منابع آموزشی و ابزارهای جانبی کمتری در اختیار داشته باشید. همچنین، چون این فریمورک نسبتاً جدید است، بسیاری از توسعهدهندگان با آن آشنایی کافی ندارند و ممکن است در پیدا کردن همکاران آشنا به Svelte چالشهایی وجود داشته باشد. این یعنی توسعهدهندگان نیازی به استفاده از کتابخانههای جانبی متعدد ندارند و همه چیز از همان ابتدا در اختیارشان است. هرچند Vue.js یک فریمورک قدرتمند است، اما در برخی شرایط شاید گزینه ایدهآلی نباشد. اگر پروژه شما بسیار بزرگ و سازمانی است و نیاز به راهکارهای جامعی برای مدیریت استیت و دادهها دارید، شاید Angular انتخاب بهتری باشد. همچنین، جامعه کاربری Vue.js نسبت به React کوچکتر است، پس اگر به دنبال راهکارهای متنوع و پشتیبانی گسترده هستید، این نکته را هم در نظر بگیرید.
این اولین و مهمترین تفاوتی است که Svelte در مقایسه با سایر فریمورکها به دنیای برنامهنویسی جاوا اسکریپت ارائه داده است. Svelte به عنوان یک فریمورک مدرن و نوآورانه، تلاش دارد تا مفهوم سنتی توسعه وب را تغییر دهد. این فریمورک با استفاده از تکنولوژیهای جدید و کاهش نیاز به کدهای زائد، تجربهای بینظیر از سرعت و سادگی را ارائه میدهد. در دنیایی که فریمورکهای جاوااسکریپت متعددی وجود دارد، Svelte با یک رویکرد کاملاً متفاوت وارد میدان شد و خیلی سریع توانست نظر توسعهدهندگان را به خود جلب کند. Svelte، برخلاف فریمورکهای دیگر که در زمان اجرا (runtime) عمل میکنند، کامپوننتها را در زمان کامپایل (compile time) به کدهای ساده جاوااسکریپت تبدیل میکند. Vue به دلیل ساختار ساده و یادگیری آسان، برای پروژههای کوچک و متوسط انتخابی عالی است.
برنامه نویسی ربات