Kiến thức công nghệ
April 15, 2022

Bước đầu làm quen với Node.js

1. Tổng quan

Node.js là một môi trường (enviroment) để thực thi các đoạn mã Javascript. Có một điều cần lưu ý, Node.js ko phải là library hay framework, hay càng không phải là ngôn ngữ lập trình. Đừng hiểu nhầm giữa các khái niệm này. Nó giống với việc cá phải đặt trong môi trường nước, hay các đoạn mã nhị phân định dạng “.exe" phải đặt trong môi trường Window mới chạy được. Hay một ví dụ khác mang tính lập trình hơn một chút, chắc hẳn bạn đã được học qua về ngôn ngữ Java - nó cần môi trường thực thi gọi là JRE (Java runtime enviroment), và cụ thể trong đó có cơ chế máy ảo (Java virtual machine) đã chạy các đoạn Java bytecode. Đó, Nodejs cũng tương tự như vậy, nó là một môi trường cho các đoạn code Javascript có thể “sống" và hoạt động được".

Node.js là mã nguồn mở, được xây dựng trên nền tảng V8 Javascript engine, thường đc dùng để phát triển các application phía server và liên quan đến networking.

Thời kì đầu của ngôn ngữ Javascript, mà bạn chỉ chạy được trên trình duyệt. Sau này, các lập trình viên đã mở rộng ngôn ngữ này thành một thứ có thể chạy trên máy tính dưới dạng ứng dụng độc lập (ko phụ thuộc vào trình duyệt nữa). Do vậy, giờ đây bạn có thể làm được nhiều thứ với JavaScript hơn là chỉ tương tác với các website.

2. Các đặc trưng của NodeJS

  • . Mô hình hướng sự kiện (event-driven) và bất đồng bộ (asynchronous): Các api của library trong node.js là bất đồng bộ. NÓi cách khác, các server dựa trên Node.js không bao giờ chờ lời gọi api trả về dữ liệu (return data) mà nó sẽ chuyển đến api call kế tiếp. Tại sao nó ko cần chờ? Vì ở bên dưới có 1 cơ chế thông báo các sự kiện (Event) xảy ra khi gọi 1 api, nó giúp server phản hồi (response) lại các api được gọi
  • . Tốc độ cao: Google Chrome nổi tiếng với việc load web nhanh chắc hẳn ai cũng thừa nhận đúng ko nào? Và Node.JS cũng xử lý rất nhanh vì cũng dùng bộ nhân xử lý javascript của Chrome có tên là Google Chrome’s V8 Javascript Engine
  • . Đơn luồng nhưng dễ mở rộng: Node.js sử dụng mô hình đơn luồng (single thread) với 1 vòng lặp vô hạn tiếp nhận và xử lý event liên tục. Cơ chế này giúp server phản hồi một cách liên tục và dễ dàng thay đổi. Nó đi ngược lại cách thức của các các server truyền thống tức là sẽ tạo ra các luồng khác nhau để xử lý các request khác nhau.
  • . Không dùng buffer: Các ứng dụng Node.js ko lưu bất cứ dữ liệu nào vào buffer mà chỉ đơn giản là chuyển tiếp dữ liệu.

