Node.js - Introduction

What is Node.js?

Node.js là một môi trường chạy phía máy chủ được xây dựng trên Engine JavaScript của Google Chrome (V8 Engine). Node.js được phát triển bởi Ryan Dahl vào năm 2009 và phiên bản mới nhất của nó là v20.9.0. Node.js là một môi trường chạy JavaScript mã nguồn mở, đa nền tảng (chạy trên Windows, Linux, Unix, macOS, và nhiều hơn nữa), thực thi mã JavaScript bên ngoài trình duyệt web.

Định nghĩa về Node.js theo tài liệu chính thức của nó như sau −

Node.js là một nền tảng được xây dựng trên môi trường thực thi JavaScript của Chrome, giúp dễ dàng xây dựng các ứng dụng mạng nhanh và có khả năng mở rộng. Node.js sử dụng mô hình I/O không chặn dựa trên sự kiện, giúp nó nhẹ và hiệu quả, hoàn hảo cho các ứng dụng thời gian thực có cường độ dữ liệu cao chạy trên các thiết bị phân tán.

Môi trường Node.js là môi trường dựa trên sự kiện và cung cấp I/O không chặn, tối ưu hóa thông lượng và khả năng mở rộng trong các ứng dụng web. Quỹ OpenJS, được hỗ trợ bởi chương trình Dự án Hợp tác của Quỹ Linux, hiện đang quản lý phát triển phân tán Node.js.

Features of Node.js

Dưới đây là một số tính năng quan trọng giúp Node.js trở thành lựa chọn hàng đầu của các kiến trúc sư phần mềm.

  • Asynchronous and Event Driven − Tất cả các API của thư viện Node.js đều là bất đồng bộ, tức là không chặn. Điều này về cơ bản có nghĩa là một máy chủ dựa trên Node.js không bao giờ chờ đợi một API trả về dữ liệu. Máy chủ chuyển sang API tiếp theo sau khi gọi nó và một cơ chế thông báo của Events trong Node.js giúp máy chủ nhận được phản hồi từ cuộc gọi API trước đó.

  • Very Fast − Được xây dựng trên động cơ JavaScript V8 của Google Chrome, thư viện Node.js rất nhanh trong việc thực thi mã.

  • Single Threaded but Highly Scalable − Node.js sử dụng mô hình đơn luồng với vòng lặp sự kiện. Cơ chế sự kiện giúp máy chủ phản hồi theo cách không chặn và làm cho máy chủ có khả năng mở rộng cao hơn so với các máy chủ truyền thống, vốn chỉ tạo ra một số lượng luồng hạn chế để xử lý các yêu cầu. Node.js sử dụng một chương trình đơn luồng và chương trình đó có thể cung cấp dịch vụ cho một số lượng yêu cầu lớn hơn nhiều so với các máy chủ truyền thống như Apache HTTP Server.

  • No Buffering − Các ứng dụng Node.js không bao giờ lưu trữ bất kỳ dữ liệu nào. Những ứng dụng này chỉ đơn giản xuất dữ liệu theo từng khối.

  • License − Node.js được phát hành dưới MIT license .

Sơ đồ dưới đây mô tả một số phần quan trọng của Node.js mà chúng ta sẽ thảo luận chi tiết trong các chương tiếp theo.

Node.js Concepts

Where to Use Node.js?

Dưới đây là những lĩnh vực mà Node.js đang chứng tỏ mình là một đối tác công nghệ hoàn hảo.

  • Ứng dụng bị ràng buộc I/O

  • Các ứng dụng truyền phát dữ liệu

  • Ứng dụng thời gian thực dữ liệu lớn (DIRT)

  • Các ứng dụng dựa trên API JSON

  • Ứng dụng đơn trang (Single Page Applications)

Tuy nhiên, không nên sử dụng Node.js cho các ứng dụng yêu cầu CPU cao.

Node.js chủ yếu được sử dụng để xây dựng các chương trình mạng như máy chủ Web. Tuy nhiên, bạn có thể xây dựng nhiều loại ứng dụng khác nhau như ứng dụng dòng lệnh, ứng dụng web, ứng dụng chat thời gian thực, REST API, v.v.

Có hàng ngàn thư viện mã nguồn mở cho Node.js có sẵn, hầu hết trong số đó được lưu trữ trên trang web npm. npm là một trình quản lý gói cho ngôn ngữ lập trình JavaScript. Một số framework web có thể được sử dụng để tăng tốc độ phát triển ứng dụng. Một số framework phổ biến bao gồm Express.js, Feathers.js, Koa.js, Sails.js, Meteor và nhiều cái khác.

Số lượng IDE như Atom, JetBrains WebStorm, NetBeans và Visual Studio Code hỗ trợ phát triển ứng dụng Node.js. Các nền tảng lưu trữ đám mây như Google Cloud Platform và AWS Elastic Beanstalk có thể được sử dụng để lưu trữ các ứng dụng Node.js.