یه برنامه نویس معمولی لینوکس کار
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 ببرن و تغییر بزرگی داخل کد ها به وجود بیارن .
خوب برای کسانی مثل من که 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 رو ببینیم .
میتونین به سایت و گیت دنو برید و اطلاعات باحالتری کسب کنین
مطلبی دیگر از این انتشارات
انواع متا تگ ها
مطلبی دیگر از این انتشارات
ویژگی های جدید اکماسکریپت ۲۰۱۹ - قسمت دوم
مطلبی دیگر از این انتشارات
فانکشنال js بدون درد و خونریزی - بخش دو compose