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/[email protected]/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/