Node.js - Hızlı Kılavuz

Node.js nedir?

Node.js, Google Chrome'un JavaScript Motoru (V8 Motoru) üzerine kurulmuş bir sunucu tarafı platformudur. Node.js, 2009 yılında Ryan Dahl tarafından geliştirilmiştir ve en son sürümü v0.10.36'dır. Resmi belgelerinde sağlanan Node.js tanımı aşağıdaki gibidir -

Node.js, hızlı ve ölçeklenebilir ağ uygulamalarını kolayca oluşturmak için Chrome'un JavaScript çalışma zamanını temel alan bir platformdur . Node.js, onu hafif ve verimli kılan olay odaklı, engellemeyen bir G / Ç modeli kullanır ve dağıtılmış cihazlarda çalışan, veri yoğun gerçek zamanlı uygulamalar için mükemmeldir.

Node.js, sunucu tarafı ve ağ uygulamaları geliştirmek için açık kaynaklı, platformlar arası bir çalışma zamanı ortamıdır. Node.js uygulamaları JavaScript'te yazılmıştır ve OS X, Microsoft Windows ve Linux'ta Node.js çalışma zamanında çalıştırılabilir.

Node.js ayrıca, Node.js kullanarak web uygulamalarının geliştirilmesini büyük ölçüde basitleştiren çeşitli JavaScript modüllerinden oluşan zengin bir kitaplık sağlar.

Node.js = Runtime Environment + JavaScript Library

Node.js'nin özellikleri

Aşağıdakiler, Node.js'yi yazılım mimarlarının ilk tercihi yapan önemli özelliklerden bazılarıdır.

  • Asynchronous and Event Driven- Node.js kitaplığının tüm API'leri eşzamansızdır, yani engellemez. Temelde, Node.js tabanlı bir sunucunun bir API'nin veri döndürmesini beklemediği anlamına gelir. Sunucu, çağrıldıktan sonra sonraki API'ye geçer ve Node.js Olaylarının bildirim mekanizması, sunucunun önceki API çağrısından bir yanıt almasına yardımcı olur.

  • Very Fast - Google Chrome'un V8 JavaScript Motoru üzerine kurulu olan Node.js kitaplığı, kod yürütmede çok hızlıdır.

  • Single Threaded but Highly Scalable- Node.js, olay döngüsü ile tek iş parçacıklı bir model kullanır. Olay mekanizması, sunucunun engellemesiz bir şekilde yanıt vermesine yardımcı olur ve istekleri karşılamak için sınırlı iş parçacıkları oluşturan geleneksel sunucuların aksine sunucuyu yüksek oranda ölçeklenebilir hale getirir. Node.js, tek iş parçacıklı bir program kullanır ve aynı program, Apache HTTP Sunucusu gibi geleneksel sunuculardan çok daha fazla sayıda isteğe hizmet sağlayabilir.

  • No Buffering- Node.js uygulamaları hiçbir zaman hiçbir veriyi arabelleğe almaz. Bu uygulamalar, verileri yığınlar halinde çıkarır.

  • License- Node.js, MIT lisansı altında yayınlandı .

Node.js'yi Kim Kullanır?

Aşağıda, Node.js kullanan projelerin, uygulamaların ve şirketlerin kapsamlı bir listesini içeren github wiki'deki bağlantı verilmiştir. Bu liste eBay, General Electric, GoDaddy, Microsoft, PayPal, Uber, Wikipins, Yahoo! Ve Yammer'ı içerir.

  • Düğüm Kullanan Projeler, Uygulamalar ve Şirketler

Kavramlar

Aşağıdaki diyagram, sonraki bölümlerde ayrıntılı olarak tartışacağımız Node.js'nin bazı önemli bölümlerini göstermektedir.

Node.js Nerelerde Kullanılır?

Aşağıda, Node.js'nin kendisini mükemmel bir teknoloji ortağı olarak kanıtladığı alanlar verilmiştir.

  • G / Ç'ye bağlı Uygulamalar
  • Veri Akışı Uygulamaları
  • Veri Yoğun Gerçek Zamanlı Uygulamalar (DIRT)
  • JSON API'lerine dayalı Uygulamalar
  • Tek Sayfalı Uygulamalar

Node.js Nerelerde Kullanılmamalıdır?

Yoğun CPU uygulamaları için Node.js kullanılması tavsiye edilmez.

Çevrimiçi Seçeneği Deneyin

Node.js öğrenmeye başlamak için gerçekten kendi ortamınızı kurmanıza gerek yok. Nedeni çok basit, çevrimiçi olarak Node.js ortamını kurduk, böylece mevcut tüm örnekleri çevrimiçi olarak çalıştırabilir ve alıştırma yoluyla öğrenebilirsiniz. Herhangi bir örneği değiştirmekten ve sonuçları farklı seçeneklerle kontrol etmekten çekinmeyin.

Aşağıdaki örneği deneyin: Live Demo aşağıdaki örnek kod kutusunun sağ üst köşesinde bulunan seçenek (web sitemizde) -

/* Hello World! program in Node.js */
console.log("Hello World!");

Bu eğitimde verilen örneklerin çoğu için bir Deneyin seçeneği bulacaksınız, bu yüzden sadece onu kullanın ve öğrenmenin tadını çıkarın.

Yerel Ortam Kurulumu

Hala Node.js için ortamınızı kurmaya istekli iseniz, bilgisayarınızda bulunan şu iki yazılıma ihtiyacınız vardır, (a) Metin Düzenleyici ve (b) Node.js ikili kurulabilirleri.

Metin düzeltici

Bu, programınızı yazmak için kullanılacaktır. Birkaç düzenleyicinin örnekleri arasında Windows Not Defteri, İşletim Sistemi Düzenleme komutu, Kısa, Epsilon, EMACS ve vim veya vi bulunur.

Metin düzenleyicinin adı ve sürümü farklı işletim sistemlerine göre değişebilir. Örneğin, Not Defteri Windows'ta kullanılacak ve vim veya vi, Linux veya UNIX'in yanı sıra Windows'ta da kullanılabilir.

Düzenleyicinizle oluşturduğunuz dosyalara kaynak dosyalar denir ve program kaynak kodunu içerir. Node.js programlarının kaynak dosyaları genellikle ".js".

Programlamanıza başlamadan önce, bir metin düzenleyiciniz olduğundan ve bir bilgisayar programı yazmak, onu bir dosyaya kaydetmek ve sonunda onu çalıştırmak için yeterli deneyime sahip olduğunuzdan emin olun.

Node.js Çalışma Zamanı

Kaynak dosyada yazılan kaynak kodu basitçe javascript'tir. Node.js yorumlayıcısı, javascript kodunuzu yorumlamak ve yürütmek için kullanılacaktır.

Node.js dağıtımı, 32 bit (386) ve 64 bit (amd64) x86 işlemci mimarilerine sahip SunOS, Linux, Mac OS X ve Windows işletim sistemleri için kurulabilir bir ikili dosya olarak gelir.

Aşağıdaki bölüm, çeşitli işletim sistemlerinde Node.js ikili dağıtımının nasıl kurulacağı konusunda size rehberlik eder.

Node.js arşivini indirin

Node.js yüklenebilir arşiv dosyasının en son sürümünü Node.js İndirmelerinden indirin . Bu öğreticiyi yazarken, farklı işletim sistemlerinde bulunan sürümler aşağıdadır.

işletim sistemi Arşiv adı
pencereler düğüm-v6.3.1-x64.msi
Linux düğüm-v6.3.1-linux-x86.tar.gz
Mac düğüm-v6.3.1-darwin-x86.tar.gz
SunOS düğüm-v6.3.1-sunos-x86.tar.gz

UNIX / Linux / Mac OS X ve SunOS üzerine kurulum

İşletim sistemi mimarinize bağlı olarak arşiv düğümünü indirin ve çıkarın-v6.3.1-osname.tar.gz / tmp içine ve sonra çıkartılan dosyaları / usr / local / nodejs dizinine taşıyın. Örneğin:

$ cd /tmp $ wget http://nodejs.org/dist/v6.3.1/node-v6.3.1-linux-x64.tar.gz
$ tar xvfz node-v6.3.1-linux-x64.tar.gz $ mkdir -p /usr/local/nodejs
$ mv node-v6.3.1-linux-x64/* /usr/local/nodejs

PATH ortam değişkenine / usr / local / nodejs / bin ekleyin.

işletim sistemi Çıktı
Linux dışa aktarma PATH = $ PATH: / usr / local / nodejs / bin
Mac dışa aktarma PATH = $ PATH: / usr / local / nodejs / bin
FreeBSD dışa aktarma PATH = $ PATH: / usr / local / nodejs / bin

Windows üzerine kurulum

MSI dosyasını kullanın ve Node.js dosyasını yüklemek için istemleri izleyin. Varsayılan olarak, yükleyici C: \ Program Files \ nodejs içindeki Node.js dağıtımını kullanır. Yükleyici, pencerenin PATH ortam değişkeninde C: \ Program Files \ nodejs \ bin dizinini ayarlamalıdır. Değişikliğin etkili olması için tüm açık komut istemlerini yeniden başlatın.

Kurulumu doğrulayın: Bir Dosyanın Yürütülmesi

Adlı bir js dosyası oluşturun main.js makinenizde (Windows veya Linux) aşağıdaki koda sahip.

/* Hello, World! program in node.js */
console.log("Hello, World!")

Şimdi sonucu görmek için Node.js yorumlayıcısını kullanarak main.js dosyasını çalıştırın -

$ node main.js

Kurulumunuzda her şey yolundaysa, bu aşağıdaki sonucu vermelidir -

Hello, World!

Gerçek bir "Merhaba, Dünya!" Oluşturmadan önce Node.js kullanan uygulama, bir Node.js uygulamasının bileşenlerini görmemize izin verin. Bir Node.js uygulaması aşağıdaki üç önemli bileşenden oluşur -

  • Import required modules - Kullanıyoruz require Node.js modüllerini yükleme yönergesi.

  • Create server - İstemcinin isteklerini Apache HTTP Sunucusuna benzer şekilde dinleyecek bir sunucu.

  • Read request and return response - Daha önceki bir adımda oluşturulan sunucu, istemci tarafından yapılan bir tarayıcı veya konsol olabilen HTTP isteğini okuyacak ve yanıtı döndürecektir.

Node.js Uygulaması Oluşturuluyor

Adım 1 - Gerekli Modülü İçe Aktarın

Kullanıyoruz require http modülünü yükleme ve döndürülen HTTP örneğini aşağıdaki gibi bir http değişkeninde saklama yönergesi -

var http = require("http");

Adım 2 - Sunucu Oluşturun

Oluşturulan http örneğini kullanıyoruz ve http.createServer() bir sunucu örneği oluşturma yöntemini kullanır ve ardından onu 8081 numaralı bağlantı noktasına bağlarız. listensunucu örneğiyle ilişkili yöntem. Parametre isteği ve yanıtı olan bir işlev iletin. Her zaman "Merhaba Dünya" döndürmek için örnek uygulamayı yazın.

