مه 2020 با انتشار Deno 1.0 روبرو شد و این یک موضوع بسیار محبوب برای گفتگو بوده است. اگر فکر می کنید سر و صدا برای چیست ، به جای درست آمده اید!

در این مقاله ، امیدوارم بتوانم نمای کلی از آنچه Deno است را به شما ارائه دهم. ما نگاهی خواهیم انداخت به ویژگی های اصلی آن ، و از شما می پرسیم که چرا ممکن است بخواهید یادگیری این ابزار جدید را شروع کنید.

دنو چیست؟

بنابراین Deno چیست و چرا ایجاد شده است؟ این یک زمان اجرا JavaScript و TypeScript است ، به این معنی که شما می توانید برنامه ها را به هر دو زبان بنویسید و آنها را از خط فرمان اجرا کنید. برخلاف JavaScript که در داخل مرورگر اجرا می شود ، برنامه های Deno می توانند به منابعی در رایانه میزبان مانند سیستم فایل و متغیرهای محیط دسترسی داشته باشند.

اگر از Node.js آگاهی دارید و فکر می کنید صدای Deno کاملاً شبیه به هم است ، حق با شماست. Deno ایده فکری خالق Node ، Ryan Dahl است ، که Deno را برای پرداختن به آنچه خودش می داند خلق کرد. نقص طراحی در Node. اهداف این پروژه فراهم آوردن محیط اسکریپت نویسی است که به طور پیش فرض ایمن باشد ، با TypeScript به عنوان یک زبان درجه یک رفتار کند و تا حد امکان با مرورگر سازگار باشد (در صورت عملی بودن)

ویژگی های امنیتی

Deno به گونه ای طراحی شده است که از جعبه ایمن باشد. همه کد به طور پیش فرض در یک sandbox امن اجرا می شود ، این بدان معناست که شما باید اجازه صریح دهید تا به یک برنامه اجازه دسترسی به شبکه یا سیستم پرونده را بدهید.

با پرچم های خط فرمان زیر می توان به برنامه ها مجوز داد:

  • -A ، –همه مجاز: اجازه دادن به همه مجوزها (همه امنیت را غیرفعال می کند).
  • –allow-env: اجازه بدست آوردن و تنظیم متغیرهای محیط را می دهد.
  • – زمان مجاز: اجازه اندازه گیری زمان با وضوح بالا را می دهد (می تواند در حملات زمان و اثر انگشت استفاده شود).
  • –allow-net = : دسترسی به شبکه را مجاز کنید. به صورت اختیاری لیست سفید دامنه های جدا شده با ویرگول را می گیرد.
  • اجازه پلاگین: اجازه بارگذاری افزونه ها را بدهید (ویژگی ناپایدار).
  • –مجاز خواندن = : دسترسی به خواندن سیستم فایل را مجاز کنید. به صورت اختیاری لیست سفید یا دایرکتوری ها را با ویرگول جدا می کند.
  • – اجازه اجرا: اجازه می دهد فرایندها را اجرا کنید.
  • –مجاز نوشتن = : اجازه نوشتن به سیستم فایل را می دهید. به صورت اختیاری لیست سفید یا دایرکتوری ها را با ویرگول جدا می کند.

پشتیبانی نوع اول TypeScript

همانطور که قبلاً اشاره کردم ، Deno می تواند هر دو JavaScript را اجرا کند و TypeScript. علاوه بر این ، از TypeScript به عنوان یک زبان کلاس اول پشتیبانی می کند. این بدان معنی است که می تواند کد TypeScript شما را بدون هیچ مرحله ساخت اضافی بارگیری و اجرا کند. دیگر نیازی به تنظیم ابزار اضافی برای انتقال کد خود به JavaScript نیست.

البته از آنجا که TypeScript یک مجموعه برتر از جاوا اسکریپت مدرن است ، در صورت تمایل می توانید کد خود را در JS قدیمی نیز بنویسید! Deno از برخی ویژگی های عالی و سازگار مانند واردات ES Module پشتیبانی می کند

با استفاده از کد خارجی

همانطور که رایان در صحبت های خود اشاره کرد ، یکی از اهداف او برای دنو پرهیز از نیاز به مدیر بسته بود. برخلاف زمان اجرا / زبانهایی مانند Node.js و PHP (که به ترتیب از مدیران بسته npm و آهنگساز استفاده می کنند) ، هیچ مدیر بسته ای برای Deno وجود ندارد.

در عوض ، بسته های خارجی مستقیماً از طریق URL وارد می شوند:

import { Client } from "https://deno.land/x/mysql@2.2.0/mod.ts";

اولین بار که اسکریپت خود را اجرا می کنید ، Deno تمام واردات را واکشی ، کامپایل و حافظه پنهان می کند تا شروع بعدی به سرعت برقرار شود. بدیهی است مواردی وجود دارد که ممکن است بخواهید آن را مجبور کنید دوباره واردات را انجام دهد و می توانید این کار را با cache زیرفرمان:

deno cache --reload my_module.ts

میزبانی بسته

