Deno
- Okunuşu
- dino
Kısaca
Deno, sistem erişimini izin verilene kadar kapalı tutan ve kendi araçlarıyla gelen, açık kaynaklı bir JavaScript ve TypeScript çalışma ortamıdır.
Deno nedir?
Deno, JavaScript ve TypeScript'i tıpkı Node.js gibi bir sunucuda ya da geliştiricinin bilgisayarında çalıştıran bir çalışma ortamıdır (runtime). Node.js'in ilk yaratıcısı Ryan Dahl tarafından, 2018'de Node'da pişman olduğu tasarım kararlarını anlattığı bir konuşmanın ardından başlatıldı. Node.js gibi Google'ın V8 motoru üzerinde çalışır, ama geri kalanı Rust ile yazılmıştır; 1.0 sürümü 2020'de, Deno 2 ise 2024'te çıktı.
Deno'yu üç fikir ayırır. TypeScript dosyalarını ayrı bir derleme adımı olmadan doğrudan çalıştırır. Varsayılan olarak güvenlidir: bir script, siz --allow-net ya da --allow-read gibi bayraklarla izin verene kadar dosya okuyamaz, ağ bağlantısı açamaz ve ortam değişkenlerini göremez; tıpkı bir telefon uygulamasının izin istemesi gibi. Ayrıca tek bir çalıştırılabilir dosya günlük araçları içerir: bir biçimlendirici (deno fmt), bir linter (deno lint), bir test çalıştırıcı (deno test) ve bir script'i bağımsız bir programa dönüştüren bir derleyici (deno compile).
Deno; fetch, Request, Response ve Web Streams gibi web standardı API'leri tercih eder, bu yüzden aynı kodun büyük kısmı tarayıcılarda da çalışır. Paketler npm'den npm: import'larıyla ya da bir package.json dosyasıyla, Deno ekibinin başlattığı ve JavaScript ile TypeScript modüllerine yönelik bir kayıt defteri olan JSR'den ya da doğrudan bir URL'den gelebilir. Web sunucuları ve API'ler, script'ler ve komut satırı araçları ile Supabase'in Edge Functions'ı ve Deno'nun kendi barındırma servisi Deno Deploy dahil serverless edge fonksiyonları için kullanılır.
En sık sorulan soru, Deno'nun Node.js'ten nasıl ayrıldığıdır. İkisi de V8 üzerinde büyük ölçüde aynı JavaScript'i çalıştırır ve Deno 2'den beri çoğu npm paketi ile node:fs gibi Node.js yerleşik modülleri Deno'da da çalışır; yani farklar varsayılanlardadır. Node.js her script'e sisteme tam erişim verir ve biçimlendirme ile lint işini ayrı araçlara bırakır; Deno ise izin ister ve bu araçları içinde getirir. Aradaki fark daraldı: yeni Node.js sürümleri tipleri silerek birçok TypeScript dosyasını çalıştırabiliyor ve isteğe bağlı bir izin modeli sunuyor; Node.js ise daha büyük ekosistemini ve en geniş barındırma desteğini koruyor.
Önemli noktalar
- Deno, Node.js'in ilk yaratıcısının V8 ve Rust üzerine kurduğu bir JavaScript ve TypeScript çalışma ortamıdır.
- Script'ler, izin verilene kadar dosyalara, ağa ya da ortam değişkenlerine erişemez.
- TypeScript doğrudan çalışır; biçimlendirici, linter, test çalıştırıcı ve derleyici yerleşiktir.
- Deno 2'den beri çoğu npm paketi ve Node.js yerleşik modülü çalışır.
- Node.js'ten, çalıştırdığı JavaScript'le değil, esas olarak varsayılanlarıyla ayrılır.
Örnek
// server.ts: TypeScript runs directly, with no build step
Deno.serve({ port: 8000 }, (req: Request) => {
const { pathname } = new URL(req.url);
return Response.json({ path: pathname, runtime: "Deno" });
});
// Network access must be granted explicitly:
// deno run --allow-net server.ts
// Without the flag, Deno asks at the prompt, or refuses in CI.
// Built-in tools, no extra packages:
// deno fmt deno lint deno test deno compile --allow-net server.tsSık sorulan sorular
Deno ile Node.js arasındaki fark nedir?
İkisi de JavaScript'i V8 motoruyla çalıştırır ve Deno çoğu npm paketini çalıştırabilir. Deno TypeScript'i doğrudan çalıştırır, siz izin verene kadar dosya ve ağ erişimini engeller, bir biçimlendirici, linter ve test çalıştırıcı içerir; Node.js ise daha büyük bir ekosisteme sahiptir ve script'lere varsayılan olarak tam erişim verir.
Deno npm paketlerini kullanabilir mi?
Evet. Deno 2'den beri onları npm:express gibi bir npm: önekiyle import edebilir ya da Node.js'teki gibi bir package.json dosyasında listeleyebilirsiniz. Node.js'in nadiren kullanılan iç yapılarına dayanan az sayıda paket çalışmayabilir.
Deno, Node.js'ten daha hızlı mı?
İkisi de V8 üzerine kurulu olduğu için çoğu web iş yükünde benzer performans gösterir ve kıyaslamalar işe göre değişir. Seçimi ham hızdan çok araçlara, güvenlik varsayılanlarına ve ihtiyaç duyduğunuz kütüphanelere göre yapmak genellikle daha mantıklıdır.
İlgili sayfalar
- Node.jsBackend ve API'ler, s. 33Node.js, JavaScript'i tarayıcı dışında çalıştıran, en çok web sunucuları, API'ler ve komut satırı araçları için kullanılan açık kaynaklı çalışma ortamıdır.
- BunBackend ve API'ler, s. 8Bun; paket yöneticisi, bundler ve test çalıştırıcı da olan, Node.js'in yerine geçmek üzere tasarlanmış hızlı bir JavaScript ve TypeScript çalışma ortamıdır.
- TypeScriptWeb Geliştirme, s. 61TypeScript, JavaScript üzerine statik tipler ekleyerek birçok hatayı kod çalışmadan yakalayan ve düz JavaScript'e derlenen bir programlama dilidir.
- JavaScriptWeb Geliştirme, s. 30JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- npmWeb Geliştirme, s. 39npm, Node.js'in varsayılan paket yöneticisi ve dünyanın en büyük yazılım deposudur; bir projenin bağımlılıklarını indirir ve sürümlerini takip eder.
- En Az Ayrıcalık İlkesiGüvenlik, s. 12En az ayrıcalık ilkesi, her kullanıcıya, programa ve servise yalnızca işini yapması için gereken asgari erişimin verilmesini öngören güvenlik kuralıdır.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin