- Node.js, etkinliklere yönelik bir modelle çalışır ve E/S'nin eş zamanlı olarak bloke edilmesi ideal değildir.
- Modüler mimari: sunucu, yönlendirici ve işleyiciler yükseltmeyi ve bakımı kolaylaştırır.
- Web uygulamalarının oluşturulmasını kurallar, manzaralar ve ara yazılımlarla hızlandırın.
- Dosyaları, kırmızıları, kuralları ve sistemi oluşturmak için yerel modülleri ve npm'yi kullanın.

İlk olarak Node.js ile iletişime geçtiniz mi?Bu, bu işi gerçekleştirmek için yazılmış bir kılavuzdur: açıklayıcı uygulamalar ve açıklamalarla birlikte, gerçek bir iş akışında daha temel olan konular. Hola Mundo miticiyle birlikte Express ile bir web uygulaması, sistem modülleri, npm ve Node ekosistemi için özel bir bilgi sağlayan bir web uygulaması geliştirebilirsiniz.
Además de orientarte con Önceki gereksinimler, Visual Studio Code'da yapılandırma ve ilk projeler, bir HTTP sunucusu organize etmek, istekleri girmek, kontrolörleri yönetmek, POST verilerini bloke etmek ve olay odaklı bir filo oluşturmak gibi bir şeydir. Rodeolarda bir dil kullanarak ve iskeleye gitmemek için gereken anahtarı takarak bunu yapın.
Önceki gereksinimler ve Node.js için gerekenler
Bazı temel JavaScript bilgileri gerekli (tipler, değişkenler, işlevler, nesneler) ve konsolla ilgili olasılıklar. Node.js, V8 tabanlı, güçlü bir kütüphaneye ve bir çalıştırma modeline sahip, gezgin için bir JavaScript çalıştırma yazılımıdır. olaylar tarafından yönetiliyor ve bloke edilmiyor. Bu, her başvuruda bir destek oluşturmak için eşzamanlı olarak çok sayıda bağlantının kurulmasına izin verir.
Con Node puedes construir web sunucuları, API'ler REST, komut satırı sürümleri, gerçek zamanlı uygulamalar (sohbet, bildirimler), veri temelleri ve IoT projeleriyle entegrasyonlar. Şansınız, E/S'nin eş zamanlı yönetimidir ve üst düzey trafik ve etkileşim deneyimleri için idealdir.
İndirme ve yükleme
Node.js'yi web resminden indirin nodejs.org adresinde ve işletim sisteminiz için yükleyin. Windows, macOS veya Linux'ta yeterli kurulum ve paketler bulunur. Kurulumu terminalde onaylayın: node -v y npm -v. npm, Düğümün paket taşıyıcısıdır ve biçimsel dosya kitaplıklarının yüklenmesine izin verir.
İlk iletişim bilgileri: Hola Mundo ile VS Code
Si usas Visual Studio Code, proje halısını açabilir ve terminali toplam bütünle entegre hale getirebilir. Bir iş halısı oluşturun ve bir giriş yapın: mkdir HelloNode && cd HelloNode.
VS Code ile ilgili bir şey daha var kod.. adlı bir dosya oluşturun app.js Düzenleme için algo sencillo'yu tanıtıyoruz: un mensaje por consola.
var msg = 'Hello World';
console.log(msg);
Çalıştırmak için, VS Koduyla entegre terminali açın (Ver > Terminal, Ctrl+` öğesine basın), ve ardından node app.js. Klasik çıktının "Merhaba Dünya" versiyonu konsolada; sí, sencillo, ama yapılması gerekenleri onaylıyorum.
Bir sunucu: minimum bir HTTP sunucusu
Düğüm yerel 'http' modülünde çalışıyor böylece farklı hatlarda bir sunucu oluşturabilirsiniz. El corazon es http.createServer, çalıştırılacak bir geri arama işlevi reçete edilir bir dilekçe sunacağımdan dolayı.
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('Hola Mundo');
response.end();
}).listen(8888);
Arráncalo ile node server.js ve ziyaret edin http://localhost:8888/. Düğüm büyüsü olaylara yönelik bir modeldir: olay gerçekleştiğinde (bir giriş çağrısı) bir işlevi ve çalışma süresini (geri arama) çalıştırır.
Geri aramaları, zaman aşımını ve tahliye hatalarını engelleme
JavaScript'in ilk kullanımdaki işlevleri: argüman olarak geçebilir, değişkenleri devredebilir ve kaydedebilirsiniz. Bu kullanıcı Düğüm olay paketine sahiptir: Başarılı bir olay gerçekleştiğinde çalıştırılacak olan kod kaydetme işlevleri (örneğin, bir HTTP isteğinde bulunun).
Aradaki farkı anlamak çok önemlidir Blokaj İşlemleri ve Blokaj İşlemleri Yok. Eğer CPU'yu birkaç saniye boyunca meşgul ederse (örneğin, bir e-posta paketi), girilen süreç gecikir ve tüm talepler devam eder. Düğümde, E/S ile yapabileceğiniz işler Hilo'yu engellemek için geri aramalar veya vaatler.
Modüler donanım: sunucu, yönlendirici ve yönetici
Separar responsabilidades Projenizi yükseltebilirsiniz: HTTP sunucusu için bir modül, yönetici için ve diğer kontrolörler için (istek işleyicileri). Üst düzey işlevler ile ilgili bilgiler exports yerel modüller talep edin require('./miModulo').
Bir yapı türü şu şekildedir: index.js como punto de entrada, sunucu.js HTTP sunucusuyla, router.js Bir işlemin nasıl yapılacağına karar vermek için requestHandlers.js her şeyin uç noktası mantığıyla. Bu düzenleme kodun okunaklı olmasını ve kolayca anlaşılmasını sağlar.
Tekrar tekrar yola çıktım ve tekrar yola çıktım
Talep edilen URL'ye bağlı istek nesnesi. El módulo nativo url ekstra izin ver yol adı y, si hace fata, la sorgu. Bu durumda, yönlendiricinin kontrolün nasıl yapılacağına karar vermesi mümkündür.
var url = require('url');
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
// route(pathname) ...
}
El router recibe el mapa de rutas a funciones (herhangi bir nesne bir rutindir, ve değer, işleyici), yol adıyla birlikte, ve ilişkili bir işlev olup olmadığını kontrol edin. Varsa, ejecuta; hayır, 404'ü devre dışı bırakın.
İşleyicinin yanıt vermesini sağlayın (destekçi doğru)
Una tentación habitual Bu, denetleyicinin bir dizeyi geri döndürmesi ve sunucunun yazmasını istedi. Ancak bu, işleyicinin daha fazla zaman harcaması gerektiğinde (diskoya gitmek veya bir komut göndermek gibi) düşüyor. Etkili çözüm inyectar el objeto response işleyiciye ve kişi işleyicisi on dakika sonra yanıt yazana kadar (örneğin, bir başka işlevin geri çağrılması sırasında).
// router.js
function route(handle, pathname, response) {
if (typeof handle[pathname] === 'function') {
handle[pathname](response);
} else {
response.writeHead(404, {'Content-Type': 'text/html'});
response.write('404 No Encontrado');
response.end();
}
}
Bu yaklaşım, E/S tamamlandığında yanıt veren kişi, süreci bloke etmek ve zamanından önce verilerin devredilmesine izin vermemek için.
Hızlı: birkaç dakika içinde web'de bir uygulama oluşturun
Express, Node.js için minimalist bir çerçevedir Bu, ruta'ları, manzaraları, ara yazılımları ve HTTP kullanımını kolaylaştırır. Yaratıcınızla birlikte, rotalar, manzaralar ve yinelemeli estetiklerle ilerleyen zamanlarda bir proje yapısı oluşturabilirsiniz.
- Projeleriniz için bir klasör oluşturun:
mkdir ExpressProjects && cd ExpressProjects. - Genera una plantilla:
npx express-generator HelloWorld --view=pugPug manzara motoruyla uygulamayı oluşturun. - VS Code'u açın ile
code .y revisa la estructura: çöp kutusu (başlangıç), halka açık (JS/CSS/resimler), yolları (controladores de rutas), Gösterim (plantillas), uygulama.js (yapılandırma), paket.json (betikler ve bağımlılıklar). - Bağımlılıkları yükleyin ile
npm installen la carpeta del proyecto. - uygulamayı başlat. Örneğin, tasfiye ile:
npx cross-env DEBUG=HelloWorld:* npm start. - açılan http://localhost:3000. Ana manzarayı değiştirinyer:
views/index.pug, sustituye el título porh1 "Hello World!"ve şarj edin.
Ekspres gerekli olan şeyleri içerir gestionar GET, POST, PUT y DELETE, ara yazılım kullanın, estetik hizmet verin, manzaraları oluşturun ve çeşitli sayfalarda çeşitli sürtünmelerle bir uygulama oluşturun.
npm ve Node'un içerdiği modüller
npm, Düğümün paket taşıyıcısıdır ve terceros kitaplıklarının yüklenmesine izin verin. Örneğin, bir Ekspres için: npm install express. Después podrás require('express') ve kodunuzu kullanın. Bu esneklik, korumanızı artırmak için kullanılabilir.
Además, Node incluye yerel modüller para tareas comunes: fs (dosyalar), http/https (hizmetçiler), path (rutalar), os (sistem verileri), url (URL ayrıştırma) ve daha fazlası. İthalat işlemleri require() hiçbir şey yüklemeden.
Yerel bir modül önerin: sistem bilgileri
'İşletim Sistemi' modülü sistem çalışma verilerini içerir. Konsolu açın ve Düğümün REPL'sine girin node Dosyaları oluştururken işlevleri hızlı bir şekilde çalıştırmak için.
- yazmak
os.platform()platforma uyum sağlamak için (win32, linux, darwin…). Confirmarás el SO activo doğrudan. - ile
os.arch()mimari elde edildi (x64, arm64…). Útil para binarios o builds. - Amerika Birleşik Devletleri
os.cpus()mevcut çekirdekler için. Ideal para equilibrar carga çok sayıda küme veya işlemle. - Sal del REPL con
.exito pulsando Ctrl+C dos veces. Rápido y sin residuos.
Günlük ve Günlük Kullanılacak Tercüme Kütüphanesi
El ecosistema npm es enorme. Algunas popüler olanları kullanır: keskin (görüntü aktarımı ve sıkıştırma), PDFKit (generación de PDF), doğrulayıcı.js (validación de cadenas), resimmin y ÇirkinleştirmekJS (minification), spritesmith (cinler), winston (günlük kaydı) y komutan.js (CLI). Instálalas con npm install <paquete> onlara ihtiyacın olduğunda.
Node.js dosyasının kodunu görüntülemek
App.js örneği için kodunuzu bir arşivde saklayın, y ejecútalo con node app.js terminalde. Bu, programı başlatmanız ve sonuçları konsolda görmeniz veya bir sunucuyu gezginde tutmanız durumunda gerçekleşir.
REPL'i gerçek bir uygulamayla sil: tam grip
REPL'in küçük işlevler için mükemmel olması muhtemeldir, ancak kod girdiğinizde, dosyaları bir araya getirebilir, modülleri düzenleyebilir ve npm için komut dosyaları oluşturabilirsiniz. Bu forma podrás npm çalıştırmasını otomatikleştirme Başlangıç komutlarını belgeleyin package.json.
POST verilerinin bloke edilmesi
Bir formül kullanarak alışılmış bir şey yaptığınızda, dilekçenin numarası çeşitli şekillerde yapılabilir. Sunucuda (geri arama) createServer) añade dinleyicileri data y end İçeriğin ve sürecin son aşamasının birikmesi için. Doğru şekilde işlenmesi için UTF-8 gibi kodlamanın tam olarak yapıldığını gösterir.
request.setEncoding('utf8');
var postBody = '';
request.addListener('data', function(chunk) {
postBody += chunk;
});
request.addListener('end', function() {
// route(handle, pathname, response, postBody)
});
Ekstra bireylere ihtiyaç var, usa el módulo 'querystring' como llega cuerpo'yu ayrıştırmak için application/x-www-form-urlencoded: querystring.parse(postBody).textÖrneğin,.
Maliyetli Operasyonlar ve Bloke Olmayan Yöneticiler
Sistem Komutlarını Çalıştırmak İçin sunucuyu geciktirmek, kullanmak child_process.exec Geri aramaya yanıt verirsiniz. Şunun gibi seçenekler var: timeout o maxBuffer kontrol amaçlı komandolar. Kullanıcı aynı şeyi yapıyor: nada de bloquear, yanıt veren kişi veri istediğinde.
var exec = require('child_process').exec;
function handler(response) {
exec('ls -lah', function(error, stdout, stderr) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write(stdout);
response.end();
});
}
Komutun çok daha zorlu olması durumunda, geri kalan işlemler her seferinde normal şekilde yanıt verir. okul müdüründe hiçbir günah maliyeti yok.
Dosya Altları: Bilgiler ve Bilgiler
Çok parçalı yüklemeler için (diğer arşivlerdeki görüntüler) daha fazla pratiktir ve özel bir pakette yinelenir. Modüller müthiş kolaylaştırıcı parsear formülleri multipart/form-data, zamansal dosyalara erişin ve hedefinize taşıyın. La idea es la misma: geri aramalar/promesalar ve akışları güvence altına almanın bir yolu.
Uygulamanın ilk aşamalardan kaçması tamamlandıktan sonra, yüklemeyi griple bütünleştirmenin önemli olduğu: sunucu que recibe el formulario, yönlendirici que dirige a la ruta de subida, y işleyicisi doğrulamak, sonucu korumak ve yanıt vermek (örneğin, görüntünün çoğu).
Manzara yapısı ve dinamik içerik
Pug veya başka bir motorla Express'i tercih edin, denetleyicinin ekranı manzaraya aktarılır ve görüntü oluşturulur. POST tarafından oluşturulan bir metin alanıyla bir formül oluşturmak ve bunu gösteren bir yöntem oluşturmak için, işleyicilerle iletişime geçin: formülü ve diğerlerini kullandığınızda süreci yönet ve içeriği değiştir Alınan.
İyi organizasyonel uygulamalar
Evita archivos monolíticos. Eylemleri ifade eden fiillerle ilgili işlevleri modüllere ayırın (örneğin, başlatmak, yüklenme, Listeye), ve dikkatli olduğunuzda bağımlılıkları ortadan kaldırın (sunucu ve yönlendiricideki işlevleri veya rota haritalarını devre dışı bırakın). Kapasiteleri koruyun, böylece daha fazla eşyanın yaratılmasına izin verin.
Node.js ile yapılandırma yapılabilir
Su modeli olaya dayalı ve engellemeyen Özellikle şunlar için özel olarak tasarlanmıştır: web sunucuları, REST API'leri, gerçek zamanlı uygulamalar (sohbet, kontrol panelleri), botlar ve CLI'ler, veri tabanlarıyla entegrasyonlar, iş kodları ve donanım kontrolü. Web yuvalarını yönetme ve akışı etkileşimli deneyimler için doğal bir seçime dönüştürme kolaylığı.
- Servidores y sitios web con plantillas o SSR.
- REST API'leri üst düzey trafik için hazırlıklar.
- Gerçek zamanlı Sohbet, bildirimler ve oyunlar için soketleri kullanın.
- komut satırı araçları görevleri otomatikleştirmek için.
- Dosyalarla ilgili işlemler ve veri tabanları, kolalar ve boru hatları.
- IoT ve donanım con librerías específicas.
Eğitim ve Uygulama Eğitimleri
Kodları ve kodları içeren etkileşimli etkileşimler mevcuttur Lado, hızlı bir şekilde hareket etmek için idealdir. Aynı zamanda, ipuçları oluşturma konusunda ilerleyebilirsiniz: belgeleme, örnekleri kopyalama ve terminalde yerel olarak çıkarma, prensipte en fazla yeterli olanıdır.
Visual Studio Code: Düzenleyiciden Üretilen Ürün
Entegre terminal, temizleyici ve uzantılar VS Code, Node ile çok rahat bir şekilde çalışabilir. "Ver > Terminal", kabukları açabilir, önceden belirlenenleri değiştirebilir ve çıkarabilir. node o npm run editörü terk etme günahı. Además, launch.json dosyasını yapılandırın Paso'yu boşaltmanıza izin verin.
Sürüm özellikleri ve istikrar
Pek çok klasik kullanıcı, Node'un eski sürümleriyle test ediliyor, ancak yeni konseptler: geri aramalar, yerel modüller, zaman aşımı, kayıtlar ve sorumlulukların ayrılması. Gerçek sürümlerle, daha hızlı ve güvenli bir şekilde ve daha uzun bir süre boyunca bir ekosistem npm'si ile çalışıyorsunuz.
İndirilenler ve ek yinelenenler
Belgeler, PDF'ler ve öğreticiler ile geniş bir stüdyo oluşturulabilir. Yeni sürümler ve indirmeler için Node'un web yetkilisini gözden geçirin ve dahil edilecek öğretici kaynakları belirleyin. ejercicios, quizzes y retos ilerlemek için bir ortamla tanışmak için.
Tamamlayıcı materyaller mevcutsa, örneklerle ilgili giriş kılavuzları ve pratik referanslarla tanışın, ayrıca gerektiğinde indirmeyi de tamamlayın. Mantén tu foco en practicar: leer está bien; ejecutar, romper cosas y arreglarlas, mejor.
Tam örnek: yönlendirici ve işleyicilerle mini uygulama
Juntando piezas. Imagina un proyecto con index.js que arranca el servidor, sunucu.js con HTTP y parsing de POST, router.js hangi işlevin çalıştırılacağına karar vermek requestHandlers.js şu şekilde: bir formülü gösteren bir şey ve kıskanılan metni içeren başka bir şey.
// index.js
var server = require('./server');
var router = require('./router');
var handlers = require('./requestHandlers');
var handle = {};
handle['/'] = handlers.iniciar;
handle['/iniciar'] = handlers.iniciar;
handle['/subir'] = handlers.subir;
server.iniciar(router.route, handle);
// server.js
var http = require('http');
var url = require('url');
function iniciar(route, handle) {
function onRequest(request, response) {
var postData = '';
var pathname = url.parse(request.url).pathname;
request.setEncoding('utf8');
request.addListener('data', function(chunk) { postData += chunk; });
request.addListener('end', function() {
route(handle, pathname, response, postData);
});
}
http.createServer(onRequest).listen(8888);
}
exports.iniciar = iniciar;
// router.js
function route(handle, pathname, response, postData) {
if (typeof handle[pathname] === 'function') {
handle[pathname](response, postData);
} else {
response.writeHead(404, {'Content-Type': 'text/html'});
response.end('404 No Encontrado');
}
}
exports.route = route;
// requestHandlers.js
var querystring = require('querystring');
function iniciar(response) {
var body = '<html>'+
'<head><meta charset=\'UTF-8\' /></head>'+
'<body>'+
'<form action=\'/subir\' method=\'post\'>'+
'<textarea name=\'text\' rows=\'10\' cols=\'40\'></textarea>'+
'<input type=\'submit\' value=\'Enviar\' />'+
'</form>'+
'</body></html>';
response.writeHead(200, {'Content-Type': 'text/html'});
response.end(body);
}
function subir(response, postData) {
var text = querystring.parse(postData).text || '';
response.writeHead(200, {'Content-Type': 'text/html'});
response.end('Tu enviaste: ' + text);
}
exports.iniciar = iniciar;
exports.subir = subir;
Bu en az zamanınız var sunucu çalışıyor ve bloke yok, ayrı ayrı rotalar ve kontrollerle, daha iyi manzaralar oluşturmak için hazırlanır, veri tabanlarıyla yüklemeler veya entegrasyonlar yapılır.
Düğümün anahtarı "bir şeyler" üzerinde yazılıyor: bazı işlevleri yerine getirir, bir araya geldiğinizde bağımlılıkları giderir ve sorumluluk bloklarını yönetirsiniz. Aynı şekilde, uygulamanız daha kolay anlaşılır ve daha kapsamlı hale getirilecek şekilde uyarlanır.
Sağlam bir temel görünüm elde etmek için: Düğümü yükleyin ve VS Code ile ilk komut dosyasını çalıştırın. bir sunucu HTTP yerel, özel sunucu, Express, npm, yerel modüller, REPL, bloklarla eşleme ve POST formüllerinin uygulanması. Pratik ve özel yinelemelerle, kodda açıklığa kavuşturulmaması için daha fazla proje oluşturulabilir.