svelte چیست


امروزه با توجه به وجود کتابخونه ها و فریمورک های قوی جاوا اسکریپتی مثل react,vue و Angular کسی فکر نمی کرد که یک فریمورک جدید در حوزه وب معرفی بشه.اما با معرفی svelte و رشد سریع اون، ارزش این رو داره که یکبار دیگه بگیم : یک فریمورک جدید جاوا اسکریپت برای کمک به توسعه دهندگان و شرکت های فعال در حوزه IT آمده است.
در این مقاله قصد دارم svelte که یک فریمورک front-end جدید برای تولید برنامه هایی با عملکرد عالی معرفی کنم.امیدوارم تا پایان بدون تفریط و افراط این معرفی را پیش ببرم.اما قبل از آن به reactivity در توسعه app رو مورد بحث قرار میدیم.
reactivity در app development چیست؟
زمانی یک برنامه reactive است که هر گونه تغییری در مقادیر به عنوان مثال در user input به صورت خودکار در DOM که یک ساختار درختی برای نمایش صفحه HTML به کاربر را ارائه می دهد، قرار گیرد.
با معرفی فریمورک ها و کتابخونه های مدرن وب مثل react,vue و Angular برای ساخت برنامه های غیرهمزمان و رویداد محور،امکان ایجاد اپلیکیشن های reactive فراهم گردید.برای این منظور آن ها از تکنیک هایی مثل Virtual DOM استفاده می کنند که برای هر تغییر نیازی به بروزرسانی کل DOM نیست و فقط مواردی که مورد نیاز است بروز رسانی میگردد.پیشنهاد میکنم مقاله Virtual DOM در React رو برای درک این موضوع بخونید.
هدف نهایی Svelte’s نیز ایجاد برنامه های reactive است.اما برای رسیدن به این هدف از تکنیک های دیگری استفاده می کند.
Svelte چگونه کار می کند؟
وقتی که می بینید رویکرد Svelte’s با تمامی فریمورک ها و کتابخونه های محبوبی که در بالا معرفی شد، متفاوت است متوجه می شوید که چرا این همه در مورد آن در چند سال اخیر صحبت بوده است.Svelte کدی که شما می نویسید رو در زمان build کامپایل می کند، بنابراین تنها pure JavaScript به صورت مستقیم در DOM دستکاری میکند تا در مرورگر نمایش داده شود.به همین دلیل disappearing framework نامیده می شود و تا زمانی که کدهای برنامه در مرورگر نمایش داده نشود، هیچ فریمورکی وجود ندارد.
- یک Svelte app از یک یا چند کامپوننت که ترکیبی از HTML , CSS و Javascript در فایل هایی با پسوند svelte . ایجاد می شود.
- درست مانند React یا Vue فریمورک Svelte نیز reactivity برنامه را با همگام سازی DOM با app state مدیریت می کند.
- اما به جای انجام دادن آن در مرورگر،کدهای HTML,CSS و JavaScript را در زمان Build به vanilla JavaScript کامپایل می کند.
- Svelte را می توان برای تهیه یک app مستقل یا به عنوان بخشی از app دیگر ، به همراه فریمورک ها و کتابخانه های دیگر استفاده کرد (یک ویژگی منحصر به فرد نیست ، زیرا همین کار را می توان با React ، Vue یا Angular انجام داد) یا حتی برای توسعه مستقل کامپوننت هایی که در هر جایی کار می کنند ، بدون اینکه به هیچ فریمورک متعارف وابسته باشند، استفاده کرد.
به قطعه کد زیر برای درک ساختار svelte توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
<script> import { quintOut } from 'svelte/easing'; import { fade, draw, fly } from 'svelte/transition'; import { expand } from './custom-transitions.js'; import { inner, outer } from './shape.js'; let visible = true; </script> <style> svg { width: 100%; height: 100%; } path { fill: white; opacity: 1; } label { position: absolute; top: 1em; left: 1em; } .centered { font-size: 20vw; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); font-family: 'Overpass'; letter-spacing: 0.12em; color: #676778; font-weight: 400; } .centered span { will-change: filter; } </style> {#if visible} <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 103 124"> <g out:fade="{{duration: 200}}" opacity=0.2> <path in:expand="{{duration: 400, delay: 1000, easing: quintOut}}" style="stroke: #ff3e00; fill: #ff3e00; stroke-width: 50;" d={outer} /> <path in:draw="{{duration: 1000}}" style="stroke:#ff3e00; stroke-width: 1.5" d={inner} /> </g> </svg> <div class="centered" out:fly="{{y: -20, duration: 800}}"> {#each 'SVELTE' as char, i} <span in:fade="{{delay: 1000 + i * 150, duration: 800}}" >{char}</span> {/each} </div> {/if} <label> <input type="checkbox" bind:checked={visible}> toggle me </label> <link href="https://fonts.googleapis.com/css?family=Overpass:100,400" rel="stylesheet"> |
مزایای Svelte
Svelte امکانات کاملی را برای کیفیت و سرعت توسعه ارائه می دهد که :
- یکی از مزایای اصلی Svelte را میتوان وابستگی کم اون به dependencies اضافی دانست و شما می توانید تمرکز خود را بر روی کد های خود بگذارید تا اینکه درگیر درک مفاهیم پیچیده ای مثل Redux شوید.
- وجود نداشتن virtual DOM- از آنجایی که app به vanilla JS کامپایل میشود،سرعت بالایی خواهد داشت.
- Scope شدن استایل ها در Js به جای Css.
- استفاده نکردن از کتابخانه های state management – این فریمورک یک minimalistic state management را در درون خود دارد.
همه این ویژگی ها به شما کمک میکند تا سریعتر کد بزنید.در ادامه ویژگی هایی که Svelte برای سازمان ها داره رو بیان میکنیم.
آیا باید وقت خود را برای یادگیری Svelte سرمایه گذاری کنم؟
با تمام آنچه گفته شد ، یک سؤال دیگر وجود دارد که ممکن است قبلاً برای شما پیش آمده باشد: آیا Svelte کامل نیست؟ خوب ، حقیقت این است که یک فریمورک نسبتاً جدید ، با اکوسیستم در حال بلوغ است ، که ممکن است برای پروژه های بزرگ مشکل ساز باشد.
اما از آنجایی که می توان در کنار سایر فریمورک ها مورد استفاده قرار گیرد ، دیگر نیازی نیست که شما از انتخاب های دیگر خودداری کنید. چه کسی می داند ، شاید به مرور زمان تصمیم به سرمایه گذاری در Svelte برای تیم توسعه شما بسیار سودمند باشد؟ بدون ریسک هیچ وقت نمی توان به نتیجه ایده آل رسید.
دیدگاهتان را بنویسید