Node.js-ийн талаар хэлэх хэдэн үг

2B | +1% better 2day | c.007

--

Node.js гэж юу вэ?

Node.js гэдэг нь JavaScript дээр бичигдсэн кодыг ажиллуулж чадах орчин. (runtime environment)

Node.js нь анх browser дотор л ажилладаг байсан JavaScript-ийг дөнгөнөөс нь мулталж, гадна талд ажиллах боломжтой болгосон технологи юм.

Java мэддэг бол JRE (Java Runtime Environment) гэж сонсож байсан байх. Тэгвэл JRE-ийг Node.js-тай адилтгасан зүйрлэлийг дараах зургаас харж болно.

Үндсэн карактер :

  • Open Source
  • Cross Platform
    (Windows, Linux, Unix, Mac OS X, etc.)
  • Single Threaded
    (*10.5-аас хойш Worker_threads гэж бий болсон)

Түүх

JavaScript дээр яагаад сервер талын код бичиж болохгүй гэж?” гэсэн асуултаас Node.js-ийн үүсэл эхэлсэн байна. 2009/2/16-наас Ryan Dahl хөгжүүлэлтээ эхлэн 2009/5/27 анхны хувилбараа гарган 11 сарын 8-нд JSConf дээр олон нийтэд танилцуулжээ.

Flickr зураг хуулдаг вэбийг ашиглаж байхдаа үндсэн санаагаа олсон бөгөөд Ruby дээрх Event Machine, Python дээрх Twisted хоёроос ихээхэн санаа авсан гэсэн.

Хэрхэн ажилладаг вэ?

How Node.js Works | Mosh

Google Chrome-ийн цөм болсон V8 Engine-ийг ашиглан JavaScript кодыг машин код руу хөрвүүлж асар хурдан ажилладаг.

libuv санг ашиглан асинхрон оролт/гаралтын процессыг хийх боломжийг олгодог. (Non-blocking I/O) Гол санаа нь үндсэн процесс гацахгүйгээр дараа дараачийн хүсэлтүүдийг хүлээж авч ажиллана гэсэн үг.

Blocking I/O (left) vs Non-Blocking I/O (right)

Asynchronous behaviors are simply invoked and not executed instantly.

Sync vs Async

Яагаад хэрэглэх хэрэгтэй вэ?

Node.js-ийг сонгох гол шалтгаан нь

  • Бараг л бүх төрлийн төсөлд хэрэглэх боломжтой. (except CPU intensive)
  • Similar : JavaScript мэддэг хүмүүс шинэ зүйл сурах хэрэггүй
  • V8 хөдөлгүүр, Single Threaded & Non-blocking I/O загварын ачаар өндөр performance үзүүлэх чадалтай
  • NPM : 500,000+ нээлттэй эхийн сангуудтай учраас танд хэрэгтэй зүйлс аль хэдийн ашиглахад бэлэн байгаа (бараг л 😁)
  • Ecosystem : 2000+ contributors-тай байнгын шинэчлэл, шинэ зүйлс нэмэгдэж байдаг

Node.js ашиглан хийх боломжтой аппын жишээ

  • Server Side Web : CPU их ачаалсан тооцоолол хийдэггүй жирийн вэб аппликэйшн
  • Chat : Бага хэмжээтэй ч трафик ихтэй аппликэйшн (сонгодог жишээ)
  • Queued inputs : Их хэмжээний өгөгдлийг өгөгдлийн сан руу хадгалах (Өгөгдлийн сангаас хариу хүлээхгүйгээр тусад нь хийх)

Харьцуулалт

PHP, Rails дээр хийж чадахгүй байсан их хэмжээний хүсэлтийг Node.js дээр асуудалгүй handle хийж чаддаг. Дан ганц вэб биш бүх төрлийн апп хийх боломжтой гэдгээрээ PHP-ээс давуу талтай байдаг бол хурд болон scale хийхэд хялбар гэдгээрээ Rails-ээс илүү гэж үздэг.

Node.js (5 дахин хурдан) > HHVM (7 дахин хурдан) > PHP

Түгээмэл хэрэглэгддэг

Node.js дээр суурилсан framework-үүдээс хамгийн архаг гурвыг нь дурдвал

  • 2010 Express, энгийн мөртлөө хүчирхэг вэб сервер үүсгэгч
    (fast, unopinionated, minimalist web framework)
  • 2010 Socket.io, real-time холбоо шаарддаг апп-п тохирсон
    (real-time, bidirectional and event-based communication engine)
  • 2011 hapi, дахин ашиглах боломжтой логик бичихэд төвлөрсөн
    (powerful, scalable, full out-of-the-box functionality)
15 Best Node JS Frameworks Used For Web & Enterprise In 2019

За тэгээд эхний ээлжинд Node.js-ийн талаар бага ч гэсэн ойлголттой болсон байх. Хүсвэл дараах 3-н зүйлсийг илүү дэлгэрүүлэн судлан Node.js-ийн дотоод ажиллагааны талаар гүн ойлголттой болоорой.
— 1. Event Loop
— 2. Worker Pool
— 3. Worker threads
Эсвэл дараачийн нийтлэлийг маань хүлээгээд байж байхгүй юу дөө 😂

--

--

Билигүн.Б (Програмч аав)
2B +1% better 2day

I am who I am... || өөрийнхөөрөө байхаас ичихгүй