در حالی که Deno رجیستری بسته را به این ترتیب ارائه نمی دهد ، یک مورد وجود دارد لیست ماژول های شخص ثالث موجود است. این سرویس یک URL استاندارد و نسخه دار را ارائه می دهد که به repo GitHub ماژول ترسیم می شود. می توانید بسته ها را با نام جستجو کرده و شرح مختصری را مشاهده کنید و برای دیدن آماده خواندن بسته ها روی آن کلیک کنید.

کتابخانه استاندارد

Deno فراهم می کند یک کتابخانه استاندارد – مبتنی بر نرم افزار Golang – که مجموعه ای از ماژول های استاندارد با کیفیت بالا و بدون وابستگی خارجی را فراهم می کند.

بسته های موجود در کتابخانه استاندارد به همراه Deno نصب نشده اند. بلکه همانطور که در بخش قبلی دیدیم به صورت آنلاین در دسترس هستند و به آنها پیوند داده شده اند. ماژول ها نسخه ای هستند ، به شما امکان می دهد کد خود را به استفاده از یک نسخه خاص متصل کنید:

import { copy } from "https://deno.land/std@0.50.0/fs/copy.ts";

این بدان معنی است که هر کدی که می نویسید و به یک ماژول از کتابخانه استاندارد متکی است ، باید در نسخه های بعدی به کار خود ادامه دهد.

این کتابخانه شامل کمک کننده ها و برنامه های مختلفی است که شما ممکن است برای ساخت برنامه های خط فرمان و برنامه های مبتنی بر HTTP نیاز داشته باشید:

  • بایگانی: ماژول هایی برای کار با پرونده های tar
  • همگام سازی: برنامه های async
  • بایت: کمکی برای کار با آرایه های باینری
  • زمان قرار: کمکی برای تجزیه رشته های تاریخ در Date اشیاء
  • رمزگذاری: رمزگذارهایی برای برخورد با فرمت های base32 ، binary ، CSV ، TOML و YAML
  • پرچم ها: تجزیه کننده استدلال های خط فرمان
  • fmt: ابزاری برای چاپ خروجی قالب بندی شده
  • fs: کمکی برای کار با سیستم فایل
  • هش: یک ماژول برای ایجاد هش با استفاده از الگوریتم های مختلف
  • http: سرورهای HTTP و پرونده را ایجاد کنید و کوکی ها را دستکاری کنید
  • من: برنامه های کمکی برای ورودی / خروجی رشته
  • ورود به سیستم: ماژول ورود به سیستم ساده
  • تقلید: پشتیبانی از داده های چند بخشی را فراهم می کند
  • گره: یک لایه سازگاری (در حال انجام) لایه کد Node.js
  • مسیر: ابزار دستکاری مسیر
  • مجوزها: کمکی برای بررسی و درخواست مجوزهای امنیتی
  • علامت: کمکی برای مدیریت سیگنال های فرآیند Deno
  • آزمایش کردن: ادعاهای آزمون برای استفاده با دونده آزمایشی داخلی Deno
  • uuid: برنامه های کاربردی برای تولید و اعتبارسنجی UUID ها
  • ws: کمکی برای ایجاد سرویس گیرنده ها و سرورهای WebSocket

در حال نصب Deno

Deno به عنوان یک واحد اجرایی بدون هیچ وابستگی ارسال می شود. می توانید یک باینری از صفحه را منتشر می کند، یا با استفاده از نصب کننده های زیر نصب کنید:

شل (macOS ، لینوکس):

curl -fsSL https://deno.land/x/install/install.sh |  sh

PowerShell (ویندوز):

iwr https://deno.land/x/install/install.ps1 -useb | iex

دم خانگی (سیستم عامل مکینتاش):

brew install deno

به روزرسانی

پس از نصب ، Deno همچنین می تواند با استفاده از دستور زیر خود را به آخرین نسخه ارتقا دهد:

deno upgrade

یا می توانید به یک نسخه خاص رده بندی / تنزل دهید:

deno upgrade --version 1.0.1

آینده روشن است

دنو کتابچه راهنمای پیشنهاد می کند که “یک جایگزین عالی برای اسکریپت های سودمند است که ممکن است به صورت تاریخی با Bash یا Python نوشته شده باشند”. گرچه این قطعاً درست است ، اما من انتظار دارم که به طور فزاینده ای برای موارد مشابه استفاده از Node.js در حال حاضر مورد استفاده قرار گیرد. در حال حاضر تعدادی از فریمورک های Express / Koa مانند جمع شده وجود دارد که به شما امکان می دهد REST API های ایمن را به همراه تعداد روزافزونی از ماژول های شخص ثالث ایجاد کنید.

بنابراین ، آیا باید Node.js را فراموش کرده و یادگیری Deno را شروع کنید؟ نظر فعلی در صنعت این است که Node.js به زودی ناپدید نمی شود ، اما Deno قطعاً یک فناوری برای تماشا است.

بنیادهای Deno

Deno را با مجموعه بنیادهای Deno ما بیاموزید. هنگام انتشار آن ، تمام پوشش Deno ما را در اینجا پیدا خواهید کرد ، به گونه ای که به عنوان مبتدی بیشتر به شما کمک کند.

مبانی Deno

پروژه های Deno