http.createServer(function (request, response) {
   // Send the HTTP header 
   // HTTP Status: 200 : OK
   // Content Type: text/plain
   response.writeHead(200, {'Content-Type': 'text/plain'});
   
   // Send the response body as "Hello World"
   response.end('Hello World\n');
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

Yukarıdaki kod, dinleyen, yani yerel makinede 8081 port üzerinde bir istek bekleyen bir HTTP sunucusu oluşturmak için yeterlidir.

Adım 3 - Test İsteği ve Yanıtı

1. ve 2. adımları birlikte adlı bir dosyaya koyalım main.js ve HTTP sunucumuzu aşağıda gösterildiği gibi başlatın -

var http = require("http");

http.createServer(function (request, response) {
   // Send the HTTP header 
   // HTTP Status: 200 : OK
   // Content Type: text/plain
   response.writeHead(200, {'Content-Type': 'text/plain'});
   
   // Send the response body as "Hello World"
   response.end('Hello World\n');
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

Şimdi sunucuyu aşağıdaki gibi başlatmak için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın. Sunucu başladı.

Server running at http://127.0.0.1:8081/

Node.js Sunucusuna İstek Yapın

Herhangi bir tarayıcıda http://127.0.0.1:8081/ adresini açın ve aşağıdaki sonucu gözlemleyin.

Tebrikler, 8081 numaralı bağlantı noktasındaki tüm HTTP isteklerine yanıt veren ilk HTTP sunucunuz çalışır durumda.

REPL, Read Eval Print Loop anlamına gelir ve bir komutun girildiği ve sistemin etkileşimli bir modda bir çıktıyla yanıt verdiği Windows konsolu veya Unix / Linux kabuğu gibi bir bilgisayar ortamını temsil eder. Node.js veyaNodeREPL ortamıyla birlikte gelir. Aşağıdaki görevleri yerine getirir -

  • Read - Kullanıcının girdisini okur, girdiyi JavaScript veri yapısına çözümler ve bellekte depolar.

  • Eval - Veri yapısını alır ve değerlendirir.

  • Print - Sonucu yazdırır.

  • Loop - Kullanıcı düğmesine basana kadar yukarıdaki komutu döngüler ctrl-c iki defa.

Node'un REPL özelliği, Node.js kodlarını denemede ve JavaScript kodlarında hata ayıklamada çok kullanışlıdır.

Çevrimiçi REPL Terminali

Öğreniminizi basitleştirmek için, Node.js sözdizimini uygulayabileceğiniz, kullanımı kolay bir çevrimiçi Node.js REPL ortamı oluşturduk - Node.js REPL Terminalini başlatın

REPL başlatılıyor

REPL basitçe çalıştırılarak başlatılabilir node herhangi bir argüman olmadan kabuk / konsolda aşağıdaki gibi.

$ node

REPL Komut istemini> herhangi bir Node.js komutunu yazabileceğiniz yere göreceksiniz -

$ node
>

Basit İfade

Node.js REPL komut isteminde basit bir matematik deneyelim -

$ node
> 1 + 3
4
> 1 + ( 2 * 3 ) - 4
3
>

Değişkenleri Kullanın

Değerleri saklamak ve daha sonra herhangi bir geleneksel komut dosyası gibi yazdırmak için değişkenleri kullanabilirsiniz. Eğervaranahtar kelime kullanılmaz, daha sonra değer değişkende saklanır ve yazdırılır. Halbukivaranahtar sözcük kullanılır, ardından değer saklanır ancak yazdırılmaz. Değişkenleri kullanarak yazdırabilirsinizconsole.log().

$ node
> x = 10
10
> var y = 10
undefined
> x + y
20
> console.log("Hello World")
Hello World
undefined

Çok Satırlı İfade

Düğüm REPL, JavaScript'e benzer çok satırlı ifadeyi destekler. Aşağıdaki do-while döngüsünün işleyişini kontrol edelim -

$ node
> var x = 0
undefined
> do {
   ... x++;
   ... console.log("x: " + x);
   ... } 
while ( x < 5 );
x: 1
x: 2
x: 3
x: 4
x: 5
undefined
>

...açılış ayracından sonra Enter tuşuna bastığınızda otomatik olarak gelir. Düğüm, ifadelerin sürekliliğini otomatik olarak kontrol eder.

Alt Çizgi Değişkeni

Alt çizgi kullanabilirsiniz (_) son sonucu almak için -

$ node
> var x = 10
undefined
> var y = 20
undefined
> x + y
30
> var sum = _
undefined
> console.log(sum)
30
undefined
>

REPL Komutları

  • ctrl + c - mevcut komutu sonlandırın.

  • ctrl + c twice - Düğüm REPL'yi sonlandırın.

  • ctrl + d - Düğüm REPL'yi sonlandırın.

  • Up/Down Keys - komut geçmişine bakın ve önceki komutları değiştirin.

  • tab Keys - mevcut komutların listesi.

  • .help - tüm komutların listesi.

  • .break - çok satırlı ifadeden çıkış.

  • .clear - çok satırlı ifadeden çıkış.

  • .save filename - geçerli Düğüm REPL oturumunu bir dosyaya kaydedin.

  • .load filename - dosya içeriğini geçerli Düğüm REPL oturumunda yükleyin.

REPL durduruluyor

Yukarıda bahsedildiği gibi kullanmanız gerekecek ctrl-c twice Node.js REPL'den çıkmak için.

$ node
>
(^C again to quit)
>

Node Package Manager (NPM) iki ana işlev sağlar -

  • Aranabilecektir node.js paketler / modülleri için Çevrimiçi depoları search.nodejs.org

  • Node.js paketlerini yüklemek, Node.js paketlerinin sürüm yönetimi ve bağımlılık yönetimini yapmak için komut satırı yardımcı programı.

NPM, v0.6.3 sürümünden sonra Node.js yüklenebilirleriyle birlikte gelir. Aynısını doğrulamak için konsolu açın ve aşağıdaki komutu yazın ve sonucu görün -

$ npm --version
2.7.1

NPM'nin eski bir sürümünü çalıştırıyorsanız, onu en son sürüme güncellemek oldukça kolaydır. Kökten aşağıdaki komutu kullanın -

$ sudo npm install npm -g
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/lib/node_modules/npm

NPM Kullanarak Modülleri Kurmak

Herhangi bir Node.js modülünü yüklemek için basit bir sözdizimi vardır -

$ npm install <Module Name>

Örneğin, aşağıdaki ifade adlı ünlü bir Node.js web çerçeve modülünü kurma komutu verilmiştir -

$ npm install express

Şimdi bu modülü js dosyanızda aşağıdaki gibi kullanabilirsiniz -

var express = require('express');

Global vs Yerel Kurulum

Varsayılan olarak, NPM herhangi bir bağımlılığı yerel modda yükler. Burada yerel mod, Node uygulamasının bulunduğu klasörde bulunan node_modules dizinindeki paket kurulumunu ifade eder. Yerel olarak dağıtılan paketlere, require () yöntemi aracılığıyla erişilebilir. Örneğin, ekspres modülü kurduğumuzda, ekspres modülü kurduğu mevcut dizinde node_modules dizini oluşturdu.

$ ls -l
total 0
drwxr-xr-x 3 root root 20 Mar 17 02:23 node_modules

Alternatif olarak kullanabilirsiniz npm ls yerel olarak kurulu tüm modülleri listelemek için komut.

Global olarak yüklenmiş paketler / bağımlılıklar sistem dizininde saklanır. Bu tür bağımlılıklar, herhangi bir node.js'nin CLI (Komut Satırı Arayüzü) işlevinde kullanılabilir, ancak doğrudan Node uygulamasında require () kullanılarak içe aktarılamaz. Şimdi global kurulumu kullanarak ekspres modülü kurmayı deneyelim.

$ npm install express -g

Bu benzer bir sonuç üretecek ancak modül global olarak yüklenecek. Buradaki ilk satır, modül sürümünü ve kurulduğu yeri gösterir.

[email protected] /usr/lib/node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected])

Global olarak kurulu tüm modülleri kontrol etmek için aşağıdaki komutu kullanabilirsiniz -

$ npm ls -g

Package.json kullanma

package.json, herhangi bir Node uygulamasının / modülünün kök dizininde bulunur ve bir paketin özelliklerini tanımlamak için kullanılır. Mevcut ekspres paketin package.json dosyasını açalımnode_modules/express/

{
   "name": "express",
      "description": "Fast, unopinionated, minimalist web framework",
      "version": "4.11.2",
      "author": {
      
         "name": "TJ Holowaychuk",
         "email": "[email protected]"
      },
   
   "contributors": [{
      "name": "Aaron Heckmann",
      "email": "[email protected]"
   }, 
   
   {
      "name": "Ciaran Jessup",
      "email": "[email protected]"
   },
   
   {
      "name": "Douglas Christopher Wilson",
      "email": "[email protected]"
   },
   
   {
      "name": "Guillermo Rauch",
      "email": "[email protected]"
   },
   
   {
      "name": "Jonathan Ong",
      "email": "[email protected]"
   },
   
   {
      "name": "Roman Shtylman",
      "email": "[email protected]"
   },
   
   {
      "name": "Young Jae Sim",
      "email": "[email protected]"
   } ],
   
   "license": "MIT", "repository": {
      "type": "git",
      "url": "https://github.com/strongloop/express"
   },
   
   "homepage": "https://expressjs.com/", "keywords": [
      "express",
      "framework",
      "sinatra",
      "web",
      "rest",
      "restful",
      "router",
      "app",
      "api"
   ],
   
   "dependencies": {
      "accepts": "~1.2.3",
      "content-disposition": "0.5.0",
      "cookie-signature": "1.0.5",
      "debug": "~2.1.1",
      "depd": "~1.0.0",
      "escape-html": "1.0.1",
      "etag": "~1.5.1",
      "finalhandler": "0.3.3",
      "fresh": "0.2.4",
      "media-typer": "0.3.0",
      "methods": "~1.1.1",
      "on-finished": "~2.2.0",
      "parseurl": "~1.3.0",
      "path-to-regexp": "0.1.3",
      "proxy-addr": "~1.0.6",
      "qs": "2.3.3",
      "range-parser": "~1.0.2",
      "send": "0.11.1",
      "serve-static": "~1.8.1",
      "type-is": "~1.5.6",
      "vary": "~1.0.0",
      "cookie": "0.1.2",
      "merge-descriptors": "0.0.2",
      "utils-merge": "1.0.0"
   },
   
   "devDependencies": {
      "after": "0.8.1",
      "ejs": "2.1.4",
      "istanbul": "0.3.5",
      "marked": "0.3.3",
      "mocha": "~2.1.0",
      "should": "~4.6.2",
      "supertest": "~0.15.0",
      "hjs": "~0.0.6",
      "body-parser": "~1.11.0",
      "connect-redis": "~2.2.0",
      "cookie-parser": "~1.3.3",
      "express-session": "~1.10.2",
      "jade": "~1.9.1",
      "method-override": "~2.3.1",
      "morgan": "~1.5.1",
      "multiparty": "~4.1.1",
      "vhost": "~3.0.0"
   },
   
   "engines": {
      "node": ">= 0.10.0"
   },
   
   "files": [
      "LICENSE",
      "History.md",
      "Readme.md",
      "index.js",
      "lib/"
   ],
   
   "scripts": {
      "test": "mocha --require test/support/env 
         --reporter spec --bail --check-leaks test/ test/acceptance/",
      "test-cov": "istanbul cover node_modules/mocha/bin/_mocha 
         -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
      "test-tap": "mocha --require test/support/env 
         --reporter tap --check-leaks test/ test/acceptance/",
      "test-travis": "istanbul cover node_modules/mocha/bin/_mocha 
         --report lcovonly -- --require test/support/env 
         --reporter spec --check-leaks test/ test/acceptance/"
   },
   
   "gitHead": "63ab25579bda70b4927a179b580a9c580b6c7ada",
   "bugs": {
      "url": "https://github.com/strongloop/express/issues"
   },
   
   "_id": "[email protected]",
   "_shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
   "_from": "express@*",
   "_npmVersion": "1.4.28",
   "_npmUser": {
      "name": "dougwilson",
      "email": "[email protected]"
   },
   
   "maintainers": [{
      "name": "tjholowaychuk",
      "email": "[email protected]"
   },
   
   {
      "name": "jongleberry",
      "email": "[email protected]"
   },
   
   {
      "name": "shtylman",
      "email": "[email protected]"
   },
   
   {
      "name": "dougwilson",
      "email": "[email protected]"
   },
   
   {
      "name": "aredridel",
      "email": "[email protected]"
   },
   
   {
      "name": "strongloop",
      "email": "[email protected]"
   },
   
   {
      "name": "rfeng",
      "email": "[email protected]"
   }],
   
   "dist": {
      "shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
      "tarball": "https://registry.npmjs.org/express/-/express-4.11.2.tgz"
   },
   
   "directories": {},
      "_resolved": "https://registry.npmjs.org/express/-/express-4.11.2.tgz",
      "readme": "ERROR: No README data found!"
}

Package.json Öznitelikleri

  • name - paketin adı

  • version - paketin versiyonu

  • description - paketin açıklaması

  • homepage - paketin ana sayfası

  • author - paketin yazarı

  • contributors - pakete katkıda bulunanların adı

  • dependencies- bağımlılıkların listesi. NPM, paketin node_module klasöründe burada bahsedilen tüm bağımlılıkları otomatik olarak yükler.

  • repository - paketin depo türü ve URL'si

  • main - paketin giriş noktası

  • keywords - anahtar kelimeler

Bir Modülü Kaldırma

Bir Node.js modülünü kaldırmak için aşağıdaki komutu kullanın.

$ npm uninstall express

NPM paketi kaldırdığında, / node_modules / dizininin içeriğine bakarak veya aşağıdaki komutu yazarak doğrulayabilirsiniz:

$ npm ls

Bir Modülü Güncelleme

Package.json'u güncelleyin ve güncellenecek bağımlılığın sürümünü değiştirin ve aşağıdaki komutu çalıştırın.

$ npm update express

Modül Ara

NPM kullanarak bir paket adı arayın.

$ npm search express

Modül Oluşturun

Bir modül oluşturmak için package.json'un üretilmesi gerekir. Package.json'un temel iskeletini oluşturacak NPM'yi kullanarak package.json oluşturalım.

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.

See 'npm help json' for definitive documentation on these fields
and exactly what they do.

Use 'npm install <pkg> --save' afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (webmaster)

Modülünüz hakkında gerekli tüm bilgileri sağlamanız gerekecektir. Talep edilen çeşitli bilgilerin anlamlarını anlamak için yukarıda belirtilen package.json dosyasından yardım alabilirsiniz. Package.json oluşturulduktan sonra, geçerli bir e-posta adresi kullanarak kendinizi NPM havuz sitesine kaydetmek için aşağıdaki komutu kullanın.

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) [email protected]

Şimdi modülünüzü yayınlama zamanı -

$ npm publish

Modülünüzle ilgili her şey yolundaysa, o zaman havuzda yayınlanacak ve diğer Node.js modülleri gibi NPM kullanılarak yüklenmek için erişilebilir olacaktır.

Geri Arama nedir?

Geri arama, bir işlev için eşzamansız bir eşdeğerdir. Verilen bir görev tamamlandığında bir geri arama işlevi çağrılır. Node, geri aramalardan yoğun şekilde yararlanır. Node'un tüm API'leri, geri çağırmaları destekleyecek şekilde yazılmıştır.

Örneğin, bir dosyayı okumak için bir işlev, dosyayı okumaya başlayabilir ve kontrolü, bir sonraki komutun yürütülebilmesi için derhal yürütme ortamına geri döndürebilir. Dosya G / Ç işlemi tamamlandığında, geri arama işlevini, dosyanın içeriğini parametre olarak iletirken geri arama işlevini çağıracaktır. Yani Dosya G / Ç için herhangi bir engelleme veya bekleme yoktur. Bu, herhangi bir işlevin sonuç döndürmesini beklemeden çok sayıda isteği işleyebildiğinden, Node.js'yi oldukça ölçeklenebilir kılar.

Engelleme Kodu Örneği

Adlı bir metin dosyası oluşturun input.txt aşağıdaki içerikle -

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Adlı bir js dosyası oluşturun main.js aşağıdaki kod ile -

var fs = require("fs");
var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("Program Ended");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Program Ended

Engellemeyen Kod Örneği

Aşağıdaki içeriğe sahip input.txt adlı bir metin dosyası oluşturun.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Aşağıdaki koda sahip olmak için main.js'yi güncelleyin -

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err) return console.error(err);
   console.log(data.toString());
});

console.log("Program Ended");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Bu iki örnek, çağrıları engelleme ve engellememe kavramını açıklamaktadır.

  • İlk örnek, programın dosyayı okuyana kadar bloke ettiğini ve ardından sadece programı sonlandırdığını gösterir.

  • İkinci örnek, programın dosya okumayı beklemediğini ve "Program Bitti" yazdırmaya devam ettiğini ve aynı zamanda programın engellemeden dosyayı okumaya devam ettiğini göstermektedir.

Bu nedenle, bir engelleme programı çok fazla sırayla yürütülür. Programlama bakış açısından, mantığı uygulamak daha kolaydır, ancak engellemeyen programlar sırayla çalıştırılmaz. Bir programın işlenecek herhangi bir veriyi kullanması gerektiğinde, sıralı yürütmesi için aynı blok içinde tutulmalıdır.

Node.js tek iş parçacıklı bir uygulamadır, ancak eşzamanlılığı event ve callbacks. Node.js'nin her API'si eşzamansızdır ve tek iş parçacıklıdır,async function callseşzamanlılığı korumak için. Düğüm, gözlemci desenini kullanır. Düğüm iş parçacığı bir olay döngüsünü saklar ve bir görev tamamlandığında, olay dinleyici işlevinin yürütülmesi için sinyal gönderen ilgili olayı tetikler.

Olay Odaklı Programlama

Node.js olayları yoğun bir şekilde kullanır ve aynı zamanda Node.js'nin diğer benzer teknolojilere kıyasla oldukça hızlı olmasının nedenlerinden biridir. Node, sunucusunu başlatır başlatmaz, basitçe değişkenlerini başlatır, işlevleri bildirir ve ardından olayın gerçekleşmesini bekler.

Olay güdümlü bir uygulamada, genellikle olayları dinleyen ve bu olaylardan biri algılandığında bir geri arama işlevini tetikleyen bir ana döngü vardır.

Olaylar geri çağırmalara oldukça benzer görünse de, aradaki fark geri çağırma fonksiyonlarının zaman uyumsuz bir fonksiyon sonucunu döndürdüğünde çağrılması, olay işleme ise gözlemci kalıbı üzerinde çalışmasında yatmaktadır. Olayları dinleyen işlevler,Observers. Bir olay tetiklendiğinde, dinleyici işlevi çalışmaya başlar. Node.js, olayları ve olay dinleyicilerini aşağıdaki gibi bağlamak için kullanılan olay modülü ve EventEmitter sınıfı aracılığıyla kullanılabilen birden çok yerleşik olaya sahiptir -

// Import events module
var events = require('events');

// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

Bir olay işleyicisini bir olayla bağlamak için sözdizimi aşağıdadır -

// Bind event and event  handler as follows
eventEmitter.on('eventName', eventHandler);

Bir etkinliği programlı olarak aşağıdaki şekilde tetikleyebiliriz -

