18 MAYIS 2020
PAZARTESİ
21.10
Deno'yu Öne Çıkaran Özellikler

First-Class TypeScript Support

Deno'nun çekirdeği TypeScript ile yazılmış durumdadır. Ancak bu "kodumuzu yazarken TypeScript kullanmak zorundayız" demek değildir. Fakat günümüzde bir çok JavaScript geliştiricisinin de sevdiği TypeScript'i kendisinin desteklemesi oldukça önemlidir. Çünkü TypeScript ile yazdığınız kodunuzu derlemeniz için ekstra bir işlem yapmanıza gerek yoktur. Deno bunu bizim için otomatik olarak yapmaktadır.

Temel olarak söyleyebilirim ki TypeScript, JavaScript'e oranla kodumuzu daha anlaşılır hale getirmemize ve süreci hızlandırmamıza yardımcı olmaktadır. TypeScript bize bir geliştirme ortamı sunar ve yazdığımız kodları problemsiz bir şekilde JavaScript'e derler.

Modül Sistemi - Paket Yöneticisi Yok

Node.js'te alıştığımız paket yöneticisini Deno'da göremiyoruz. Burada paketleri indirip kurmak yerine doğrudan bir URL üzerinden çekip projemizde kullanıyoruz. Bu durum geliştiriciler açısından hem pozitif hem negatif algılanabilir. Pozitif yönünü ele almamız gerekirse herhangi bir paketi projemize dahil etmek istediğimizde npm gibi bir yerde paylaşılmış olmasına gerek yok. Bu durum geliştirici için her ne kadar esneklik olsa da elbette negatif olacağı yer oldukça kritik. Eğer yayında olan bir projenizde kullandığınız herhangi bir paketin url'i çökerse projenizde bundan etkilenecektir. Bu sebeple bu url'lere güvenmek zorundayız.

Buradaki linkler https://deno.land/std@v0.42.0/http/server.ts bu şekilde olabilir. Yani projemize dahil ederken;

import { serve } from "https://deno.land/std@v0.42.0/http/server.ts";

şeklinde doğrudan dahil edebiliriz.

Paket yöneticisi yerine aslında deps.ts adlı bir dosya kullanabiliriz:

export {
  Cookies,
  Cookie,
  setCookie,
  getCookies,
  delCookie,
} from "https://deno.land/std@v1.0.0-rc1/http/cookie.ts";

Güvenlik

Deno'nun öne çıkan en önemli özelliklerinden biri de tartışmasız güvenlik tarafı olsa gerek. Node.js'ten farklarına yazabileceğimiz önemli bir nokta da Deno'nun kodları önce sanal bir sandbox'ta çalıştırmasıdır. Bu da projenin biz izin vermeden hiçbir yere erişemeyeceği anlamına gelir: ağ, dosya sistemi, ortam değişkenleri vs. Bunların izinlerinin önceden verilmesi gerekmektedir ve işte bu noktada da flag'ler kullanılmaktadır. Bu flag'leri deno run -h ile görüntüleyebilirsiniz:

--allow-all Allow all permissions
--allow-env Allow environment access
--allow-hrtime Allow high resolution time measurement
--allow-net=<allow-net> Allow network access
--allow-plugin Allow loading plugins
--allog-read=<allow-read> Allow file system read access
--allow-run Allow running subprocesses
--allow-write=<allow-write> Allow file system write access
--cached-only Require that remote dependencies are already cached
--cert <FILE> Load certificate authority from PEM encoded file
--config <FILE> Load tsconfig.json configuration file
--help Prints help information
--importmap <FILE> UNSTABLE: Load import map file
--inspect=<HOST:PORT> activate inspector on host:port (default: 127.0.0.1:9229)
--inspect-brk=<HOST:PORT> activate inspector on host:port and break at start of user script
--lock <FILE> Check the specified lock file
--lock-write Write lock file. Use with --lock.
--log-level <log-level> Set log level [possible values: debug, info]
--no-remote Do not resolve remote modules
--quiet Suppress diagnostic output
--reload=<CACHE_BLACKLIST> Reload source code cache (recompile TypeScript)
--seed <NUMBER> Seed Math.random()
--unstable Enable unstable APIs
--v8-flags=<v8-flags> Set V8 command line options. For help: --v8-flags=--help

Code Formatter

Deno'da dahili olarak gelen kod formatlayıcı bulunmaktadır. Console'da doğrudan deno -fmt ile çalıştırabiliyoruz. Temel görevi olan kodu formatlıyor. Örneğin;

let a = "Mert"

şeklinde bir yapımız varken console'da çalıştırdığımız deno -fmt ile sonuna noktalı virgül eklemiş oluyor:

let a = "Mert";

Bundling

Deno yine dahili olarak bir url'in tüm bağımlılıklarını da içeren tek bir js dosyasının çıktısını bize verebilmektedir. Bunun için deno bundle kullanabiliriz. Örneğin https://deno.land/std/examples/colors.ts burada yer alan kodu bağımlılıkları ile birlikte colors.bundle.js dosyasına çıktı almak istediğimizde;

deno bundle https://deno.land/std/examples/colors.ts colors.bundle.js

Artık tüm bağımlılıklarını da içeren colors.bundle.js dosyamızı oluşturmuş olduk. 

JSDoc

Deno'da JSDoc dahili olarak yer alıyor. Bu sayede kod yazarken yorum satırlarının yardımı ile dökümantasyon oluşturabilirsiniz. JSDoc hakkında daha fazla bilgi için buraya göz atabilirsiniz.


Deno'nun geliştiricilerin dikkatini çeken temel özelliklerinden bahsetmek istedim. Dökümantasyon üzerinden anlatımlara başladığımızda çok daha detaylı olarak hepsine değinmiş olacağız.

Kaynaklar

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et