Deno.js یک راه جدید در جاوا اسکریپت

مقالات زیادی در مورد جاوا اسکریپت میخواستم بنویسم . از OCaml تا ReasonML و ReasonReact که خوب هر کدوم به دلیل مشغله زیادم و اینکه باید توضیحات و مثال های مفصلی بدم ، فعلا ننوشتم و به زودی استارت چند رویداد جدید رو میزنم و یک سری کارها در این زمینه با کمک شما انجام میدم . اما چیزی که امروز میخوام بگم ، یک تحول بزرگ در دنیای js . همونطور که میدونید ، بزرگترین تحول در جاوا اسکریپت با پیدایش node.js بر روی موتور V8 گوگل بود . خیلی اتفاقات خوبی پشت سرش رخ داد و الان شاهد انقالاب بزرگش هستیم . رایان دال ، که خالق node.js بود امروز به یک دنیای بازتری از جاوا اسکریپت رسید به اسم Deno.js . همون حروف رو توی اسم به کار برد . اما تفاوت هایی که داره خیلی زیادن . دنو در واقع اینطور تعریف میشه : A secure runtime for JavaScript and TypeScript built with V8, Rust, and Tokioچیزی که میشه گفت اینه که پس زمینه ، از سی پلاس پلاس ، به Rustتغییر کرد . البته شروع ماجرا این نبود . یک بحث بزرگی داخل گیت دنو شروع شد و در اوایل کارش ( اواخر سال 2018 ) تصیم گرفتن که با goLang کار رو شروع کنن و شروع هم کردن . بعد از کلی بررسی ها داخل ایشو ، تصمیم گرفتن که کار رو به Rust ببرن و تغییر بزرگی داخل کد ها به وجود بیارن . خhttps://github.com/denoland/deno/issues/11 خوب برای کسانی مثل من که typeScript رو قبول ندارن کمی جای فکر داره که باید چی کار کنیم . خوبی دنو اینه که هنوز مالکیت انحصاری به یک شرکت ( مثل joyent ) رو نداره و مالک اون رایان دال هست . این خیلی خوبه که منو متقاعد کنه پشت این سیستم ، یک شرکت مثل مایکروسافت نیست و من راحتتر میتونم از این نسخه استفاده کنم . اما چرا از دنو استفاده نکنیمبه گفته سایت دنو لند ، دنو هنوز به شدت تحت develop هست و اصلا برای کارهای تجاری مناسب نیست دلیل بعدی اینکه هیچ پشتیبانی برای دنو وجود نداره و هیچ شرکتی هنوز تولیدی خاصی برای دنو منتشر نکرده مزایا نسبت به نوددنو اومد که اشتباهات نود رو پوشش بده و یک سیستم از اول طراحی کنه تا اتفاقات بدی که داخل نود بود ، تکرار نشه . رایان دال از اینکه نود رو نوشته بود چندین بار متاسف شد و در رسانه ها گفت اشتباه کرده . اما همونظور که میدونین نود پشتوانه های قوی مثل اکسپرس ، سایلون ، آدونیس ، مونگوس ، پی ام ۲ و... داره که منطق رو به این سمت راهی میکنه . دنو سعی کرد تغییرات زیر رو ایجاد کنه و برتری خودش رو ثابت کنه : هر برنامه ای داخل یک sandbox امن کار میکنه و بدون نیاز به دسترسی نوشتاری شبکه ، میتونه فعالیت داشته باشه کاربر میتونه سرویس های نا امن رو مثل لایتنر ، اجرا کنه و مشکل امنیتی نخواهد داشت ( این یک ادعای ثابت نشده ) . به دلیل سندباکس امنقابلیت دیباگ و audit راحتر و پیشرفته تر ایمپورت ، داخل دنو ، فقط به سروس اصلی مسیر دسترسی داره . این به این معنیه که برای ایمپورت کردن ، تمام فایل و زیر مجموعه ها ایمپورت نمیشن و فقط مسیر قرار داره . به علت استفاده از راست ، هم از نظر سرعت و هم از نظر دسترسی به توابع high-level سادهتر و بهتر شد . نیازی به package.json دیده نمیشهنیازی به npm دیده نمیشه نیازی به node هم نداره نصب و راه اندازی : دنو مثل RUST و GoLang یک فایل اجرایی داره. که دانلود و نصب میشه . من نحوه نصب در لینوکس رو میگم : curl -fsSL https://deno.land/x/install/install.sh | shحالا برای مثال این دستور رو اجرا کنین : deno https://deno.land/welcome.tsمحتوایت فایل بالا به شکل زیر است :console.log("Welcome to Deno ?");خوب حالا یک مثال میسازیم . فایل به اسم hello.ts بسازید و داخل اون فایل کد زیر رو بزارید :import { serve } from "https://deno.land/std@v0.3.2/http/server.ts"; async function main() { const body = new TextEncoder().encode("Hello World\n"); for await (const req of serve(":8000")) { req.respond({ body }); } } main();حالا دستور :deno hello.ts میبینیم که روی پورت 8000 میتونیم Hello World رو ببینیم . میتونین به سایت و گیت دنو برید و اطلاعات باحالتری کسب کنین https://deno.land/