// Fire an event 
eventEmitter.emit('eventName');

Misal

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

// Import events module
var events = require('events');

// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

// Create an event handler as follows
var connectHandler = function connected() {
   console.log('connection succesful.');
  
   // Fire the data_received event 
   eventEmitter.emit('data_received');
}

// Bind the connection event with the handler
eventEmitter.on('connection', connectHandler);
 
// Bind the data_received event with the anonymous function
eventEmitter.on('data_received', function() {
   console.log('data received succesfully.');
});

// Fire the connection event 
eventEmitter.emit('connection');

console.log("Program Ended.");

Şimdi yukarıdaki programı çalıştırmayı deneyelim ve çıktısını kontrol edelim -

$ node main.js

BT şu sonucu vermelidir -

connection successful.
data received successfully.
Program Ended.

Düğüm Uygulamaları Nasıl Çalışır?

Düğüm Uygulamasında, herhangi bir zaman uyumsuz işlev bir geri aramayı son parametre olarak kabul eder ve bir geri arama işlevi bir hatayı ilk parametre olarak kabul eder. Önceki örneğe tekrar dönelim. Aşağıdaki içeriğe sahip input.txt adlı bir metin dosyası oluşturun.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Aşağıdaki koda sahip main.js adlı bir js dosyası oluşturun -

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err) {
      console.log(err.stack);
      return;
   }
   console.log(data.toString());
});
console.log("Program Ended");

Burada fs.readFile (), amacı bir dosyayı okumak olan eşzamansız bir işlevdir. Okuma işlemi sırasında bir hata meydana gelirse,err object ilgili hatayı içerecek, aksi takdirde veriler dosyanın içeriğini içerecektir. readFile okuma işlemi tamamlandıktan sonra hata ve verileri geri çağırma işlevine aktarır, bu da sonunda içeriği yazdırır.

Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Bir Düğümdeki birçok nesne, örneğin bir net.Server olayları yayar, bir eş ona her bağlandığında bir olay yayar, bir fs.readStream, dosya açıldığında bir olay yayar. Olayları yayan tüm nesneler olayların örnekleridir.

EventEmitter Sınıfı

Önceki bölümde gördüğümüz gibi EventEmitter sınıfı, events modülünde yer almaktadır. Aşağıdaki kod aracılığıyla erişilebilir -

// Import events module
var events = require('events');

// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

Bir EventEmitter örneği herhangi bir hatayla karşılaştığında, bir 'hata' olayı yayınlar. Yeni bir dinleyici eklendiğinde 'newListener' olayı tetiklenir ve bir dinleyici kaldırıldığında 'removeListener' olayı tetiklenir.

EventEmitter, aşağıdaki gibi birden çok özellik sağlar: on ve emit. on özelliği, olayla bir işlevi bağlamak için kullanılır ve emit bir olayı tetiklemek için kullanılır.

Yöntemler

Sr.No. Yöntem ve Açıklama
1

addListener(event, listener)

Belirtilen olay için dinleyici dizisinin sonuna bir dinleyici ekler. Dinleyicinin önceden eklenip eklenmediğini görmek için hiçbir kontrol yapılmaz. Aynı olay ve dinleyici kombinasyonunu geçiren birden çok çağrı, dinleyicinin birden çok kez eklenmesine neden olur. Vericiyi döndürür, böylece çağrılar zincirlenebilir.

2

on(event, listener)

Belirtilen olay için dinleyici dizisinin sonuna bir dinleyici ekler. Dinleyicinin önceden eklenip eklenmediğini görmek için hiçbir kontrol yapılmaz. Aynı olay ve dinleyici kombinasyonunu geçiren birden çok çağrı, dinleyicinin birden çok kez eklenmesine neden olur. Vericiyi döndürür, böylece çağrılar zincirlenebilir.

3

once(event, listener)

Etkinliğe bir defalık dinleyici ekler. Bu dinleyici, yalnızca olay bir sonraki tetiklendiğinde çağrılır ve ardından kaldırılır. Vericiyi döndürür, böylece çağrılar zincirlenebilir.

4

removeListener(event, listener)

Belirtilen olay için dinleyici dizisinden bir dinleyiciyi kaldırır. Caution −Dinleyicinin arkasındaki dinleyici dizisindeki dizi dizinlerini değiştirir. removeListener, dinleyici dizisinden bir dinleyicinin en fazla bir örneğini kaldırır. Belirtilen olay için dinleyici dizisine herhangi bir tek dinleyici birden çok kez eklenmişse, her örneği kaldırmak için removeListener'ın birden çok kez çağrılması gerekir. Vericiyi döndürür, böylece çağrılar zincirlenebilir.

5

removeAllListeners([event])

Tüm dinleyicileri veya belirtilen olayın dinleyicilerini kaldırır. Kodun başka bir yerine eklenen dinleyicileri, özellikle sizin oluşturmadığınız bir yayıcıda (örneğin, soketler veya dosya akışları) kaldırmak iyi bir fikir değildir. Vericiyi döndürür, böylece çağrılar zincirlenebilir.

6

setMaxListeners(n)

Belirli bir olay için 10'dan fazla dinleyici eklenirse, EventEmitters varsayılan olarak bir uyarı yazdıracaktır. Bu, bellek sızıntılarını bulmaya yardımcı olan kullanışlı bir varsayılandır. Açıktır ki tüm Emitörler 10 ile sınırlandırılmamalıdır. Bu fonksiyon bunun artırılmasına izin verir. Sınırsız için sıfıra ayarlayın.

7

listeners(event)

Belirtilen olay için bir dinleyici dizisi döndürür.

8

emit(event, [arg1], [arg2], [...])

Dinleyicilerin her birini sağlanan bağımsız değişkenlerle sırayla çalıştırın. Etkinliğin dinleyicileri varsa doğru, aksi takdirde yanlış döndürür.

Sınıf Yöntemleri

Sr.No. Yöntem ve Açıklama
1

listenerCount(emitter, event)

Belirli bir olay için dinleyici sayısını döndürür.

Etkinlikler

Sr.No. Olaylar ve Açıklama
1

newListener

  • event - Dize: olay adı

  • listener - İşlev: olay işleyici işlevi

Bu olay, bir dinleyici eklendiğinde yayınlanır. Bu olay tetiklendiğinde, dinleyici, olay için dinleyici dizisine henüz eklenmemiş olabilir.

2

removeListener

  • event - Dize Olay adı

  • listener - İşlev Olay işleyici işlevi

Bu olay, birisi bir dinleyiciyi kaldırdığında yayınlanır. Bu olay tetiklendiğinde, dinleyici olay için dinleyiciler dizisinden henüz çıkarılmamış olabilir.

Misal

Aşağıdaki Node.js koduyla main.js adlı bir js dosyası oluşturun -

var events = require('events');
var eventEmitter = new events.EventEmitter();

// listener #1
var listner1 = function listner1() {
   console.log('listner1 executed.');
}

// listener #2
var listner2 = function listner2() {
   console.log('listner2 executed.');
}

// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);

// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);

var eventListeners = require('events').EventEmitter.listenerCount
   (eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

// Fire the connection event 
eventEmitter.emit('connection');

// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");

// Fire the connection event 
eventEmitter.emit('connection');

eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

console.log("Program Ended.");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

2 Listner(s) listening to connection event
listner1 executed.
listner2 executed.
Listner1 will not listen now.
listner2 executed.
1 Listner(s) listening to connection event
Program Ended.

Saf JavaScript Unicode dostudur, ancak ikili veriler için böyle değildir. TCP akışları veya dosya sistemi ile uğraşırken, sekizli akışları işlemek gerekir. Düğüm, ham verileri bir tamsayı dizisine benzer şekilde depolamak için örnekler sağlayan, ancak V8 yığını dışındaki bir ham bellek tahsisine karşılık gelen Buffer sınıfı sağlar.

Buffer sınıfı, tampon modülünü içe aktarmadan bir uygulamada erişilebilen global bir sınıftır.

Tamponlar Oluşturma

Düğüm Tamponu çeşitli şekillerde inşa edilebilir.

Yöntem 1

Aşağıda, başlatılmamış bir Arabellek oluşturmak için sözdizimi verilmiştir. 10 sekizli -

var buf = new Buffer(10);

Yöntem 2

Belirli bir diziden Tampon oluşturmak için sözdizimi aşağıdadır -

var buf = new Buffer([10, 20, 30, 40, 50]);

Yöntem 3

Aşağıda, belirli bir dizeden ve isteğe bağlı olarak kodlama türünden bir Buffer oluşturmak için sözdizimi verilmiştir -

var buf = new Buffer("Simply Easy Learning", "utf-8");

Varsayılan kodlama "utf8" olsa da, aşağıdaki "ascii", "utf8", "utf16le", "ucs2", "base64" veya "hex" kodlamalardan herhangi birini kullanabilirsiniz.

Tamponlara Yazma

Sözdizimi

Aşağıda bir Düğüm Arabelleğine yazma yönteminin sözdizimi verilmiştir -

buf.write(string[, offset][, length][, encoding])

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • string - Bu, arabelleğe yazılacak dize verileridir.

  • offset- Bu, yazmaya başlamak için tamponun dizinidir. Varsayılan değer 0'dır.

  • length- Bu, yazılacak bayt sayısıdır. Buffer.length öntanımlıdır.

  • encoding- Kullanılacak kodlama. 'utf8' varsayılan kodlamadır.

Geri dönüş değeri

Bu yöntem, yazılan sekizli sayısını döndürür. Tamponda dizgenin tamamına sığacak kadar boşluk yoksa dizenin bir kısmını yazacaktır.

Misal

buf = new Buffer(256);
len = buf.write("Simply Easy Learning");

console.log("Octets written : "+  len);

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

Octets written : 20

Tamponlardan Okuma

Sözdizimi

Bir Düğüm Arabelleğinden veri okuma yönteminin sözdizimi aşağıdadır -

buf.toString([encoding][, start][, end])

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • encoding- Kullanılacak kodlama. 'utf8' varsayılan kodlamadır.

  • start - Okumaya başlamak için başlangıç ​​dizini, varsayılan olarak 0'dır.

  • end - Okumayı bitirmek için endeksi bitir, varsayılanlar tam arabellek.

Geri dönüş değeri

Bu yöntem, belirtilen karakter kümesi kodlaması kullanılarak kodlanmış arabellek verilerinden bir dizenin kodunu çözer ve döndürür.

Misal

buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
  buf[i] = i + 97;
}

console.log( buf.toString('ascii'));       // outputs: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5));   // outputs: abcde
console.log( buf.toString('utf8',0,5));    // outputs: abcde
console.log( buf.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde

Arabelleği JSON'a Dönüştür

Sözdizimi

Bir Düğüm Arabelleğini JSON nesnesine dönüştürmek için kullanılan yöntemin sözdizimi aşağıdadır -

buf.toJSON()

Geri dönüş değeri

Bu yöntem, Buffer örneğinin JSON temsilini döndürür.

Misal

var buf = new Buffer('Simply Easy Learning');
var json = buf.toJSON(buf);

console.log(json);

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

{ type: 'Buffer',
   data: 
   [ 
      83,
      105,
      109,
      112,
      108,
      121,
      32,
      69,
      97,
      115,
      121,
      32,
      76,
      101,
      97,
      114,
      110,
      105,
      110,
      103 
   ]
}

Tamponları Birleştir

Sözdizimi

Aşağıda, Düğüm arabelleklerini tek bir Düğüm Arabelleğine bağlama yönteminin sözdizimi verilmiştir -

Buffer.concat(list[, totalLength])

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • list - Birleştirilecek Buffer nesnelerinin Dizi Listesi.

  • totalLength - Bu, birleştirildiğinde tamponların toplam uzunluğudur.

Geri dönüş değeri

Bu yöntem bir Buffer örneği döndürür.

Misal

var buffer1 = new Buffer('TutorialsPoint ');
var buffer2 = new Buffer('Simply Easy Learning');
var buffer3 = Buffer.concat([buffer1,buffer2]);

console.log("buffer3 content: " + buffer3.toString());

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

buffer3 content: TutorialsPoint Simply Easy Learning

Tamponları Karşılaştır

Sözdizimi

Aşağıda, iki Düğüm arabelleğini karşılaştırmak için kullanılan yöntemin sözdizimi verilmiştir -

buf.compare(otherBuffer);

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • otherBuffer - Bu, karşılaştırılacak diğer tampondur buf

Geri dönüş değeri

Sıralama düzeninde otherBuffer'dan önce mi sonra mı geldiğini yoksa aynı olduğunu gösteren bir sayı döndürür.

Misal

var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);

if(result < 0) {
   console.log(buffer1 +" comes before " + buffer2);
} else if(result === 0) {
   console.log(buffer1 +" is same as " + buffer2);
} else {
   console.log(buffer1 +" comes after " + buffer2);
}

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

ABC comes before ABCD

Arabelleği Kopyala

Sözdizimi

Bir düğüm arabelleğini kopyalama yönteminin sözdizimi aşağıdadır -

buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • targetBuffer - Tamponun kopyalanacağı tampon nesnesi.

  • targetStart - Sayı, İsteğe Bağlı, Varsayılan: 0

  • sourceStart - Sayı, İsteğe Bağlı, Varsayılan: 0

  • sourceEnd - Sayı, İsteğe Bağlı, Varsayılan: buffer.length

Geri dönüş değeri

Dönüş değeri yok. Hedef bellek bölgesi kaynakla çakışsa bile, bu arabelleğin bir bölgesinden verileri hedef arabellekteki bir bölgeye kopyalar. Tanımsızsa, targetStart ve sourceStart parametreleri varsayılan olarak 0'a, sourceEnd ise buffer.length'e varsayılan olur.

Misal

var buffer1 = new Buffer('ABC');

//copy a buffer
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

buffer2 content: ABC

Dilim Arabelleği

Sözdizimi

Aşağıda, bir düğüm arabelleğinin bir alt arabelleğini almak için yöntemin sözdizimi verilmiştir -

buf.slice([start][, end])

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • start - Sayı, İsteğe Bağlı, Varsayılan: 0

  • end - Sayı, İsteğe Bağlı, Varsayılan: buffer.length

Geri dönüş değeri

