Skip to content

NodeJs là gì ?

Nếu bạn là một lập trình viên, đặc biệt nếu là 1 lập trình viên web thì chắc chắn bạn phải công nhận NodeJS được nhắc đến rất nhiều lần vì đây là một nền tảng phát triển website rất nhanh chóng và hiệu quả trong thời điểm hiện tại

Sự phát triển của NodeJS mạnh mẽ đến mức lúc tôi bắt đầu học lập trình đã phải rất đắn đo việc mình sẽ học Java Web hay Nodejs để làm backend

NodeJS là một ngôn ngữ được nâng cấp của Javascript ?

NodeJS luôn luôn được nhắc đến như là một cái gì đó đi kèm với Javascript. Nhưng không ! Nó không phải là một ngôn ngữ được nâng cấp và cũng hoàn toàn không phải là một ngôn ngữ nữa

Để tôi giải thích !

NodeJS là một môi trường được dựa vào Engine V8 của Chrome để phát triển về phía backend

Đầu tiên cũng làm rõ sự khác biệt giữa frontend và backend

Cho đến thời điểm hiện tại sự phát triển mạnh mẽ của frontend đã dần xóa đi sự cần thiết của backend vì tất cả những logic code xử lý đều có thể được viết ở frontend sử dụng Javascript

Nhưng sẽ có những thứ mà frontend không thể làm được như :

File System : quản lý files, folder trên server (không thể tạo download feature nếu không có server)

Database

v.v.

Chính vì Javascript trên Engine V8 quá nhanh nên đã có người cố gắng tìm cách đưa môi trường này về backend đó chính là : Ryan Lienhart Dahl

Sự hình thành và điểm đặc biệt của NodeJS

Thời trước, Browser dùng JS Engine để chuyển JS code => Machine Code (mã nhị phân)

  • Egde : Chakra
  • Firefox : SpiderMonkey
  • Chrome : V8

V8 là JS Engine mạnh mẽ nhất chính vì thế nó được đưa vào C++ để chạy ở Server và gọi là Node

Cuối cùng, Node là Runtime Environment để thực thi JS Code trên server

Đặc điểm của Node

Single Core

Node chỉ có thể tận dụng 1 Core -> nếu ta có nhiều CPU (4 core) thì nó sẽ không dùng được 3 core kia

Nhưng nó được 1 cái là cơ chế non-blocking sẽ tối ưu hóa workflow của core đó

Non-Blocking I/O

Node.js Tutorial: Node.js - Event Loop

Lý do cơ chế này tốt là :

Blocking : SELECT * FROM table => bạn sẽ chờ đến khi nào Database trả về kết quả => Bạn làm việc tiếp (như sử dụng Java)

Còn Non-blocking : SELECT * FROM table => bạn làm việc khác

Khi nào DB trả về kết quả thì bạn sẽ xử lý kết quả đó tiếp chứ không chờ

Đó là lý do việc này hiệu quả là vì tại sao bạn phải chờ 1 công việc mà bạn chẳng phải gánh vác trách nhiệm gì ! Đúng không

Việc QUERY và trả về kq là của Database, chứ bạn có làm cái gì đâu !

Và cơ chế Event-Loop sẽ giúp bạn luôn luôn mỗi mấy giây(ví dụ) là bạn sẽ quay lại hỏi thằng Database coi : “ê mày xong chưa” => nó bảo xong rồi thì xử lý kết quả đó

Những hiểu làm về NodeJS

NodeJS không phải Single-threaded : Đừng nhầm tưởng với Javascript vì nó là Single-Threaded

Node được chạy trên C++ chính vì thế nó có thể tận dùng ~ thread khác

Đọc thêm :

Is Node.js really single-threaded?

Is it really Node.js single-threaded? Threading in Node.js

Is it really Node.js single-threaded?

Not really, Your JavaScript is not support threading but not Node.js, Node.js internally uses C++, recent addition of Node.js added support for worker_threads .

StackOverFlow

Khi nào dùng NodeJS(Non-blocking) & Java(Blocking)

Node :

  • I/O intensive app
  • app có nhiều request nhưng không cần tính toán nhiều (hầu hết ~ webapp hiện nay đều như thế này)

Java :

  • CPU-intensive app
  • dùng cho app xử lý hình ảnh, video, v.v. (tính toán nhiều trước khi trả về kết quả)

Thư viện đi cùng với NodeJS

Libuv : Thư viên C dùng cho non-blocking I/O ops, File system, DNS, network, child processes, pipes, signal handling, polling & streaming

Llhttp : HTTP parsing

openSSL : tls, crypto, http

zlib : compressing

Published inNodeJS

5 Comments

  1. Hi Dear, are you genuinely visiting this website regularly, if so then you will definitely obtain nice knowledge. Consolata Bond Frederiksen

  2. Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary Jodie Cornall Asare

  3. Next time I read a blog, I hope that it does not fail me as much as this one. Billye Emory Haywood

  4. The day I photographed it, I half-and-halfed the flour. But I made it again all whole wheat and actually preferred it. Chelsie Ferdy Gael

Leave a Reply

Your email address will not be published. Required fields are marked *