Nodejs là gì? Tại sao và khi nào dùng Nodejs?


Đứng trước sự lựa chọn nên học ngôn ngữ lập trình nào ai cũng nghiên cứu xem ngôn ngữ nào có ưu và nhược điểm gì và dùng để làm gì thì tối ưu. Nhân đây Japan IT Works sẽ giới thiệu sơ lược cho bạn về NodeJS.

Nodejs là gì?

  • Node.js là một mã nguồn mở, một môi trường cho các máy chủ và ứng dụng mạng.
  • Node.js sử dụng Google V8 JavaScript engine để thực thi mã, và một tỷ lệ lớn các module cơ bản được viết bằng JavaScript. Các ứng dụng node.js thì được viết bằng JavaScript.
  • Node.js chứa một thư viện built-in cho phép các ứng dụng hoạt động như một Webserver mà không cần phần mềm như Nginx, Apache HTTP Server hoặc IIS.
  • Node.js cung cấp kiến trúc hướng sự kiện (event-driven) và non-blocking I/O API, tối ưu hóa thông lượng của ứng dụng và có khả năng mở rộng cao
  • Mọi hàm trong Node.js là không đồng bộ (asynchronous). Do đó, các tác vụ đều được xử lý và thực thi ở chế độ nền (background processing)

NodeJS là một nền tảng viết bằng JavaScript giúp xây dựng các ứng dụng mạng nhanh. NodeJS được InfoWorld bình chọn là "Công nghệ của năm" năm 2012 và đến nay vẫn còn được phổ biến.

Ưu điểm của NodeJS

1. JSON APIs

Bởi lẽ REST/JSON APIs gọn nhẹ là điều khiến NodeJS tỏa sáng. Với cơ chế event-driven, non-blocking I/O (Input/Output) và mô hình kết hợp với Javascript là sự lựa chọn tuyệt vời cho các dịch vụ Webs làm bằng JSON.

2. Ứng dụng trên 1 trang

Nếu bạn định viết 1 ứng dụng thể hiện trên 1 trang (Gmail?) NodeJS rất phù hợp để làm. Với khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh. Các ứng dụng bạn định viết không muốn nó tải lại trang, gồm rất nhiều request từ người dùng cần sự hoạt động nhanh để thể hiện sự chuyên nghiệp thì NodeJS sẽ là sự lựa chọn của bạn.

3. Shelling tools unix

NodeJS sẽ tận dụng tối đa Unix để hoạt động. Tức là NodeJS có thể xử lý hàng nghìn Process và trả ra 1 luồng khiến cho hiệu xuất hoạt động đạt mức tối đa nhất và tuyệt vời nhất.

4. Streaming Data (Luồng dữ liệu)

Các web thông thường gửi HTTP request và nhận phản hồi lại (Luồng dữ liệu). Giả xử sẽ cần xử lý 1 luồng giữ liệu cực lớn, NodeJS sẽ xây dựng các Proxy phân vùng các luồng dữ liệu để đảm bảo tối đa hoạt động cho các luồng dữ liệu khác

5. Ứng dụng Web thực

Giả sử bạn xây dựng 1 ứng dụng chat, feed... Facebook, Twitter là điển hình cho Web thực. NodeJS làm khá tốt điều đó!

Nhược điểm của NodeJS

1. Ứng dụng nặng tốn tài nguyên

Nếu bạn cần xử lý các ứng dụng tốn tài nguyên CPU như encoding video, convert file, decoding encryption... hoặc các ứng dụng tương tự như vậy thì không nên dùng NodeJS (Lý do: NodeJS được viết bằng C++ & Javascript, nên phải thông qua thêm 1 trình biên dịch của NodeJS sẽ lâu hơn 1 chút ). Trường hợp này bạn hãy viết 1 Addon C++ để tích hợp với NodeJS để tăng hiệu suất tối đa! (Việc tích hợp rất thân thiện và nhanh chóng)

2. NodeJS và ngôn ngữ khác

NodeJS, PHP, Ruby, Python .NET... thì việc cuối cùng là phát triển các App Web. NodeJS mới sơ khai như các ngôn ngữ lập trình khác. Vậy nên bạn đừng hi vọng NodeJS sẽ hơn PHP, Ruby, Python... ở thời điểm này. Nhưng với NodeJS bạn có thể có 1 ứng dụng như mong đợi, điều đó là chắc chắn (perfect)!

Với những gì các ngôn ngữ tiền bối đang có (cộng đồng lâu năm, framework, cms, open source...) Nếu bạn/doanh nghiệp chưa biết về NodeJS thì việc cần xây dựng dự án quan trọng, kinh doanh phát triển trên NodeJS sẽ không phải lựa chọn bây giờ.

3. NoSQL + Nodejs + Noob!

Với NodeJS, NoSQL thì là sự kết hợp hoàn hảo nhưng: Bạn là người có kinh nghiệm với các ngôn ngữ lập trình để phát triển các dự án. Bạn biết được NodeJS qua tin tức, báo chí, bạn bè... Bạn quyết định xây dựng dự án bằng NodeJS. Nhưng khi gặp sự cố rủi ro xây dựng dự án với NodeJS đồng thời quay lưng luôn. Hãy đừng đổ lỗi cho công nghệ bạn đang dùng mà hãy hiểu rằng "BẠN CHƯA HIỂU ĐƯỢC NodeJS !"

Các ứng dụng sử dụng NodeJS nhiều nhất

  • Xây dựng websocket server (Chat server)
  • Hệ thống Notification (Giống như Facebook hay Twitter)
  • Ứng dụng upload file trên client
  • Các máy chủ quảng cáo
  • Các ứng dụng dữ liệu thời gian thực khác.

Mất bao lâu để thành thạo NodeJS?

Thông thường sẽ từ 3 - 6 tháng cho một Teamwork (3 - 5 người). Cá nhân từ 4 - 8 tháng.

Vậy dùng nodejs khi nào?

  • Xây dựng một restful API  bởi vì nodejs chủ yếu là JS nên việc thảo tác với JSON sẽ dễ dàng hơn rất nhiều và nó có cơ chế non-blocking nên rất tuyệt vời để xây dựng web Api.
  • Những ứng dụng đòi hỏi các giao thức kết nối khác nhau. Với việc hỗ trợ giao thức tcp, từ nó bạn có thể xây dựng bất kỳ một giao thức custom nào đó một cách dễ dàng.
  • Những ứng dụng thời gian thực.
  • Những website stateful. Node.js xử lý mọi request trên cùng một process giúp cho việc xây dựng các bộ nhớ đệm chưa bao giờ đơn giản đến thế.

Điều quan trọng hơn hết là không khuyên bạn nên dùng mà là bản thân bạn thích và muốn dùng NodeJS mà thôi.

Tổng hợp

Japan IT Works 

 



Việc làm theo chuyên ngành

Việc làm theo ngành

Việc làm theo tỉnh thành