3. Lợi ích của Node.js

  • Dễ dàng mở rộng: Các lập trình viết thích sử dụng Node.JS bởi nó dễ dàng mở rộng theo chiều rộng cũng như chiều ngang. Ta có thể bổ sung thêm các chức năng mới trong quá trình mở rộng app
  • Ứng dụng web thời gian thực (real-time): Nếu bạn đang build một ứng dụng web, bạn có thể chọn PHP, thì cũng ko có khác biệt mấy về thời gian so với dùng Node.js. Nhưng nếu câu chuyện là một ứng dụng chat hoặc game thì Node.js sẽ được tín nhiệm hơn nhờ đặc tính bất động bộ (asynchronization) giúp tăng tốc độ chương trình. Event-loop trong Node.js cũng tránh quá tải các HTTP request.
  • Dễ học và code: Node.js dễ học và code vì có javascript. Nếu bạn đang là một front-end developer và biết về javascript thì bạn hoàn toàn có thể học Node.js một cách dễ dàng và build được app trên môi trường này.
  • Lợi thế về caching: Nó cung cấp cơ chế caching trên một module. Bất cứ khi nào có request tới module đầu tiên, nó sẽ lấy từ cache trong vùng nhớ của app, do vậy ko cần phải chạy lại code.
  • Data Streaming: trong NodeJS, các yêu cầu gửi đi (request) và phản hồi (response) HTTP được xem là 2 event riêng biệt. Chúng thuộc dạng Data stream do vây khi bạn xử lý 1 file tại thời điểm loading, nó sẽ giảm tải toàn bộ thời gian và khiến thời gian chạy nhanh hơn
  • Mã nguồn sạch và ổn định hơn
  • Hệ sinh thái gồm rất nhiều các library mã nguồn mở: cộng đồng Node.js ngày một đông, rất nhiều giải pháp đã được viết sẵn và đóng gói thành thư viện. Developer có thể cấu hình về dự án của mình rất dễ dàng thông qua hệ thống quản lý gói Node Package Manager (npm)

4. Các ứng dụng có thể xây dựng với Node.js

  • . Websocket server: Các máy chủ web socket như là Online Chat, Game Server…
  • . Fast File Upload Client: là các chương trình upload file tốc độ cao.
  • . Ad Server: Các máy chủ quảng cáo.
  • . Cloud Services: Các dịch vụ đám mây.
  • . RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng khác thông qua API.
  • . Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc độ thời gian thực. Micro Services: Ý tưởng của micro services là chia nhỏ một ứng dụng lớn thành các dịch vụ nhỏ và kết nối chúng lại với nhau. Nodejs có thể làm tốt điều này.

5. Cài đặt và chạy thử một chương trình đơn giản

- Cài đặt tại link trang chủ: https://nodejs.org/

- Sau khi cài đặt, có thể kiểm tra lại bằng cách gõ lệnh: node —version

Nếu hiện ra số hiệu phiên bản là đã cài đặt thành công!

Tạo thử 1 chương trình backend rất đơn giản để test: chương trình này listen trên port 8081. Mỗi khi có một request gửi lên, thì chương trình sẽ gửi về 1 response với nội dung “Hello world”.

- Để chạy chương trình, gõ lệnh: node server.js
Chương trình sẽ báo trên console: Server running at <http://127.0.0.1:8081/> tức là thành công

- Thử một request đến server bằng cách gõ địa chỉ của server trên trình duyệt:



Bạn thấy không, code phần backend sẽ nhìn rất thoáng và ngắn gọn nhờ có Node.js

Nguyễn Anh Vũ
Software Engineer tại Asilla Việt Nam
Youtuber - Vũ Nguyễn Coder

* Tài liệu tham khảo:

https://www.geeksforgeeks.org/introduction-to-node-js/

https://www.tutorialspoint.com/nodejs/index.htm

Các bài viết liên quan

Ảnh Blog Chia Sẻ

5 lầm tưởng phổ biến về AI

Trong bối cảnh bùng nổ công nghệ như hiện nay thì những thuật ngữ như AI (Artificial Intelligence) hay ChatGPT đang dần dần xuất hiện nhiều trong cuộc sống của chúng ta. Qua quá trình phỏng vấn, chia sẻ và làm việc với nhiều bạn trẻ, nhất là những bạn sinh viên đang trong giai đoạn xác định ngành học và định hướng nghề nghiệp, mình nhận thấy các bạn có nhiều thắc mắc và câu hỏi thú vị về AI. Trong bài viết này, hãy cùng nhau phân tích và thảo luận một số luận điểm hay được mọi người quan tâm.
Tìm hiểu
Ảnh Blog Chia Sẻ

Giới thiệu về Docker

Trong năm 2020, Docker được bình chọn là một trong những nền tảng nổi tiếng nhất trong giới công nghệ, chỉ đứng sau Linux và Windows, và được nhiều nhà phát triển chọn là nền tảng “muốn được học nhất”*.
Tìm hiểu