Eskisiyle aynı belleğe başvuran, ancak başlangıç ​​(varsayılan olarak 0'dır) ve bitiş (varsayılan olarak buffer.length) dizinlerine göre ofset ve kırpılmış yeni bir arabellek döndürür. Negatif dizinler arabelleğin sonundan başlar.

Misal

var buffer1 = new Buffer('TutorialsPoint');

//slicing a buffer
var buffer2 = buffer1.slice(0,9);
console.log("buffer2 content: " + buffer2.toString());

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

buffer2 content: Tutorials

Tampon Uzunluğu

Sözdizimi

Aşağıda, bayt cinsinden bir düğüm arabelleğinin boyutunu elde etmek için yöntemin sözdizimi verilmiştir -

buf.length;

Geri dönüş değeri

Bayt cinsinden arabellek boyutunu döndürür.

Misal

var buffer = new Buffer('TutorialsPoint');

//length of the buffer
console.log("buffer length: " + buffer.length);

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verir -

buffer length: 14

Yöntem Referansı

Sr.No. Yöntem ve Açıklama
1

new Buffer(size)

Boyut sekizli yeni bir arabellek ayırır. Boyutun kMaxLength'den fazla olmaması gerektiğini unutmayın. Aksi takdirde, burada bir RangeError hatası atılır.

2

new Buffer(buffer)

Aktarılan arabellek verilerini yeni bir Buffer örneğine kopyalar.

3

new Buffer(str[, encoding])

Verilen dizeyi içeren yeni bir tampon ayırır. kodlama varsayılan olarak 'utf8' şeklindedir.

4

buf.length

Arabelleğin boyutunu bayt cinsinden döndürür. Bunun mutlaka içeriğin boyutu olmadığını unutmayın. uzunluk, arabellek nesnesi için ayrılan bellek miktarını ifade eder. Tamponun içeriği değiştirildiğinde değişmez.

5

buf.write(string[, offset][, length][, encoding])

Belirtilen kodlamayı kullanarak ofsette arabelleğe bir dize yazar. ofset varsayılan olarak 0'dır, kodlama varsayılanı "utf8" dir. uzunluk, yazılacak bayt sayısıdır. Yazılan sekizli sayısını döndürür.

6

buf.writeUIntLE(value, offset, byteLength[, noAssert])

Arabelleğe belirtilen uzaklık ve byteLength değerinde bir değer yazar. 48 bit doğruluğa kadar destekler. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Varsayılan olarak yanlıştır.

7

buf.writeUIntBE(value, offset, byteLength[, noAssert])

Arabelleğe belirtilen uzaklık ve byteLength değerinde bir değer yazar. 48 bit doğruluğa kadar destekler. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Varsayılan olarak yanlıştır.

8

buf.writeIntLE(value, offset, byteLength[, noAssert])

Arabelleğe belirtilen uzaklık ve byteLength değerinde bir değer yazar. 48 bit doğruluğa kadar destekler. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Varsayılan olarak yanlıştır.

9

buf.writeIntBE(value, offset, byteLength[, noAssert])

Arabelleğe belirtilen uzaklık ve byteLength değerinde bir değer yazar. 48 bit doğruluğa kadar destekler. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Varsayılan olarak yanlıştır.

10

buf.readUIntLE(offset, byteLength[, noAssert])

Tüm sayısal okuma yöntemlerinin genelleştirilmiş bir versiyonu. 48 bit doğruluğa kadar destekler. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

11

buf.readUIntBE(offset, byteLength[, noAssert])

Tüm sayısal okuma yöntemlerinin genelleştirilmiş bir versiyonu. 48 bit doğruluğa kadar destekler. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

12

buf.readIntLE(offset, byteLength[, noAssert])

Tüm sayısal okuma yöntemlerinin genelleştirilmiş bir versiyonu. 48 bit doğruluğa kadar destekler. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

13

buf.readIntBE(offset, byteLength[, noAssert])

Tüm sayısal okuma yöntemlerinin genelleştirilmiş bir versiyonu. 48 bit doğruluğa kadar destekler. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

14

buf.toString([encoding][, start][, end])

Belirtilen karakter kümesi kodlaması kullanılarak kodlanmış arabellek verilerinden bir dizenin kodunu çözer ve döndürür.

15

buf.toJSON()

Buffer örneğinin JSON temsilini döndürür. JSON.stringify, bir Buffer örneğini dizge haline getirirken bu işlevi örtük olarak çağırır.

16

buf[index]

Okteti dizine alın ve ayarlayın. Değerler ayrı baytlara atıfta bulunur, bu nedenle yasal aralık 0x00 ile 0xFF hex veya 0 ile 255 arasındadır.

17

buf.equals(otherBuffer)

Bu arabellek ve otherBuffer aynı bayta sahipse bir boole döndürür.

18

buf.compare(otherBuffer)

Sıralama düzeninde bu arabelleğin otherBuffer'dan önce mi yoksa sonra mı geldiğini gösteren bir sayı döndürür.

19

buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

Hedef bellek bölgesi kaynakla çakışsa bile, bu arabelleğin bir bölgesinden verileri hedef arabellekteki bir bölgeye kopyalar. Tanımsızsa, targetStart ve sourceStart parametreleri varsayılan olarak 0'a, sourceEnd ise buffer.length'e varsayılan olur.

20

buf.slice([start][, end])

Eskisiyle aynı belleğe başvuran, ancak başlangıç ​​(varsayılan olarak 0'dır) ve bitiş (varsayılan olarak buffer.length) dizinlerine göre dengelenmiş ve kırpılmış yeni bir arabellek döndürür. Negatif dizinler arabelleğin sonundan başlar.

21

buf.readUInt8(offset[, noAssert])

Belirtilen ofsette arabellekten işaretsiz 8 bitlik bir tamsayı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

22

buf.readUInt16LE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretsiz 16 bitlik bir tamsayı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

23

buf.readUInt16BE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretsiz 16 bitlik bir tamsayı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

24

buf.readUInt32LE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretsiz 32 bitlik bir tamsayı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

25

buf.readUInt32BE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretsiz 32 bitlik bir tamsayı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

26

buf.readInt8(offset[, noAssert])

Belirtilen uzaklıktaki arabellekten işaretli bir 8 bitlik tamsayı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

27

buf.readInt16LE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretli bir 16 bit tamsayıyı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

28

buf.readInt16BE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretli bir 16 bit tamsayıyı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

29

buf.readInt32LE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretli bir 32 bit tamsayıyı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

30

buf.readInt32BE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten işaretli bir 32 bit tamsayıyı okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

31

buf.readFloatLE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten 32 bitlik bir kayan nokta okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

32

buf.readFloatBE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten 32 bitlik bir kayan nokta okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

33

buf.readDoubleLE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten 64 bitlik bir çift okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

34

buf.readDoubleBE(offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabellekten 64 bitlik bir çift okur. Göreli konumun doğrulanmasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, ofsetin arabelleğin sonunun ötesinde olabileceği anlamına gelir. Varsayılan olarak yanlıştır.

35

buf.writeUInt8(value, offset[, noAssert])

Belirtilen uzaklıkta arabelleğe bir değer yazar. Değerin geçerli bir işaretsiz 8 bitlik tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

36

buf.writeUInt16LE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretsiz 16 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

37

buf.writeUInt16BE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretsiz 16 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

38

buf.writeUInt32LE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretsiz 32 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

39

buf.writeUInt32BE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretsiz 32 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

40

buf.writeInt8(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretli 8 bitlik tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

41

buf.writeInt16LE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretli 16 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

42

buf.writeInt16BE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretli 16 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

43

buf.writeInt32LE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretli 32 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

44

buf.writeInt32BE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir işaretli 32 bit tam sayı olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

45

buf.writeFloatLE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Değerin geçerli bir 32 bit kayan nokta olması gerektiğini unutmayın. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

46

buf.writeFloatBE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Not, değerin geçerli bir 32 bitlik kayan nokta olması gerekir. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

47

buf.writeDoubleLE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Not, değerin geçerli bir 64 bitlik çift olması gerekir. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

48

buf.writeDoubleBE(value, offset[, noAssert])

Belirtilen endian biçimiyle belirtilen uzaklıktaki arabelleğe bir değer yazar. Not, değerin geçerli bir 64 bitlik çift olması gerekir. Değer ve uzaklık doğrulamasını atlamak için noAssert öğesini true olarak ayarlayın. Bu, değerin belirli bir işlev için çok büyük olabileceği ve ofsetin, değerlerin sessizce düşmesine yol açan tamponun sonunun ötesinde olabileceği anlamına gelir. Doğruluğundan emin olmadığınız sürece kullanılmamalıdır. Varsayılan olarak yanlıştır.

49

buf.fill(value[, offset][, end])

Tamponu belirtilen değerle doldurur. Uzaklık (varsayılan olarak 0'dır) ve son (varsayılan olarak buffer.length) belirtilmezse, tüm arabelleği doldurur.

Sınıf Yöntemleri

Sr.No. Yöntem ve Açıklama
1

Buffer.isEncoding(encoding)

Kodlama geçerli bir kodlama bağımsız değişkeni ise doğru, aksi takdirde yanlış döndürür.

2

Buffer.isBuffer(obj)

Obj'in Buffer olup olmadığını test eder.

3

Buffer.byteLength(string[, encoding])

Bir dizenin gerçek bayt uzunluğunu verir. kodlama varsayılan olarak 'utf8' şeklindedir. String.prototype.length bir dizedeki karakter sayısını döndürdüğünden, String.prototype.length ile aynı değildir.

4

Buffer.concat(list[, totalLength])

Listedeki tüm arabelleklerin bir araya getirilmesinin sonucu olan bir arabellek döndürür.

5

Buffer.compare(buf1, buf2)

Buf1.compare (buf2) ile aynıdır. Bir dizi arabellekleri sıralamak için kullanışlıdır.

Akışlar nedir?

Akışlar, bir kaynaktan veri okumanıza veya bir hedefe sürekli olarak veri yazmanıza olanak tanıyan nesnelerdir. Node.js'de dört tür akış vardır -

  • Readable - Okuma işlemi için kullanılan akış.

  • Writable - Yazma işlemi için kullanılan akış.

  • Duplex - Hem okuma hem de yazma işlemi için kullanılabilen akış.

  • Transform - Çıktının girişe göre hesaplandığı bir tür çift yönlü akış.

Her bir Akış türü bir EventEmitterörnek ve farklı zamanlarda birkaç olay atar. Örneğin, yaygın olarak kullanılan olaylardan bazıları şunlardır:

  • data - Bu olay, okunabilecek veri olduğunda tetiklenir.

  • end - Bu olay, okunacak daha fazla veri kalmadığında tetiklenir.

  • error - Bu olay, veri alırken veya yazarken herhangi bir hata olduğunda tetiklenir.

  • finish - Bu olay, tüm veriler temeldeki sisteme temizlendiğinde tetiklenir.

Bu eğitici, Akışlarda yaygın olarak kullanılan işlemlerin temel bir anlayışını sağlar.

Bir Akıştan Okuma

Aşağıdaki içeriğe sahip input.txt adlı bir metin dosyası oluşturun -

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

var fs = require("fs");
var data = '';

// Create a readable stream
var readerStream = fs.createReadStream('input.txt');

// Set the encoding to be utf8. 
readerStream.setEncoding('UTF8');

// Handle stream events --> data, end, and error
readerStream.on('data', function(chunk) {
   data += chunk;
});

readerStream.on('end',function() {
   console.log(data);
});

readerStream.on('error', function(err) {
   console.log(err.stack);
});

console.log("Program Ended");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Bir Akışa Yazma

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

var fs = require("fs");
var data = 'Simply Easy Learning';

// Create a writable stream
var writerStream = fs.createWriteStream('output.txt');

// Write the data to stream with encoding to be utf8
writerStream.write(data,'UTF8');

// Mark the end of file
writerStream.end();

// Handle stream events --> finish, and error
writerStream.on('finish', function() {
   console.log("Write completed.");
});

writerStream.on('error', function(err) {
   console.log(err.stack);
});

console.log("Program Ended");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Program Ended
Write completed.

Şimdi mevcut dizininizde oluşturulan output.txt dosyasını açın; aşağıdakileri içermelidir -

Simply Easy Learning

Akışları Borulama

Borulama, bir akışın çıkışını başka bir akıma girdi olarak sağladığımız bir mekanizmadır. Normalde bir akıştan veri almak ve bu akışın çıktısını başka bir akışa geçirmek için kullanılır. Boru işlemlerinde sınır yoktur. Şimdi, bir dosyadan okumak ve başka bir dosyaya yazmak için bir piping örneği göstereceğiz.

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

var fs = require("fs");

// Create a readable stream
var readerStream = fs.createReadStream('input.txt');

// Create a writable stream
var writerStream = fs.createWriteStream('output.txt');

// Pipe the read and write operations
// read input.txt and write data to output.txt
readerStream.pipe(writerStream);

console.log("Program Ended");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Program Ended

Geçerli dizininizde oluşturulan output.txt dosyasını açın; aşağıdakileri içermelidir -

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Akışları Zincirleme

Zincirleme, bir akışın çıkışını başka bir akışa bağlamak ve çoklu akış işlemlerinden oluşan bir zincir oluşturmak için bir mekanizmadır. Normalde boru işlemlerinde kullanılır. Şimdi önce bir dosyayı sıkıştırmak ve sonra aynı sıkıştırmayı açmak için boru ve zincirleme kullanacağız.

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

var fs = require("fs");
var zlib = require('zlib');

// Compress the file input.txt to input.txt.gz
fs.createReadStream('input.txt')
   .pipe(zlib.createGzip())
   .pipe(fs.createWriteStream('input.txt.gz'));
  
console.log("File Compressed.");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

File Compressed.

İnput.txt dosyasının sıkıştırılmış olduğunu ve geçerli dizinde input.txt.gz dosyasını oluşturduğunu göreceksiniz. Şimdi aynı dosyayı aşağıdaki kodu kullanarak açmayı deneyelim -

var fs = require("fs");
var zlib = require('zlib');

// Decompress the file input.txt.gz to input.txt
fs.createReadStream('input.txt.gz')
   .pipe(zlib.createGunzip())
   .pipe(fs.createWriteStream('input.txt'));
  
console.log("File Decompressed.");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

File Decompressed.

Node, standart POSIX işlevleri etrafında basit sarmalayıcılar kullanarak Dosya G / Ç'yi uygular. Düğüm Dosya Sistemi (fs) modülü aşağıdaki sözdizimi kullanılarak içe aktarılabilir -

var fs = require("fs")

Eşzamanlı ve Eşzamansız

Fs modülündeki her yöntemin eşzamanlı ve eşzamansız formları vardır. Eşzamansız yöntemler, son parametreyi tamamlama işlevi geri çağırma olarak ve geri arama işlevinin ilk parametresini hata olarak alır. Eşzamanlı bir yöntem yerine eşzamansız bir yöntem kullanmak daha iyidir, çünkü birincisi yürütülürken bir programı asla engellemez, oysa ikincisi yapar.

Misal

Adlı bir metin dosyası oluşturun input.txt aşağıdaki içerikle -

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Adlı bir js dosyası oluşturalım main.js aşağıdaki kod ile -

var fs = require("fs");

// Asynchronous read
fs.readFile('input.txt', function (err, data) {
   if (err) {
      return console.error(err);
   }
   console.log("Asynchronous read: " + data.toString());
});

// Synchronous read
var data = fs.readFileSync('input.txt');
console.log("Synchronous read: " + data.toString());

console.log("Program Ended");

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Synchronous read: Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Program Ended
Asynchronous read: Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Bu bölümdeki aşağıdaki bölümler, başlıca Dosya G / Ç yöntemlerine ilişkin bir dizi iyi örnek sağlar.

Bir dosya aç

Sözdizimi

Eşzamansız modda bir dosyayı açma yönteminin sözdizimi aşağıdadır -

fs.open(path, flags[, mode], callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • path - Bu, yol dahil dosya adına sahip dizedir.

  • flags- Bayraklar, açılacak dosyanın davranışını gösterir. Olası tüm değerler aşağıda belirtilmiştir.

  • mode- Dosya modunu (izin ve yapışkan bitler) ayarlar, ancak yalnızca dosya oluşturulmuşsa. Varsayılan değer 0666'dır, okunabilir ve yazılabilir.

  • callback - Bu, iki argüman (err, fd) alan geri çağırma işlevidir.

Bayraklar

Okuma / yazma işlemleri için bayraklar -

Sr.No. Bayrak ve Açıklama
1

r

Dosyayı okumak için açın. Dosya yoksa bir istisna oluşur.

2

r+

Dosyayı okumak ve yazmak için açın. Dosya yoksa bir istisna oluşur.

3

rs

Eşzamanlı modda okumak için dosyayı açın.

4

rs+

Dosyayı okumak ve yazmak için açın, işletim sisteminden eşzamanlı olarak açmasını isteyin. Bunu dikkatli kullanmakla ilgili 'rs' notlarına bakın.

5

w

Dosyayı yazmak için açın. Dosya oluşturulur (yoksa) veya kesilir (varsa).

6

wx

'W' gibi ancak yol varsa başarısız olur.

7

w+

Dosyayı okumak ve yazmak için açın. Dosya oluşturulur (yoksa) veya kesilir (varsa).

8

wx+

'W +' gibi ancak yol varsa başarısız olur.

9

a

Eklemek için dosyayı açın. Dosya yoksa oluşturulur.

10

ax

'A' gibi, ancak yol varsa başarısız olur.

11

a+

Dosyayı okumak ve eklemek için açın. Dosya yoksa oluşturulur.

12

ax+

'A +' gibi ancak yol varsa başarısız olur.

Misal

Adlı bir js dosyası oluşturalım main.js okumak ve yazmak için input.txt dosyasını açmak için aşağıdaki koda sahip olmak.

var fs = require("fs");

// Asynchronous - Opening File
console.log("Going to open file!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");     
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to open file!
File opened successfully!

Dosya Bilgilerini Alın

Sözdizimi

Bir dosya hakkında bilgi almak için kullanılan yöntemin sözdizimi aşağıdadır -

fs.stat(path, callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • path - Bu, yol dahil dosya adına sahip dizedir.

  • callback - Bu, iki bağımsız değişken (hata, istatistikler) alan geri arama işlevidir; stats aşağıdaki örnekte basılmış olan fs.Stats türünde bir nesnedir.

Aşağıdaki örnekte basılan önemli özelliklerin yanı sıra, aşağıdaki uygulamada kullanılabilen birkaç yararlı yöntem vardır. fs.Statsdosya türünü kontrol etmek için kullanılabilecek sınıf. Bu yöntemler aşağıdaki tabloda verilmiştir.

Sr.No. Yöntem ve Açıklama
1

stats.isFile()

Dosya türü basit bir dosya ise doğru döndürür.

2

stats.isDirectory()

Bir dizinin dosya türü ise doğru döndürür.

3

stats.isBlockDevice()

Bir blok cihazının dosya türü ise doğru döndürür.

4

stats.isCharacterDevice()

Bir karakter aygıtının dosya türü ise doğru döndürür.

5

stats.isSymbolicLink()

Dosya türü sembolik bir bağ ise doğru döndürür.

6

stats.isFIFO()

Dosya türü bir FIFO ise doğru döndürür.

7

stats.isSocket()

Dosya türü asocket ise true döndürür.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki kod ile -

var fs = require("fs");

console.log("Going to get file info!");
fs.stat('input.txt', function (err, stats) {
   if (err) {
      return console.error(err);
   }
   console.log(stats);
   console.log("Got file info successfully!");
   
   // Check file type
   console.log("isFile ? " + stats.isFile());
   console.log("isDirectory ? " + stats.isDirectory());    
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to get file info!
{ 
   dev: 1792,
   mode: 33188,
   nlink: 1,
   uid: 48,
   gid: 48,
   rdev: 0,
   blksize: 4096,
   ino: 4318127,
   size: 97,
   blocks: 8,
   atime: Sun Mar 22 2015 13:40:00 GMT-0500 (CDT),
   mtime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT),
   ctime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT) 
}
Got file info successfully!
isFile ? true
isDirectory ? false

Dosya Yazma

Sözdizimi

Bir dosyaya yazma yöntemlerinden birinin sözdizimi aşağıdadır -

fs.writeFile(filename, data[, options], callback)

Dosya zaten mevcutsa, bu yöntem dosyanın üzerine yazacaktır. Mevcut bir dosyaya yazmak istiyorsanız, mevcut başka bir yöntemi kullanmalısınız.

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • path - Bu, yol dahil dosya adına sahip dizedir.

  • data - Bu, dosyaya yazılacak String veya Buffer'dır.

  • options- Üçüncü parametre, {kodlama, mod, bayrak} tutacak bir nesnedir. Varsayılan olarak. kodlama utf8, mod sekizlik değer 0666 ve bayrak "w"

  • callback - Bu, herhangi bir yazma hatası durumunda bir hata döndüren tek bir parametre hatası alan geri çağırma işlevidir.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki koda sahip olmak -

var fs = require("fs");

console.log("Going to write into existing file");
fs.writeFile('input.txt', 'Simply Easy Learning!', function(err) {
   if (err) {
      return console.error(err);
   }
   
   console.log("Data written successfully!");
   console.log("Let's read newly written data");
   
   fs.readFile('input.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("Asynchronous read: " + data.toString());
   });
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to write into existing file
Data written successfully!
Let's read newly written data
Asynchronous read: Simply Easy Learning!

Bir Dosyayı Okumak

Sözdizimi

Bir dosyadan okuma yöntemlerinden birinin sözdizimi aşağıdadır -

fs.read(fd, buffer, offset, length, position, callback)

Bu yöntem, dosyayı okumak için dosya tanımlayıcısını kullanır. Dosyayı doğrudan dosya adını kullanarak okumak istiyorsanız, mevcut başka bir yöntemi kullanmalısınız.

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • fd - Bu, fs.open () tarafından döndürülen dosya tanımlayıcısıdır.

  • buffer - Bu, verilerin yazılacağı arabellektir.

  • offset - Bu, yazmaya başlamak için arabellekteki ofsettir.

  • length - Bu, okunacak bayt sayısını belirten bir tamsayıdır.

  • position- Bu, dosyada okumaya nereden başlayacağınızı belirten bir tam sayıdır. Konum boşsa, veriler geçerli dosya konumundan okunur.

  • callback - Bu, üç bağımsız değişkeni (err, bytesRead, buffer) alan geri çağırma işlevidir.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki kod ile -

var fs = require("fs");
var buf = new Buffer(1024);

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");
   console.log("Going to read the file");
   
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + " bytes read");
      
      // Print only read bytes to avoid junk.
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to open an existing file
File opened successfully!
Going to read the file
97 bytes read
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Bir Dosyayı Kapatmak

Sözdizimi

Açık bir dosyayı kapatmak için sözdizimi aşağıdadır -

fs.close(fd, callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • fd - Bu dosya fs.open () yöntemiyle döndürülen dosya tanımlayıcısıdır.

  • callback - Bu geri arama işlevidir Tamamlama geri aramasına olası bir istisna dışında hiçbir bağımsız değişken verilmez.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki koda sahip olmak -

var fs = require("fs");
var buf = new Buffer(1024);

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");
   console.log("Going to read the file");
   
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {
      if (err) {
         console.log(err);
      }

      // Print only read bytes to avoid junk.
      if(bytes > 0) {
         console.log(buf.slice(0, bytes).toString());
      }

      // Close the opened file.
      fs.close(fd, function(err) {
         if (err) {
            console.log(err);
         } 
         console.log("File closed successfully.");
      });
   });
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to open an existing file
File opened successfully!
Going to read the file
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

File closed successfully.

Bir Dosyayı Kes

Sözdizimi

Aşağıda, açılmış bir dosyayı kesme yönteminin sözdizimi verilmiştir -

fs.ftruncate(fd, len, callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • fd - Bu, fs.open () tarafından döndürülen dosya tanımlayıcısıdır.

  • len - Bu, dosyanın kısaltılacağı dosyanın uzunluğudur.

  • callback - Bu geri arama işlevidir Tamamlama geri aramasına olası bir istisna dışında hiçbir bağımsız değişken verilmez.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki koda sahip olmak -

var fs = require("fs");
var buf = new Buffer(1024);

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
      return console.error(err);
   }
   console.log("File opened successfully!");
   console.log("Going to truncate the file after 10 bytes");
   
   // Truncate the opened file.
   fs.ftruncate(fd, 10, function(err) {
      if (err) {
         console.log(err);
      } 
      console.log("File truncated successfully.");
      console.log("Going to read the same file"); 
      
      fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
         if (err) {
            console.log(err);
         }

         // Print only read bytes to avoid junk.
         if(bytes > 0) {
            console.log(buf.slice(0, bytes).toString());
         }

         // Close the opened file.
         fs.close(fd, function(err) {
            if (err) {
               console.log(err);
            } 
            console.log("File closed successfully.");
         });
      });
   });
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to open an existing file
File opened successfully!
Going to truncate the file after 10 bytes
File truncated successfully.
Going to read the same file
Tutorials 
File closed successfully.

Bir Dosyayı Silme

Sözdizimi

Bir dosyayı silme yönteminin sözdizimi aşağıdadır -

fs.unlink(path, callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • path - Bu, yol dahil dosya adıdır.

  • callback - Bu geri arama işlevidir Tamamlama geri aramasına olası bir istisna dışında hiçbir bağımsız değişken verilmez.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki koda sahip olmak -

var fs = require("fs");

console.log("Going to delete an existing file");
fs.unlink('input.txt', function(err) {
   if (err) {
      return console.error(err);
   }
   console.log("File deleted successfully!");
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to delete an existing file
File deleted successfully!

Bir Dizin Oluşturun

Sözdizimi

Aşağıda bir dizin oluşturma yönteminin sözdizimi verilmiştir -

fs.mkdir(path[, mode], callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • path - Bu, yol dahil dizin adıdır.

  • mode- Bu, ayarlanacak dizin iznidir. Varsayılan 0777'dir.

  • callback - Bu geri arama işlevidir Tamamlama geri aramasına olası bir istisna dışında hiçbir bağımsız değişken verilmez.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki koda sahip olmak -

var fs = require("fs");

console.log("Going to create directory /tmp/test");
fs.mkdir('/tmp/test',function(err) {
   if (err) {
      return console.error(err);
   }
   console.log("Directory created successfully!");
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to create directory /tmp/test
Directory created successfully!

Bir Dizini Okuyun

Sözdizimi

Bir dizini okuma yönteminin sözdizimi aşağıdadır -

fs.readdir(path, callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • path - Bu, yol dahil dizin adıdır.

  • callback- Bu, dosyaların '.' Hariç dizindeki dosyaların adlarının bir dizisi olduğu iki argüman (hata, dosyalar) alan geri çağırma işlevidir. ve '..'.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki koda sahip olmak -

var fs = require("fs");

console.log("Going to read directory /tmp");
fs.readdir("/tmp/",function(err, files) {
   if (err) {
      return console.error(err);
   }
   files.forEach( function (file) {
      console.log( file );
   });
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test
test.txt

Bir Dizini Kaldır

Sözdizimi

Aşağıda, bir dizini kaldırma yönteminin sözdizimi verilmiştir -

fs.rmdir(path, callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • path - Bu, yol dahil dizin adıdır.

  • callback - Bu geri arama işlevidir Tamamlama geri aramasına olası bir istisna dışında hiçbir bağımsız değişken verilmez.

Misal

Adlı bir js dosyası oluşturalım main.js aşağıdaki koda sahip olmak -

var fs = require("fs");

console.log("Going to delete directory /tmp/test");
fs.rmdir("/tmp/test",function(err) {
   if (err) {
      return console.error(err);
   }
   console.log("Going to read directory /tmp");
   
   fs.readdir("/tmp/",function(err, files) {
      if (err) {
         return console.error(err);
      }
      files.forEach( function (file) {
         console.log( file );
      });
   });
});

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıkışı doğrulayın.

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test.txt

Yöntem Referansı

Sr.No Yöntem ve Açıklama
1

fs.rename(oldPath, newPath, callback)

Eşzamansız yeniden adlandırma (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

2

fs.ftruncate(fd, len, callback)

Eşzamansız ftruncate (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

3

fs.ftruncateSync(fd, len)

Eşzamanlı ftruncate ().

4

fs.truncate(path, len, callback)

Eşzamansız kesme (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

5

fs.truncateSync(path, len)

Eşzamanlı kesme ().

6

fs.chown(path, uid, gid, callback)

Eşzamansız chown (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

7

fs.chownSync(path, uid, gid)

Eşzamanlı chown ().

8

fs.fchown(fd, uid, gid, callback)

Eşzamansız fchown (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

9

fs.fchownSync(fd, uid, gid)

Eşzamanlı fchown ().

10

fs.lchown(path, uid, gid, callback)

Eşzamansız lchown (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

11

fs.lchownSync(path, uid, gid)

Eşzamanlı lchown ().

12

fs.chmod(path, mode, callback)

Eşzamansız chmod (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

13

fs.chmodSync(path, mode)

Eşzamanlı chmod ().

14

fs.fchmod(fd, mode, callback)

Eşzamansız fchmod (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

15

fs.fchmodSync(fd, mode)

Eşzamanlı fchmod ().

16

fs.lchmod(path, mode, callback)

Eşzamansız lchmod (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez. Yalnızca Mac OS X'te mevcuttur.

17

fs.lchmodSync(path, mode)

Eşzamanlı lchmod ().

18

fs.stat(path, callback)

Eşzamansız stat (). Geri çağırma, istatistiklerin bir fs.Stats nesnesi olduğu iki argüman (hata, istatistik) alır.

19

fs.lstat(path, callback)

Eşzamansız lstat (). Geri çağırma, istatistiklerin bir fs.Stats nesnesi olduğu iki argüman (hata, istatistik) alır. lstat (), stat () ile özdeştir, tek fark, eğer yol sembolik bir bağ ise, o zaman bağın başvurduğu dosya değil, stat-edlenir.

20

fs.fstat(fd, callback)

Eşzamansız fstat (). Geri çağırma, istatistiklerin bir fs.Stats nesnesi olduğu iki argüman (hata, istatistik) alır. fstat (), stat () ile aynıdır, tek fark stat-edlenecek dosyanın fd dosya tanımlayıcısı tarafından belirtilmesidir.

21

fs.statSync(path)

Eşzamanlı stat (). Fs.Stats örneğini döndürür.

22

fs.lstatSync(path)

Eşzamanlı lstat (). Fs.Stats örneğini döndürür.

23

fs.fstatSync(fd)

Eşzamanlı fstat (). Fs.Stats örneğini döndürür.

24

fs.link(srcpath, dstpath, callback)

Eşzamansız bağlantı (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

25

fs.linkSync(srcpath, dstpath)

Eşzamanlı bağlantı ().

26

fs.symlink(srcpath, dstpath[, type], callback)

Eşzamansız sembolik link (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez. Tür bağımsız değişkeni 'dir', 'dosya' veya 'bağlantı' (varsayılan 'dosya') olarak ayarlanabilir ve yalnızca Windows'ta kullanılabilir (diğer platformlarda yok sayılır). Windows bağlantı noktalarının hedef yolun mutlak olmasını gerektirdiğini unutmayın. 'Junction' kullanırken, hedef bağımsız değişkeni otomatik olarak mutlak yola normalleştirilecektir.

27

fs.symlinkSync(srcpath, dstpath[, type])

Eşzamanlı sembolik bağlantı ().

28

fs.readlink(path, callback)

Eşzamansız okuma bağlantısı (). Geri çağırma iki argüman alır (err, linkString).

29

fs.realpath(path[, cache], callback)

Eşzamansız gerçek yol (). Geri çağırma iki argüman alır (err, resolvedPath). Göreli yolları çözümlemek için process.cwd'yi kullanabilir. önbellek, belirli bir yol çözümlemesini zorlamak veya bilinen gerçek yollar için ek fs.stat çağrılarından kaçınmak için kullanılabilen eşlenmiş yollardan oluşan bir nesnedir.

30

fs.realpathSync(path[, cache])

Eşzamanlı gerçek yol (). Çözümlenmiş yolu döndürür.

31

fs.unlink(path, callback)

Eşzamansız bağlantı kaldırma (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

32

fs.unlinkSync(path)

Eşzamanlı bağlantı kaldırma ().

33

fs.rmdir(path, callback)

Eşzamansız rmdir (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

34

fs.rmdirSync(path)

Eşzamanlı rmdir ().

35

fs.mkdir(path[, mode], callback)

Eşzamansız mkdir (2). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez. mod varsayılan olarak 0777'dir.

36

fs.mkdirSync(path[, mode])

Eşzamanlı mkdir ().

37

fs.readdir(path, callback)

Eşzamansız readdir (3). Bir dizinin içeriğini okur. Geri çağırma iki argüman (hata, dosyalar) alır; burada dosyalar, dizindeki '.' Hariç dosyaların adlarının bir dizisidir. ve '..'.

38

fs.readdirSync(path)

Eşzamanlı readdir (). '.' Dışında bir dosya adı dizisi döndürür. ve '..'.

39

fs.close(fd, callback)

Eşzamansız yakın (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

40

fs.closeSync(fd)

Eşzamanlı yakın ().

41

fs.open(path, flags[, mode], callback)

Eşzamansız dosya açık.

42

fs.openSync(path, flags[, mode])

Fs.open () eşzamanlı sürümü.

43

fs.utimes(path, atime, mtime, callback)

 

44

fs.utimesSync(path, atime, mtime)

Verilen yol tarafından başvurulan dosyanın dosya zaman damgalarını değiştirin.

45

fs.futimes(fd, atime, mtime, callback)

 

46

fs.futimesSync(fd, atime, mtime)

Sağlanan dosya tanımlayıcı tarafından referans verilen bir dosyanın dosya zaman damgalarını değiştirin.

47

fs.fsync(fd, callback)

Eşzamansız fsync. Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez.

48

fs.fsyncSync(fd)

Senkronize fsync.

49

fs.write(fd, buffer, offset, length[, position], callback)

Fd ile belirtilen dosyaya tampon yaz.

50

fs.write(fd, data[, position[, encoding]], callback)

Verileri fd ile belirtilen dosyaya yazın. Veriler Buffer örneği değilse, değer bir dizeye zorlanacaktır.

51

fs.writeSync(fd, buffer, offset, length[, position])

Fs.write () öğesinin zaman uyumlu sürümleri. Yazılan bayt sayısını döndürür.

52

fs.writeSync(fd, data[, position[, encoding]])

Fs.write () öğesinin zaman uyumlu sürümleri. Yazılan bayt sayısını döndürür.

53

fs.read(fd, buffer, offset, length, position, callback)

Fd ile belirtilen dosyadan verileri okuyun.

54

fs.readSync(fd, buffer, offset, length, position)

Fs.read dosyasının eşzamanlı sürümü. Bayt sayısını döndürür

55

fs.readFile(filename[, options], callback)

Bir dosyanın tüm içeriğini eşzamansız olarak okur.

56

fs.readFileSync(filename[, options])

Fs.readFile'ın zaman uyumlu sürümü. Dosya adının içeriğini döndürür.

57

fs.writeFile(filename, data[, options], callback)

Eşzamansız olarak verileri bir dosyaya yazar ve zaten varsa dosyayı değiştirir. veri bir dizge veya tampon olabilir.

58

fs.writeFileSync(filename, data[, options])

Fs.writeFile'ın zaman uyumlu sürümü.

59

fs.appendFile(filename, data[, options], callback)

Bir dosyaya zaman uyumsuz olarak veri ekleyin, yoksa dosyayı oluşturun. veri bir dizge veya tampon olabilir.

60

fs.appendFileSync(filename, data[, options])

Fs.appendFile'ın zaman uyumlu sürümü.

61

fs.watchFile(filename[, options], listener)

Dosya adındaki değişiklikleri izleyin. Geri arama dinleyicisi, dosyaya her erişildiğinde aranacaktır.

62

fs.unwatchFile(filename[, listener])

Dosya adındaki değişiklikleri izlemeyi bırakın. Dinleyici belirtilirse, yalnızca o belirli dinleyici kaldırılır. Aksi takdirde, tüm dinleyiciler kaldırılır ve dosya adını izlemeyi etkin bir şekilde durdurmuş olursunuz.

63

fs.watch(filename[, options][, listener])

Dosya adının bir dosya veya dizin olduğu dosya adındaki değişiklikleri izleyin. Döndürülen nesne bir fs.FSWatcher'dır.

64

fs.exists(path, callback)

Dosya sistemi ile kontrol ederek verilen yolun var olup olmadığını test edin. Ardından geri arama bağımsız değişkenini doğru veya yanlış olarak çağırın.

65

fs.existsSync(path)

Fs.'nin senkronize versiyonu mevcuttur.

66

fs.access(path[, mode], callback)

Yol ile belirtilen dosya için bir kullanıcının izinlerini test eder. mod, gerçekleştirilecek erişilebilirlik kontrollerini belirten isteğe bağlı bir tamsayıdır.

67

fs.accessSync(path[, mode])

Fs.access'in eşzamanlı sürümü. Herhangi bir erişilebilirlik denetimi başarısız olursa atar ve başka türlü bir şey yapmaz.

68

fs.createReadStream(path[, options])

Yeni bir ReadStream nesnesi döndürür.

69

fs.createWriteStream(path[, options])

Yeni bir WriteStream nesnesi döndürür.

70

fs.symlink(srcpath, dstpath[, type], callback)

Eşzamansız sembolik link (). Tamamlama geri aramasına olası bir istisna dışında hiçbir argüman verilmez. Tür bağımsız değişkeni 'dir', 'dosya' veya 'bağlantı' (varsayılan 'dosya') olarak ayarlanabilir ve yalnızca Windows'ta kullanılabilir (diğer platformlarda yok sayılır). Windows bağlantı noktalarının hedef yolun mutlak olmasını gerektirdiğini unutmayın. 'Junction' kullanırken, hedef bağımsız değişkeni otomatik olarak mutlak yola normalleştirilecektir.

Node.js global nesneleri doğası gereği globaldir ve tüm modüllerde mevcuttur. Bu nesneleri uygulamamıza dahil etmemize gerek yoktur, bunun yerine onları doğrudan kullanabiliriz. Bu nesneler modüller, işlevler, dizeler ve aşağıda açıklandığı gibi nesnenin kendisidir.

__dosya adı

__filenameçalıştırılan kodun dosya adını temsil eder. Bu, bu kod dosyasının çözümlenmiş mutlak yoludur. Bir ana program için bu, komut satırında kullanılan dosya adıyla aynı olmayabilir. Bir modül içindeki değer, o modül dosyasına giden yoldur.

Misal

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

// Let's try to print the value of __filename

console.log( __filename );

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Programınızın konumuna bağlı olarak, ana dosya adını aşağıdaki gibi yazdıracaktır -

/web/com/1427091028_21099/main.js

__dirname

__dirname şu anda çalıştırılan komut dosyasının bulunduğu dizinin adını temsil eder.

Misal

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

// Let's try to print the value of __dirname

console.log( __dirname );

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Programınızın konumuna bağlı olarak, mevcut dizin adını aşağıdaki gibi yazdıracaktır -

/web/com/1427091028_21099

setTimeout (cb, ms)

setTimeout(cb, ms)global işlev, en az ms milisaniyeden sonra geri arama cb'yi çalıştırmak için kullanılır. Gerçek gecikme, işletim sistemi zamanlayıcı ayrıntı düzeyi ve sistem yükü gibi harici faktörlere bağlıdır. Bir zamanlayıcı 24,8 günden fazla olamaz.

Bu işlev, zamanlayıcıyı temizlemek için kullanılabilecek zamanlayıcıyı temsil eden opak bir değer döndürür.

Misal

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

function printHello() {
   console.log( "Hello, World!");
}

// Now call above function after 2 seconds
setTimeout(printHello, 2000);

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Çıktının biraz gecikmeden sonra yazdırıldığını doğrulayın.

Hello, World!

clearTimeout (t)

clearTimeout(t)global işlev, önceden setTimeout () ile oluşturulmuş bir zamanlayıcıyı durdurmak için kullanılır. Burayat setTimeout () işlevi tarafından döndürülen zamanlayıcıdır.

Misal

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

function printHello() {
   console.log( "Hello, World!");
}

// Now call above function after 2 seconds
var t = setTimeout(printHello, 2000);

// Now clear the timer
clearTimeout(t);

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Yazdırılmış hiçbir şey bulamayacağınız çıktıyı doğrulayın.

setInterval (cb, ms)

setInterval(cb, ms)global işlev, en az ms milisaniyeden sonra cb'yi tekrar tekrar çalıştırmak için kullanılır. Gerçek gecikme, işletim sistemi zamanlayıcı ayrıntı düzeyi ve sistem yükü gibi harici faktörlere bağlıdır. Bir zamanlayıcı 24,8 günden fazla olamaz.

Bu işlev, işlevi kullanarak zamanlayıcıyı temizlemek için kullanılabilecek zamanlayıcıyı temsil eden opak bir değer döndürür. clearInterval(t).

Misal

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

function printHello() {
   console.log( "Hello, World!");
}

// Now call above function after 2 seconds
setInterval(printHello, 2000);

Şimdi sonucu görmek için main.js'yi çalıştırın -

$ node main.js

Yukarıdaki program her 2 saniyede bir printHello () çalıştıracaktır. Sistem sınırlaması nedeniyle.

Global Nesneler

Aşağıdaki tablo, uygulamalarımızda sıklıkla kullandığımız diğer nesnelerin bir listesini sunmaktadır. Daha fazla ayrıntı için resmi belgelere bakabilirsiniz.

Sr.No. Modül Adı ve Açıklaması
1 Console

Stdout ve stderr hakkında bilgi yazdırmak için kullanılır.

2 Process

Mevcut süreç hakkında bilgi almak için kullanılır. Proses etkinlikleriyle ilgili birden çok olay sağlar.

Node.js modül kitaplığında kullanılabilen birkaç yardımcı program modülü vardır. Bu modüller çok yaygındır ve herhangi bir Düğüm tabanlı uygulama geliştirilirken sıklıkla kullanılır.

Sr.No. Modül Adı ve Açıklaması
1 OS Modülü

İşletim sistemiyle ilgili temel yardımcı program işlevlerini sağlar.

2 Yol Modülü

Dosya yollarının işlenmesi ve dönüştürülmesi için yardımcı programlar sağlar.

3 Net Modülü

Hem sunucuları hem de istemcileri akış olarak sağlar. Ağ sarmalayıcı görevi görür.

4 DNS Modülü

Gerçek DNS araması yapmak için işlevlerin yanı sıra temeldeki işletim sistemi adı çözümleme işlevlerini kullanma işlevleri sağlar.

5 Etki Alanı Modülü

Birden çok farklı G / Ç işlemini tek bir grup olarak yönetmenin yollarını sağlar.

İnternet sunucusu nedir?

Web Sunucusu, HTTP istemcisi tarafından web tarayıcıları gibi gönderilen HTTP isteklerini işleyen ve istemcilere yanıt olarak web sayfaları döndüren bir yazılım uygulamasıdır. Web sunucuları genellikle html belgelerini görüntüler, stil sayfaları ve komut dosyalarıyla birlikte sunar.

Web sunucularının çoğu, komut dosyası dillerini kullanarak veya görevi bir veritabanından veri alan ve karmaşık mantığı gerçekleştiren ve ardından Web sunucusu aracılığıyla HTTP istemcisine bir sonuç gönderen bir uygulama sunucusuna yeniden yönlendirerek sunucu tarafı komut dosyalarını destekler.

Apache web sunucusu, en yaygın kullanılan web sunucularından biridir. Açık kaynak kodlu bir projedir.

Web Uygulama Mimarisi

Bir Web uygulaması genellikle dört katmana ayrılır -

  • Client - Bu katman web tarayıcıları, mobil tarayıcılar veya web sunucusuna HTTP isteklerinde bulunabilen uygulamalardan oluşur.

  • Server - Bu katman, istemciler tarafından yapılan talepleri kesip onlara yanıtı iletebilen Web sunucusuna sahiptir.

  • Business- Bu katman, gerekli işlemi yapmak için web sunucusu tarafından kullanılan uygulama sunucusunu içerir. Bu katman, veritabanı veya bazı harici programlar aracılığıyla veri katmanıyla etkileşime girer.

  • Data - Bu katman, veritabanlarını veya diğer herhangi bir veri kaynağını içerir.

Düğüm kullanarak Web Sunucusu Oluşturma

Node.js bir httpbir sunucunun HTTP istemcisini oluşturmak için kullanılabilen modül. Aşağıda, 8081 bağlantı noktasında dinleyen HTTP sunucusunun çıplak minimum yapısı verilmiştir.

Server.js adında bir js dosyası oluşturun -

File: server.js

var http = require('http');
var fs = require('fs');
var url = require('url');

// Create a server
http.createServer( function (request, response) {  
   // Parse the request containing file name
   var pathname = url.parse(request.url).pathname;
   
   // Print the name of the file for which request is made.
   console.log("Request for " + pathname + " received.");
   
   // Read the requested file content from file system
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         
         // HTTP Status: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
      } else {	
         //Page found	  
         // HTTP Status: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});	
         
         // Write the content of the file to response body
         response.write(data.toString());		
      }
      
      // Send the response body 
      response.end();
   });   
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

Ardından, server.js'yi oluşturduğunuz dizinde index.htm adlı aşağıdaki html dosyasını oluşturalım.

File: index.htm

<html>
   <head>
      <title>Sample Page</title>
   </head>
   
   <body>
      Hello World!
   </body>
</html>

Şimdi sonucu görmek için server.js'yi çalıştıralım -

$ node server.js

Çıkışı doğrulayın.

Server running at http://127.0.0.1:8081/

Node.js sunucusuna istekte bulunun

Aşağıdaki sonucu görmek için herhangi bir tarayıcıda http://127.0.0.1:8081/index.htm adresini açın.

Çıktıyı sunucu tarafında doğrulayın.

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

Node kullanarak Web istemcisi oluşturma

Bir web istemcisi kullanılarak oluşturulabilir httpmodül. Aşağıdaki örneğe bakalım.

Client.js adlı bir js dosyası oluşturun -

File: client.js

var http = require('http');

// Options to be used by request 
var options = {
   host: 'localhost',
   port: '8081',
   path: '/index.htm'  
};

// Callback function is used to deal with response
var callback = function(response) {
   // Continuously update stream with data
   var body = '';
   response.on('data', function(data) {
      body += data;
   });
   
   response.on('end', function() {
      // Data received completely.
      console.log(body);
   });
}
// Make a request to the server
var req = http.request(options, callback);
req.end();

Şimdi sonucu görmek için client.js'yi server.js dışında farklı bir komut terminalinden çalıştırın -

$ node client.js

Çıkışı doğrulayın.

<html>
   <head>
      <title>Sample Page</title>
   </head>
   
   <body>
      Hello World!
   </body>
</html>

Çıktıyı sunucu tarafında doğrulayın.

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

Hızlı Genel Bakış

Express, web ve mobil uygulamaları geliştirmek için sağlam bir dizi özellik sağlayan minimal ve esnek bir Node.js web uygulaması çerçevesidir. Düğüm tabanlı Web uygulamalarının hızlı gelişimini kolaylaştırır. Aşağıda, Express çerçevesinin temel özelliklerinden bazıları verilmiştir -

  • HTTP İsteklerine yanıt vermek için ara yazılımların kurulmasına izin verir.

  • HTTP Yöntemi ve URL'ye göre farklı eylemler gerçekleştirmek için kullanılan bir yönlendirme tablosunu tanımlar.

  • Şablonlara argümanlar iletmeye dayalı olarak HTML Sayfalarını dinamik olarak oluşturmaya izin verir.

Express Yükleme

İlk olarak, NPM kullanarak Express çerçevesini global olarak kurun, böylece düğüm terminali kullanarak bir web uygulaması oluşturmak için kullanılabilir.

$ npm install express --save

Yukarıdaki komut, kurulumu yerel olarak node_modulesdizin ve node_modules içinde ifade edilen bir dizin oluşturur. Aşağıdaki önemli modülleri express ile birlikte yüklemelisiniz -

  • body-parser - Bu, JSON, Raw, Text ve URL kodlu form verilerini işlemek için bir node.js ara yazılımıdır.

  • cookie-parser - Tanımlama bilgisi başlığını ayrıştırın ve req.cookies'i tanımlama bilgisi adlarıyla anahtarlanmış bir nesneyle doldurun.

  • multer - Bu, çok parçalı / form verilerini işlemek için bir node.js ara yazılımıdır.

$ npm install body-parser --save
$ npm install cookie-parser --save $ npm install multer --save

Merhaba dünya Örneği

Aşağıda, bir sunucuyu başlatan ve bağlantı için 8081 numaralı bağlantı noktasını dinleyen çok basit bir Express uygulaması yer almaktadır. Bu uygulama şununla yanıt verir:Hello World!ana sayfaya yapılan istekler için. Diğer her yol için, bir404 Not Found.

var express = require('express');
var app = express();

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

Yukarıdaki kodu server.js adlı bir dosyaya kaydedin ve aşağıdaki komutla çalıştırın.

$ node server.js

Aşağıdaki çıktıyı göreceksiniz -

Example app listening at http://0.0.0.0:8081

Aşağıdaki sonucu görmek için herhangi bir tarayıcıda http://127.0.0.1:8081/ adresini açın.

Talep ve Yanıt

Hızlı uygulama, parametreleri olan bir geri arama işlevi kullanır. request ve response nesneler.

app.get('/', function (req, res) {
   // --
})
  • İstek Nesnesi - İstek nesnesi, HTTP isteğini temsil eder ve istek sorgu dizesi, parametreler, gövde, HTTP üst bilgileri vb. İçin özelliklere sahiptir.

  • Yanıt Nesnesi - Yanıt nesnesi , bir Express uygulamasının bir HTTP isteği aldığında gönderdiği HTTP yanıtını temsil eder.

Yazdırabilirsiniz req ve res Çerezler, oturumlar, URL vb. dahil olmak üzere HTTP isteği ve yanıtıyla ilgili birçok bilgi sağlayan nesneler.

Temel Yönlendirme

Ana sayfa için HTTP isteği sunan temel bir uygulama gördük. Yönlendirme, bir uygulamanın bir URI (veya yol) ve belirli bir HTTP istek yöntemi (GET, POST, vb.) Olan belirli bir uç noktaya bir istemci isteğine nasıl yanıt verdiğini belirlemeyi ifade eder.

Hello World programımızı daha fazla HTTP isteği türünü işleyecek şekilde genişleteceğiz.

var express = require('express');
var app = express();

// This responds with "Hello World" on the homepage
app.get('/', function (req, res) {
   console.log("Got a GET request for the homepage");
   res.send('Hello GET');
})

// This responds a POST request for the homepage
app.post('/', function (req, res) {
   console.log("Got a POST request for the homepage");
   res.send('Hello POST');
})

// This responds a DELETE request for the /del_user page.
app.delete('/del_user', function (req, res) {
   console.log("Got a DELETE request for /del_user");
   res.send('Hello DELETE');
})

// This responds a GET request for the /list_user page.
app.get('/list_user', function (req, res) {
   console.log("Got a GET request for /list_user");
   res.send('Page Listing');
})

// This responds a GET request for abcd, abxcd, ab123cd, and so on
app.get('/ab*cd', function(req, res) {   
   console.log("Got a GET request for /ab*cd");
   res.send('Page Pattern Match');
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

Yukarıdaki kodu server.js adlı bir dosyaya kaydedin ve aşağıdaki komutla çalıştırın.

$ node server.js

Aşağıdaki çıktıyı göreceksiniz -

Example app listening at http://0.0.0.0:8081

Artık server.js tarafından oluşturulan çıktıyı görmek için http://127.0.0.1:8081 adresinde farklı istekleri deneyebilirsiniz. Aşağıda, farklı URL'ler için farklı yanıtları gösteren birkaç ekran görüntüsü verilmiştir.

Tekrar gösteren ekran http://127.0.0.1:8081/list_user

Tekrar gösteren ekran http://127.0.0.1:8081/abcd

Tekrar gösteren ekran http://127.0.0.1:8081/abcdefg

Statik Dosyaları Sunma

Express, yerleşik bir ara yazılım sağlar express.static resimler, CSS, JavaScript vb. gibi statik dosyalar sunmak için

Statik varlıklarınızı sakladığınız dizinin adını express.staticdosyaları doğrudan sunmaya başlamak için ara yazılım. Örneğin, resimlerinizi, CSS ve JavaScript dosyalarınızı public adlı bir dizinde tutarsanız, bunu yapabilirsiniz -

app.use(express.static('public'));

Birkaç resim saklayacağız public/images alt dizin aşağıdaki gibidir -

node_modules
server.js
public/
public/images
public/images/logo.png

Statik dosyaları işleme işlevselliği eklemek için "Merhaba Word" uygulamasını değiştirelim.

var express = require('express');
var app = express();

app.use(express.static('public'));

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port)
})

Yukarıdaki kodu server.js adlı bir dosyaya kaydedin ve aşağıdaki komutla çalıştırın.

$ node server.js

Şimdi herhangi bir tarayıcıda http://127.0.0.1:8081/images/logo.png açın ve aşağıdaki sonucu gözlemleyin.

GET Yöntemi

HTML FORM GET yöntemini kullanarak iki değeri geçiren basit bir örnek. Kullanacağızprocess_get Bu girişi işlemek için server.js içindeki yönlendirici.

<html>
   <body>
      
      <form action = "http://127.0.0.1:8081/process_get" method = "GET">
         First Name: <input type = "text" name = "first_name">  <br>
         Last Name: <input type = "text" name = "last_name">
         <input type = "submit" value = "Submit">
      </form>
      
   </body>
</html>

Yukarıdaki kodu index.htm'ye kaydedelim ve server.js'yi ana sayfa isteklerini ve HTML formu tarafından gönderilen girdileri işleyecek şekilde değiştirelim.

var express = require('express');
var app = express();

app.use(express.static('public'));
app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.get('/process_get', function (req, res) {
   // Prepare output in JSON format
   response = {
      first_name:req.query.first_name,
      last_name:req.query.last_name
   };
   console.log(response);
   res.end(JSON.stringify(response));
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

HTML belgesine http://127.0.0.1:8081/index.htm kullanarak erişmek aşağıdaki formu oluşturacaktır -

Şimdi Adı ve Soyadını girebilir ve ardından sonucu görmek için gönder düğmesine tıklayabilirsiniz ve aşağıdaki sonucu döndürmelidir -

{"first_name":"John","last_name":"Paul"}

POST Yöntemi

HTML FORM POST yöntemini kullanarak iki değer ileten basit bir örnek. Kullanacağızprocess_get Bu girişi işlemek için server.js içindeki yönlendirici.

<html>
   <body>
      
      <form action = "http://127.0.0.1:8081/process_post" method = "POST">
         First Name: <input type = "text" name = "first_name"> <br>
         Last Name: <input type = "text" name = "last_name">
         <input type = "submit" value = "Submit">
      </form>
      
   </body>
</html>

Yukarıdaki kodu index.htm'ye kaydedelim ve server.js'yi ana sayfa isteklerini ve HTML formu tarafından gönderilen girdileri işleyecek şekilde değiştirelim.

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(express.static('public'));
app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.post('/process_post', urlencodedParser, function (req, res) {
   // Prepare output in JSON format
   response = {
      first_name:req.body.first_name,
      last_name:req.body.last_name
   };
   console.log(response);
   res.end(JSON.stringify(response));
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

HTML belgesine http://127.0.0.1:8081/index.htm kullanarak erişmek aşağıdaki formu oluşturacaktır -

Şimdi Adını ve Soyadını girebilir ve ardından aşağıdaki sonucu görmek için gönder düğmesine tıklayabilirsiniz -

{"first_name":"John","last_name":"Paul"}

Dosya yükleme

Aşağıdaki HTML kodu bir dosya yükleyici formu oluşturur. Bu formun yöntem özniteliği şu şekilde ayarlanmış:POST ve enctype özniteliği şu şekilde ayarlanmıştır: multipart/form-data

<html>
   <head>
      <title>File Uploading Form</title>
   </head>

   <body>
      <h3>File Upload:</h3>
      Select a file to upload: <br />
      
      <form action = "http://127.0.0.1:8081/file_upload" method = "POST" 
         enctype = "multipart/form-data">
         <input type="file" name="file" size="50" />
         <br />
         <input type = "submit" value = "Upload File" />
      </form>
      
   </body>
</html>

Yukarıdaki kodu index.htm'ye kaydedelim ve server.js'yi ana sayfa isteklerini ve dosya yüklemesini işleyecek şekilde değiştirelim.

var express = require('express');
var app = express();
var fs = require("fs");

var bodyParser = require('body-parser');
var multer  = require('multer');

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/'}));

app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.post('/file_upload', function (req, res) {
   console.log(req.files.file.name);
   console.log(req.files.file.path);
   console.log(req.files.file.type);
   var file = __dirname + "/" + req.files.file.name;
   
   fs.readFile( req.files.file.path, function (err, data) {
      fs.writeFile(file, data, function (err) {
         if( err ) {
            console.log( err );
            } else {
               response = {
                  message:'File uploaded successfully',
                  filename:req.files.file.name
               };
            }
         
         console.log( response );
         res.end( JSON.stringify( response ) );
      });
   });
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

HTML belgesine http://127.0.0.1:8081/index.htm kullanarak erişmek aşağıdaki formu oluşturacaktır -

File Upload:
Select a file to upload: 

NOTE: This is just dummy form and would not work, but it must work at your server.

Çerez Yönetimi

Çerezleri, aşağıdaki ara yazılım seçeneğini kullanarak aynısını işleyebilen bir Node.js sunucusuna gönderebilirsiniz. Aşağıda, müşteri tarafından gönderilen tüm çerezleri yazdırmak için basit bir örnek verilmiştir.

var express      = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser())

app.get('/', function(req, res) {
   console.log("Cookies: ", req.cookies)
})
app.listen(8081)

REST mimarisi nedir?

REST, Temsili Durum Transferi anlamına gelir. REST, web standartları tabanlı bir mimaridir ve HTTP Protokolünü kullanır. Her bileşenin bir kaynak olduğu ve bir kaynağa HTTP standart yöntemleri kullanılarak ortak bir arayüzle erişildiği bir kaynak etrafında döner. REST, ilk olarak 2000 yılında Roy Fielding tarafından tanıtıldı.

Bir REST Sunucusu, kaynaklara ve REST istemcisine erişim sağlar ve HTTP protokolünü kullanarak kaynakları değiştirir. Burada her kaynak URI'ler / global ID'ler ile tanımlanır. REST, metin, JSON, XML gibi bir kaynağı temsil etmek için çeşitli temsiller kullanır, ancak JSON en popüler olanıdır.

HTTP yöntemleri

Aşağıdaki dört HTTP yöntemi, REST tabanlı mimaride yaygın olarak kullanılmaktadır.

  • GET - Bu, bir kaynağa salt okunur erişim sağlamak için kullanılır.

  • PUT - Bu, yeni bir kaynak oluşturmak için kullanılır.

  • DELETE - Bu, bir kaynağı kaldırmak için kullanılır.

  • POST - Bu, mevcut bir kaynağı güncellemek veya yeni bir kaynak oluşturmak için kullanılır.

RESTful Web Hizmetleri

Bir web hizmeti, uygulamalar veya sistemler arasında veri alışverişi için kullanılan açık protokoller ve standartların bir koleksiyonudur. Çeşitli programlama dillerinde yazılan ve çeşitli platformlarda çalışan yazılım uygulamaları, tek bir bilgisayarda süreçler arası iletişime benzer bir şekilde İnternet gibi bilgisayar ağları üzerinden veri alışverişi yapmak için web hizmetlerini kullanabilir. Bu birlikte çalışabilirlik (örneğin, Java ve Python arasındaki iletişim veya Windows ve Linux uygulamaları) açık standartların kullanımından kaynaklanmaktadır.

REST Mimarisine dayalı web servisleri, RESTful web servisleri olarak bilinir. Bu web hizmetleri, REST mimarisi konseptini uygulamak için HTTP yöntemlerini kullanır. RESTful bir web hizmeti genellikle bir URI, Tekdüzen Kaynak Tanımlayıcı, JSON ve HTTP Yöntemleri kümesi gibi kaynak gösterimi sağlayan bir hizmeti tanımlar.

Bir Kitaplık İçin RESTful Oluşturma

Aşağıdaki kullanıcıların bir dosyada bulunduğu JSON tabanlı bir veritabanımız olduğunu düşünün users.json:

{
   "user1" : {
      "name" : "mahesh",
      "password" : "password1",
      "profession" : "teacher",
      "id": 1
   },
   
   "user2" : {
      "name" : "suresh",
      "password" : "password2",
      "profession" : "librarian",
      "id": 2
   },
   
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
}

Bu bilgilere dayanarak, aşağıdaki RESTful API'leri sağlayacağız.

Sr.No. URI HTTP Yöntemi POST gövdesi Sonuç
1 listUsers ALMAK boş Tüm kullanıcıların listesini göster.
2 Kullanıcı Ekle İLETİ JSON Dizesi Yeni kullanıcının ayrıntılarını ekleyin.
3 kullanıcıyı sil SİL JSON Dizesi Mevcut bir kullanıcıyı silin.
4 :İD ALMAK boş Bir kullanıcının ayrıntılarını gösterin.

Ajax veya basit form verilerini kullanarak ön uçtan değerleri nasıl geçireceğinizi ve bunları ifade kullanarak nasıl işleyeceğinizi zaten bildiğinizi varsayarak, tüm örneklerin çoğunu sabit kodlama biçiminde tutuyorum. Request nesne.

Kullanıcıları Listele

İlk RESTful API'mizi uygulayalım listUsers bir server.js dosyasında aşağıdaki kodu kullanarak -

server.js

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      console.log( data );
      res.end( data );
   });
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   console.log("Example app listening at http://%s:%s", host, port)
})

Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/listUsers ve HTTP Metodu: GET URL'sini kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -

Çözümü üretim ortamına koyacağınız zaman verilen IP adresini değiştirebilirsiniz.

{
   "user1" : {
      "name" : "mahesh",
      "password" : "password1",
      "profession" : "teacher",
      "id": 1
   },
   
   "user2" : {
      "name" : "suresh",
      "password" : "password2",
      "profession" : "librarian",
      "id": 2
   },
   
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
}

Kullanıcı Ekle

Aşağıdaki API, listeye nasıl yeni kullanıcı ekleyeceğinizi gösterecektir. Yeni kullanıcının detayı aşağıdadır -

user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

Aynı girdiyi Ajax çağrısını kullanarak JSON biçiminde kabul edebilirsiniz, ancak bakış açısını öğretmek için burada kodlanmış hale getiriyoruz. AşağıdakiaddUser Veritabanındaki yeni bir kullanıcıya API -

server.js

var express = require('express');
var app = express();
var fs = require("fs");

var user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

app.post('/addUser', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      data = JSON.parse( data );
      data["user4"] = user["user4"];
      console.log( data );
      res.end( JSON.stringify(data));
   });
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   console.log("Example app listening at http://%s:%s", host, port)
})

Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/addUser URL'sini ve HTTP Yöntemi: POST'u kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -

{
   "user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
   "user2":{"name":"suresh","password":"password2","profession":"librarian","id":2},
   "user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3},
   "user4":{"name":"mohit","password":"password4","profession":"teacher","id":4}
}

Detayları göster

Şimdi, kullanıcı kimliği kullanılarak çağrılacak ve ilgili kullanıcının ayrıntılarını gösterecek bir API uygulayacağız.

server.js

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      var users = JSON.parse( data );
      var user = users["user" + req.params.id] 
      console.log( user );
      res.end( JSON.stringify(user));
   });
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   console.log("Example app listening at http://%s:%s", host, port)
})

Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/2 URL'sini ve HTTP Yöntemi: GET'i kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -

{"name":"suresh","password":"password2","profession":"librarian","id":2}

Kullanıcıyı sil

Bu API, req.body aracılığıyla girdi verilerini aldığımız addUser API'sine çok benzer ve ardından kullanıcı kimliğini temel alarak bu kullanıcıyı veritabanından siliyoruz. Programımızı basit tutmak için, kimliği 2 olan kullanıcıyı sileceğimizi varsayıyoruz.

server.js

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.delete('/deleteUser', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
      data = JSON.parse( data );
      delete data["user" + 2];
       
      console.log( data );
      res.end( JSON.stringify(data));
   });
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   console.log("Example app listening at http://%s:%s", host, port)
})

Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/deleteUser ve HTTP Yöntemi: DELETE URL'sini kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -

{"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}

Node.js tek iş parçacığı modunda çalışır, ancak eşzamanlılığı işlemek için olay odaklı bir paradigma kullanır. Ayrıca, çok çekirdekli CPU tabanlı sistemlerde paralel işlemeden yararlanmak için alt süreçlerin oluşturulmasını kolaylaştırır.

Alt süreçlerin her zaman üç akışı vardır child.stdin, child.stdout, ve child.stderr üst sürecin standart akışları ile paylaşılabilir.

Düğüm sağlar child_process Bir çocuk süreci oluşturmak için aşağıdaki üç ana yola sahip olan modül.

  • exec - child_process.exec yöntemi, kabukta / konsolda bir komut çalıştırır ve çıktıyı arabelleğe alır.

  • spawn - child_process.spawn, belirli bir komutla yeni bir işlem başlatır.

  • fork - child_process.fork yöntemi, alt süreçler oluşturmak için spawn () yönteminin özel bir durumudur.

Exec () yöntemi

child_process.exec yöntemi, bir kabukta bir komut çalıştırır ve çıktıyı arabelleğe alır. Aşağıdaki imzaya sahiptir -

child_process.exec(command[, options], callback)

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • command (Dize) Boşluklarla ayrılmış bağımsız değişkenlerle çalıştırılacak komut

  • options (Nesne) aşağıdaki seçeneklerden birini veya birkaçını içerebilir -

    • cwd (Dize) Alt sürecin geçerli çalışma dizini

    • env (Nesne) Ortam anahtar / değer çiftleri

    • encoding (Dize) (Varsayılan: 'utf8')

    • shell (Dize) Komutu çalıştırmak için kabuk (Varsayılan: UNIX'te '/ bin / sh', Windows'ta 'cmd.exe', Kabuk, UNIX'teki -c anahtarını veya Windows'ta / s / c'yi anlamalıdır. Windows'ta, komut satırı ayrıştırma cmd.exe ile uyumlu olmalıdır.)

    • timeout (Sayı) (Varsayılan: 0)

    • maxBuffer (Sayı) (Varsayılan: 200 * 1024)

    • killSignal (Dize) (Varsayılan: 'SIGTERM')

    • uid (Sayı) İşlemin kullanıcı kimliğini ayarlar.

    • gid (Sayı) İşlemin grup kimliğini ayarlar.

  • callback İşlev üç argüman alır error, stdout, ve stderr işlem sona erdiğinde çıktıyla çağrılanlar.

Exec () yöntemi, maksimum boyuta sahip bir arabellek döndürür ve işlemin bitmesini bekler ve arabelleğe alınmış tüm verileri bir kerede döndürmeye çalışır.

Misal

Support.js ve master.js adlı iki js dosyası oluşturalım -

File: support.js

console.log("Child Process " + process.argv[2] + " executed." );

File: master.js

const fs = require('fs');
const child_process = require('child_process');

for(var i=0; i<3; i++) {
   var workerProcess = child_process.exec('node support.js '+i,function 
      (error, stdout, stderr) {
      
      if (error) {
         console.log(error.stack);
         console.log('Error code: '+error.code);
         console.log('Signal received: '+error.signal);
      }
      console.log('stdout: ' + stdout);
      console.log('stderr: ' + stderr);
   });

   workerProcess.on('exit', function (code) {
      console.log('Child process exited with exit code '+code);
   });
}

Şimdi sonucu görmek için master.js'yi çalıştırın -

$ node master.js

Çıkışı doğrulayın. Sunucu başladı.

Child process exited with exit code 0
stdout: Child Process 1 executed.

stderr:
Child process exited with exit code 0
stdout: Child Process 0 executed.

stderr:
Child process exited with exit code 0
stdout: Child Process 2 executed.

Spawn () Yöntemi

child_process.spawn yöntemi, belirli bir komutla yeni bir işlem başlatır. Aşağıdaki imzaya sahiptir -

child_process.spawn(command[, args][, options])

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • command (Dize) Çalıştırma komutu

  • args (Dizi) Dize bağımsız değişkenlerinin listesi

  • options (Nesne) aşağıdaki seçeneklerden birini veya birkaçını içerebilir -

    • cwd (Dize) Alt sürecin geçerli çalışma dizini.

    • env (Nesne) Ortam anahtar / değer çiftleri.

    • stdio (Dizi) String Child'ın stdio yapılandırması.

    • customFds (Dizi) Stdio için alt öğenin kullanması için Kullanımdan Kaldırılmış Dosya tanımlayıcıları.

    • detached (Boolean) Çocuk bir süreç grubu lideri olacaktır.

    • uid (Sayı) İşlemin kullanıcı kimliğini ayarlar.

    • gid (Sayı) İşlemin grup kimliğini ayarlar.

Spawn () yöntemi akışları (stdout & stderr) döndürür ve işlem bir hacimde veri döndürdüğünde kullanılmalıdır. spawn (), işlem yürütülmeye başlar başlamaz yanıtı almaya başlar.

Misal

Support.js ve master.js adlı iki js dosyası oluşturun -

File: support.js

console.log("Child Process " + process.argv[2] + " executed." );

File: master.js

const fs = require('fs');
const child_process = require('child_process');
 
for(var i = 0; i<3; i++) {
   var workerProcess = child_process.spawn('node', ['support.js', i]);

   workerProcess.stdout.on('data', function (data) {
      console.log('stdout: ' + data);
   });

   workerProcess.stderr.on('data', function (data) {
      console.log('stderr: ' + data);
   });

   workerProcess.on('close', function (code) {
      console.log('child process exited with code ' + code);
   });
}

Şimdi sonucu görmek için master.js'yi çalıştırın -

$ node master.js

Çıkışı doğrulayın. Sunucu başladı

stdout: Child Process 0 executed.

child process exited with code 0
stdout: Child Process 1 executed.

stdout: Child Process 2 executed.

child process exited with code 0
child process exited with code 0

Çatal () Yöntemi

child_process.fork yöntemi, Node işlemleri oluşturmak için özel bir spawn () durumudur. Aşağıdaki imzaya sahiptir -

child_process.fork(modulePath[, args][, options])

Parametreler

İşte kullanılan parametrelerin açıklaması -

  • modulePath (Dize) Altta çalışacak modül.

  • args (Dizi) Dize bağımsız değişkenlerinin listesi

  • options (Nesne) aşağıdaki seçeneklerden birini veya birkaçını içerebilir -

    • cwd (Dize) Alt sürecin geçerli çalışma dizini.

    • env (Nesne) Ortam anahtar / değer çiftleri.

    • execPath (Dize) Yürütülebilir, çocuk süreci oluşturmak için kullanılır.

    • execArgv (Dizi) Yürütülebilir dosyaya aktarılan dize bağımsız değişkenlerinin listesi (Varsayılan: process.execArgv).

    • silent (Boolean) Eğer alt öğenin true, stdin, stdout ve stderr'i üst öğeye aktarılacaksa, aksi takdirde ebeveynden miras alınacaktır, daha fazlası için spawn () 'ın stdio'su için "boru" ve "miras" seçeneklerine bakın ayrıntılar (varsayılan yanlıştır).

    • uid (Sayı) İşlemin kullanıcı kimliğini ayarlar.

    • gid (Sayı) İşlemin grup kimliğini ayarlar.

Çatal yöntemi, normal bir ChildProcess örneğindeki tüm yöntemlere sahip olmanın yanı sıra yerleşik bir iletişim kanalına sahip bir nesne döndürür.

Misal

Support.js ve master.js adlı iki js dosyası oluşturun -

File: support.js

console.log("Child Process " + process.argv[2] + " executed." );

File: master.js

const fs = require('fs');
const child_process = require('child_process');
 
for(var i=0; i<3; i++) {
   var worker_process = child_process.fork("support.js", [i]);	

   worker_process.on('close', function (code) {
      console.log('child process exited with code ' + code);
   });
}

Şimdi sonucu görmek için master.js'yi çalıştırın -

$ node master.js

Çıkışı doğrulayın. Sunucu başladı.

Child Process 0 executed.
Child Process 1 executed.
Child Process 2 executed.
child process exited with code 0
child process exited with code 0
child process exited with code 0

JXcore, açık kaynaklı bir proje olan, kaynak dosyaların ve diğer varlıkların JX paketlerinde paketlenmesi ve şifrelenmesi için benzersiz bir özellik sunar.

Pek çok dosyadan oluşan büyük bir projeniz olduğunu düşünün. JXcore, dağıtımı basitleştirmek için hepsini tek bir dosyada paketleyebilir. Bu bölüm, JXcore kurulumundan başlayarak tüm sürece hızlı bir genel bakış sağlar.

JXcore Kurulumu

JXcore'u kurmak oldukça basittir. Burada, JXcore'u sisteminize nasıl kuracağınıza dair adım adım talimatlar verdik. Aşağıda verilen adımları izleyin -

Aşama 1

JXcore paketini şuradan indirin: https://github.com/jxcore/jxcore, işletim sisteminize ve makine mimarinize göre. 64 bit makinede çalışan Cenots için bir paket indirdik.

$ wget https://s3.amazonaws.com/nodejx/jx_rh64.zip

Adım 2

İndirilen dosyayı açın jx_rh64.zipve jx ikilisini / usr / bin içine kopyalayın veya sistem kurulumunuza bağlı olarak başka herhangi bir dizinde olabilir.

$ unzip jx_rh64.zip
$ cp jx_rh64/jx /usr/bin

Aşama 3

PATH değişkeninizi jx'i istediğiniz herhangi bir yerden çalıştıracak şekilde ayarlayın.

$ export PATH=$PATH:/usr/bin

4. adım

Aşağıda gösterildiği gibi basit bir komut vererek kurulumunuzu doğrulayabilirsiniz. Çalışırken ve sürüm numarasını aşağıdaki gibi yazdırırken bulmalısınız -

$ jx --version
v0.10.32

Kodu Paketleme

Node.js, ana dosya, index.js ve yerel olarak yüklenmiş tüm modüller dahil olmak üzere tüm dosyalarınızı sakladığınız aşağıdaki dizinlere sahip bir projeniz olduğunu düşünün.

drwxr-xr-x  2 root root  4096 Nov 13 12:42 images
-rwxr-xr-x  1 root root 30457 Mar  6 12:19 index.htm
-rwxr-xr-x  1 root root 30452 Mar  1 12:54 index.js
drwxr-xr-x 23 root root  4096 Jan 15 03:48 node_modules
drwxr-xr-x  2 root root  4096 Mar 21 06:10 scripts
drwxr-xr-x  2 root root  4096 Feb 15 11:56 style

Yukarıdaki projeyi paketlemek için, bu dizine girmeniz ve aşağıdaki jx komutunu vermeniz yeterlidir. İndex.js'nin Node.js projeniz için giriş dosyası olduğunu varsayarsak -

$ jx package index.js index

Burada yerine başka bir paket adı kullanabilirsiniz index. Kullandık indexçünkü ana dosya ismimizi index.jx olarak tutmak istedik. Ancak, yukarıdaki komut her şeyi paketleyecek ve aşağıdaki iki dosyayı oluşturacaktır -

  • index.jxp Bu, projeyi derlemek için gereken tüm proje detaylarını içeren bir ara dosyadır.

  • index.jx Bu, müşterinize veya üretim ortamınıza gönderilmeye hazır olan tüm paketi içeren ikili dosyadır.

JX Dosyasını Başlatma

Orijinal Node.js projenizin aşağıdaki gibi çalıştığını düşünün -

$ node index.js command_line_arguments

JXcore kullanarak paketinizi derledikten sonra, aşağıdaki gibi başlatılabilir -

$ jx index.jx command_line_arguments

JXcore hakkında daha fazla bilgi edinmek için resmi web sitesine bakabilirsiniz.