Deno js چیست؟ آیا جایگزین nodejs میشود؟
معرفی Deno js
Deno js یا دینو یه محیط Runtime برای اجرای کدهای جاوااسکریپت و تایپ اسکریپت روی موتور V8 گوگل (همون موتوری که nodejs رو اجرا میکنه) هست. Denojs بهشت برنامه نویسای تایپ اسکریپت هست چرا که اتوماتیک کدهای Typescript رو به Javascript تبدیل میکنه و بعد اجراش میکنه. Deno js با زبان برنامه نویسی Rust نوشته شده و با هدف رفع ۱۰ مشکل Nodejs ساخته شده و یه جورایی آپدیت جدید Nodejs محسوب میشه. Deno اومده تا مشکلاتی رایج در Node مثل Dependecyها، کتابخانه ها، ماژول ها، ابزار tooling و امنیت رو از بین ببره و یه جورایی رقبایی که بخاطر این مشکلات برای جاوااسکریپت شاخ شدن رو یه بار دیگه از میدون خارج کنه.
دینو جی اس چیه؟
دینو یا دنو؟ خب اول از همه سر تلفظ اسمش باهم بحث کنیم، تلفظ درستش دِنو هست. اما خود آقای Rayan Dahl (رایان دال) تو کنفرانس آخرش گفت، تلفظ کنیم دینو که نزدیک به کلمه Dinosaur (دایناسور) هست. حالا اینکه چرا دایناسور نمیدونم، صاحبش عشقش کشیده بذاره دینو بر وزن دایناسور. همین آقای رایان دال خالق پلتفرم nodejs در سال ۲۰۰۹ بوده. نکته جالبش اینجاست که در هر دو اسم Deno و Node از حروف یکسان استفاده شده و فقط ترتیب حروف عوض شده. احتمالا علت نام گذاری Denojs همین نکته بوده که یه اسم با معنی و با حروف node پیشنهاد بدن.
(یه تحلیل شخصی برای علت که بنده دارم) به نظرم همین که اسم Deno چیدمانی متفاوت از node هست و خالق هر دو پلتفرم یک نفر هست پس میشه این احتمال رو داد که قراره جایگزین nodejs بشه و بعد از ۱۰ سال تجربه ای که سر توسعه nodejs بدست آورده میخواد ضعف های nodejs را بهبود و نقطه قوت هاش رو تقویت کنه. البته این تحلیل شخصی هست و هیچ مستندی نداره. اما در ادامه مقاله با مستندات موجود در سایت رسمی Denojs به آدرس deno.land درباره این پلتفرم جنجالی صحبت کنیم.
خب بریم سراغ اصل داستان که Deno چیه؟ و کاربرد Deno چیه؟
Deno js چیست؟
در سال ۲۰۱۸ جناب رایان دال یه کنفرانس داشت که میتونید تو یوتیوب ببینید، درباره ۱۰ تا اشتباه از Nodejs گفت که قراره در پلتفرم جدیدی به اسم nodejs 2 این اشتباهات رو اصلاح کنه و دلیلش هم کاملا مشخصه. یکی از دلایل اصلیش اینه که سال ۲۰۰۹ هنوز اکمااسکریپت ۶ و ۷ معرفی نشده بودند و نود جی اس callback محور بود ولی الان مواردی مثل Promise وجود داره ولی خب امکان آپدیت ورژن nodejs نیست چراکه خیلی از پروژه ها به مشکل میخورن و نمیشه کل پروژه های nodejs رو دوباره تغییر بدهند و ۹ مورد دیگر که تصمیم گرفت در قالب پلتفرمی جدی معرفی کند که طبق آخرین استانداردهای جاوااسکریپت باشد. و این یه نکته جذاب محسوب میشه چون ورژن های اخیر جاوااسکریپت واقعا جذاب و عالی شده.
پس تا اینجای کار متوجه شدید که Deno مثل Node یک پلتفرم مبتنی بر Back-end هست اما هنوز خیلی جای کار داره تا بخواد جایگزین Nodejs بشه.
ویژگی های Deno js
سرعت:
Deno سریع تر از nodejs است، deno از موتور V8 و همچنین قابلیتهای کامپایل از پیش انجام شده.
سازگاری:
Deno با ماژولهای Node.js موجود سازگار است، و کد Node.js موجود خود را بدون هیچ گونه تغییر قابل توجهی اجرا کنید.
امنیت:
Deno از مدل امنیتی sandboxed استفاده میکند که امنیت برنامه های شما را تامین میکند.
شباهت Deno js با Node js چیست؟
-
کاربرد هر دو پلتفرم Node و Deno توسعه سمت بک اند وبسایت و اپلیکیشن هست.
-
در هر دو پلتفرم Denojs و Nodejs با سینتکس جاوااسکریپت میتونیم کد بزنیم.
-
هم دینو و هم نود روی موتور V8 گوگل اجرا میشوند.
تفاوت Deno js با Node js چیه؟
-
امنیت بیشتر Deno js نسبت به nodejs.
-
کتابخانه استاندارد کامل تر Deno به نسبت کتابخانه پیش فرض Node.
-
پشتیبانی دینو از تایپ اسکریپت در هسته پلتفرم.
-
در Deno js هیچ اجباری در استفاده از NPM ندارید.
-
در deno js نیازی به Package.json نیست تا Dependencyها رو کنترل کنید
-
Deno js نیازی به Node_modules نیست
خب قراره در ادامه مقاله تخصصی تر بررسی کنیم که Deno برای چی اومده و آیا جایگزین مناسبی برای Node هست؟
مقاله مرتبط: معرفی پلتفرم Nodejs
مزایا و معایب Deno js
مزایای Deno js:
- امنیت: deno به طور پیش فرض در حالت امن اجرا میشود و برای دسترسی به فایل ها مجوز خاصی نیاز دارد.
- عدم نیاز به نصب جداگانه: نیازی به نصب جداگانه کتابخانه ها نیست
- پشتیبانی از تایپ اسکریپت: Deno به طور پیش فرض از تایپ اسکریپت پیشتیبانی میکند.
- مدیریت وابستگی با url: دینو جی اس بدون استفاده از سیستم مدیریت بسته، وابستگیها را از URLها بارگذاری میکند.
- پشتیبانی از ماژولهای اکمااسکریپت: Deno از ماژول های ES پشتیبانی میکند که ساختار کد بهتر میشود.
معایب Deno js:
- جامعه: Deno از جامعه توسعه دهنگان کوچک است و منجر به منابع کمتر میشود.
- عدم پشتیبانی از برخی از ویژگی ها: برخی ویژگی و قابلیت ها در نود جی اس وجود دارد ولی در Deno هنوز وجود ندارد.
- نقض در اکو سیستم: اکوسیستم هنوز در حال توسعه هستند و ممکن است نسبت به نود جی اس کامل نباشد.
چرا باید از Deno JS استفاده کنیم؟
آقا یعنی بجای node از Deno استفاده کنیم؟ خب طبق گفته های جناب رایان دال در کنفرانس باید این اتفاق بیوفته. خب چرا؟ چون زمانی که nodejs ساخته شد در سال ۲۰۰۹ هنوز چیزی به اسم اکما اسکریپت ۶ یا ۲۰۱۵ درست نشده بود. پس در nodejs خبری از Promise ها نبود و nodejs یک پلتفرم callback محور بود. البته الان میشه با promise ها و async و await هم در nodejs کار کرد بواسطه کتابخانه های موجود در NPM.
اما دیگه نمیشه هسته node رو تغییر داد چون خیلی برنامه ها و پروژه ها دارن با callbackها کار میکنن و اگه بخواد همچین تغییری در هسته ایجاد بشه اون برنامه ها از کار میوفتن و کلا داستان بهم میریزه. پس یه پلتفرم جدید ساخته شد به اسم Deno js تا این پلتفرم مطابق آخرین استاندادرهای جاوااسکریپت تا سال ۲۰۱۸ باشد. و پلتفرم Deno JS یک پلتفرم Promise محور هست و مخصوص استفاده از Async و Await توسعه داده شده و این دقیقا همون هدف اصلی جاوااسکریپت در سمت بک اند هست.
در هسته این پلتفرم از زبان بسیار قدرتمند و جذاب Rust استفاده شده که به نظرم نقطه قوت Deno js همینجاست. البته Denojs بر اساس جاوااسکریپت، Go و ++C و تایپ اسکریپت و Rust نوشته شده که خود پشتیبانی از تایپ اسکریپت هم تا حدودی به قدرت این پلتفرم کمک کرده. چرا که خیلی از فریمورک های جاوااسکریپت مثل انگولار از تایپ اسکریپت استفاده میکنن پس شما میتونید از تایپ اسکریپت به صورت Built-in در Deno js استفاده کنید.
در Deno js نیازی به Node_modules و Package.json ندارید! فوق العاده اس. میتونید کتابخانه هارو به صورت مستفیم از سرور با URL بگیرید. که روی کامپیوترتون Cache میشه و سرعت کامپایل شدیدا افزایش پیدا میکنه. پس دیگه نیازی به استفاده NPM نیست! ویژگی جدید و خوب Deno امنیت اون هست. Deno به صورت پیش فرض اجازه دسترسی به هیچ چیزی ندارد و مثلا حتی موقع راه انداختن سرور از شما اجازه میخواد. دقیقا مثل اپلیکیشن هایی که شما در اندروید نصب میکنید و از شما اجازه میخواد تا به دوربین و مخاطبین دسترسی پیدا کنه.
چه شرکت هایی از deno js استفاده میکنند؟
- Microsoft
- Amazon
- Shopify
- Salesforce
آیا Denojs جایگزین Nodejs میشه؟
خب طبق استدلال های پاراگراف بالا Deno js جایگزین بهتر، قوی تر و کامل تر برای Nodejs هست با امنیت بسیار بالاتر. اما چون Deno js تازه معرفی شده و نسخه رسمیش کمتر از ۱ ماه هست که اومده برای اثبات خودش نیاز به گذر زمان داره و این مواردی که گفته شد بر اساس مستندات و گفته های توسعه دهندگانش هست. نکته بعدی اینه که میلیون ها پکیج و کتابحونه برای Nodejs وجود داره اما هیچ کدوم برای استفاده از دینو استاندارد نشدن و شاید بیشتر از ۱ سال زمان نیاز داره تا این اتفاق بیوفته.
و هیچ وقت از نسخه های اول هیچ پلتفرمی برای پروژه هاتون استفاده نکیند. چون ایرادات و باگ هایی داره که نیاز به رفع داره. پس اینکه بگیم Denojs جایگزین Node میشه شاید بیشتر از یکسال زمان ببره تا همه انتظارات node در deno براورده بشه. البته همه این ها حدس و احتمال بنده هست و سرعت تکنولوژی خیلی خیلی بیشتر از این حرفاست. شاید زودتر شایدم دیرتر.
یعنی دیگه Nodejs یاد نگیریم؟
یاد بگیر آقا. حتی اگه در آینده قرار باشه بجای node از deno استفاده کنی باز باید nodejs یاد بگیری. چرا که سینتکس تا حدودی همونه و شما از یادگیری نود جی اس ضرر نمیکنید. در ضمن تا دینو جا بیوفته و بشه اعتماد کرد شاید خیلی طول بکشه و تا اون موقع شما میمونی و دست های خالی. پس پیشنهاد میکنم حتما Nodejs یاد بگیر. مطمئن باش Denojs هم بهتر یاد میگری.
الان موقع یادگیری Deno JS هست؟
به نظرم الان نه! یعنی در تیرماه ۹۹ که دارم این مقاله رو مینویسم، میگم Deno یاد نگیرید. البته اگه یاد بگیری ضرر نمیکنی. اگه node بلدی و میخوای اضافه یاد بگیری، اوکیه. اما اگه تازه میخوای بک اند شروع کنی پیشنهاد میکنم Node یاد بگیر تا زمانی که دینو جا بیوفته و براش کتابخونه های مورد نیاز بیاد و باگ های احتمالی بر طرف بشه. الان تقریبا هر هفته یک آپدیت برای دینو میاد و برای شمایی که تازه میخوای back-end یاد بگیری منبع و آموزش مناسبی برای deno نیست و در ضمن تعداد برنامه نویس هاش خیلی کمه و اگه به مشکل بخوری ممکنه نتونی زود جوابتو پیدا کنی.
پس اول Node یاد بگیر اگه دوس داشتی آپدیت باشی و آینده نگر برو سراغ Deno Js
در ماه های آینده تخصصی تر Deno js و Node js رو بررسی میکنیم که در چه مواردی کدوم قوی تر عمل میکنه.
سخن آخر
از آنجایی که Deno به تکامل خود ادامه میدهد و در جامعه توسعهدهندگان مورد توجه قرار میگیرد، ممکن است به انتخابی برای پروژههای جدید تبدیل شود، بهویژه پروژههایی که امنیت و شیوههای توسعه مدرن را در اولویت قرار میدهند. چه یک توسعه دهنده با تجربه Node.js باشید و چه به تازگی سفر خود را در توسعه جاوا اسکریپت شروع کرده اید، Deno می تواند فرصت های جدیدی را برای پروژه های شما ایجاد کند.
7 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
اونوقت دینو هم مثل نو جی اس برای سایت های تک صفحه مناسبه یا نه برای سایت های چند صفحه ای هم مناسبه؟
با سلام و عرض خسته نباشید دینو با ریکت بیشتر سازگاری داره یا آنگولار
سلام و درود.
تفاوت خاصی نباید داشته باشه چون هر دو فریمورک جاوااسکریپتن و دینو هم برای جاوااسکریپت پس کلا باید سازگار باشن. البته خودم تست نکردم هنوز
خیلی عالی و خوب بود قشنگ کسی که فقط اسمشو شنیده و هیچ چیز دربارش نمیدونه با این مقاله یه آشنایی خیلی خوبی پیدا میکنه😍❤
خواهش میکنم.
امیدوارم که دیدگاه خوبی از این پلتفرم خفن گرفته باشید
مرسی از اینکه وقت گذاشتید و همچین ویدیو فوق العاده با کیفیتی تولید کردید آقای حاجی مقصودی عزیز 🌹👌🏻💛
مرسی بابت تماشا.