Node.js “:node” protokolü içe aktarmaları nelerdir?

Node.js ":node" protokolü içe aktarmaları nelerdir?

Eski request/module.exports/CommonJS içe aktarma sözdizimlerinin günleri geride kaldı. Node.js’nin son sürümlerinde, modern ECMAScript modülü (ESM) içe aktarma desteği nihayet tarayıcı standartlarıyla aynıdır, ancak Node.js bu standartların üzerine birkaç ekstra özellik de eklemiştir.

Node.js “:node” protokolü içe aktarma, bir içe aktarmanın sözdizimini kullanarak üçüncü taraf npm paket bağımlılığı yerine yerleşik bir pakete başvurduğunu ifade etmenin bir yoludur import {join} from 'node:path';. Yerleşik Node.js API büyümeye devam ettikçe, npm paketleriyle ad çakışması riski artmaya devam edecektir.

“:node” protokolü içe aktarma işlemleri ne zaman yararlıdır?

Bunun gibi yazmış olabileceğiniz herhangi bir yerleşik içe aktarma:

import {createServer} from 'http';

const server = createServer((req, res) => {
  res.end();
});

server.listen(8000);

Yerleşik modülü bir npm paketi üzerinden içe aktardığınızdan emin olmak ve ifade etmek için artık “:node” protokol öneki ile yazılabilir:

import {createServer} from 'node:http';

const server = createServer((req, res) => {
  res.end();
});

server.listen(8000);

Böyle bir çarpışmanın bir örneği, http paketi eskiden npm kayıt defterindeydi ama kötü amaçlı kullanımı önlemek için kaldırıldı.

Projenizde içe aktarmayı değiştirmeniz gerekip gerekmediği size kalmış, çünkü her iki yol da hala çalışıyor, ancak bazı durumlarda, özellikle daha yeni yerleşik API’ler için “düğüm:” eklemek, okuyan diğer kişilerin netliğini ve amacını artırabilir. kod tabanı aracılığıyla.

Daha fazla içe aktarma özelliği yapım aşamasında

Node.js 17.1.0 sürümünden bu yana, içe aktardığınız dosya türüyle ilgili ayrıntıları ifade eden içe aktarma iddiaları için deneysel destek de vardır. İçe aktarma iddiaları, JSON dosyalarını içe aktarmak için kullanışlıdır:

import fooData from './foo.json' assert { type: 'json' };

Kapanış düşünceleri

Geçen yıl boyunca, daha fazla npm paketinin güncellendiğini ve ESM sözdizimini benimsediğini görmek güzel oldu, çünkü bu, kodunuzu çalıştırmak için karmaşık aktarıcı kurulumlarına olan ihtiyacı azaltır.

Umarım JavaScript ekosistemi, Rust ve Go gibi dillerin sunabileceği “piller dahil” araç kurulumuna kademeli olarak yaklaşabilir. Sonunda bu, çoğu JavaScript projesinde bugün hala gerekli olan karmaşık ayrı Rollup/Vite/Webpack/Babel araçlarına olan ihtiyacı sona erdirebilir.

Node.js dokümantasyon sayfasında daha fazla ayrıntı bulabilirsiniz: https://nodejs.org/api/esm.html#node-imports

Şimdi içe aktarma amaçlarınızı güzel ve net tutun!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.