NodeJS là gì? Tổng quan về NodeJS dưới góc nhìn của một dev quèn

NodeJS là một nền tảng (là platform chứ không phải framework) chạy trên engine Chrome V8 của Google.

Hi mọi người, đây là bài viết đầu tiên trên blog của mình nên mình muốn giới thiệu với các bạn một chủ đề mà mình chuyên sâu nhất, đó chính là NodeJS dưới góc nhìn của một dev quèn nó sẽ như thế nào.

NodeJS là gì? Tổng quan về NodeJS dưới góc nhìn của một dev quèn

NodeJS là gì vậy?

Các định nghĩa sau được mình tìm thấy trên trang chủ của NodeJS:

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.

Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.

Node.js package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

Như vậy mình đã có thể nắm được một số điều là:

  1. NodeJS là một nền tảng (là platform chứ không phải framework) chạy trên engine Chrome V8 của Google.
  2. Khi ta sử dụng trình duyệt có nhân Chromium thì đều chạy được Javascript, mà đã chạy được Javascript thì chắc chắn chạy được NodeJS.
  3. Khi mọi người nhận thấy trình biên dịch của Javascript rất nhanh và hiệu quả nên nó đã được ứng dụng vào phía server-side, thế nên vào năm 2009 thì NodeJS đã được ra đời.
  4. Từ 2009 - nay thì NodeJS gần như là sự lựa chọn hàng đầu ở phía server-side được các hệ thống lớn đang sử dụng như: Netflix, Paypal, Walmart, và Uber.
Qua bên trên ta đã nắm được khái niệm cơ bản về NodeJS, mình cùng đi tiếp các phần tiếp theo nha.

Event drivent, Non-blocking IO nó là cái gì vậy?

Khái niệm bất đồng bộ (Non-blocking IO) khi mới tiếp xúc với NodeJS mình cứ nghĩ nó là cái gì đó cao siêu lắm, nhưng thật ra nó rất là đơn giản. Nếu bạn đã tiếp xúc với các ngôn ngữ khác như C, C++, Java, ... thì sẽ thấy các dòng code được thực hiện tuần tự từ trên xuống dưới, hoàn thành xong trên rồi mới xuống dưới. Nhưng đối với NodeJS sẽ áp dụng cơ chế Non-blocking IO.

Vậy IO nó là gì? IO chính là Input/Output, là bất cứ thao tác đọc/ghi nào tới file trong hệ thống. IO thao tác rất mất thời gian nên nó sẽ block hết các hàm khác đang chạy, tới lúc này thì cơ chế Non-blocking IO của NodeJS sẽ phát huy điểm mạnh.

Cơ chế bất đồng bộ của NodeJS mang đến một lợi thế cực lớn về hiệu năng, nhất là khả năng xử lý được số lượng lớn các request cùng một lúc. Mình lấy ví dụ như ASP .NET, một framework sử dụng cơ chế blocking IO, để xử lý nhiều request một lúc thì chúng phải sinh ra nhiều luồng khác nhau, điều này sẽ khiến tài nguyên bộ nhớ và vi xử lý sẽ tốn kém hơn rất nhiều. Tất nhiên là các framework như ASP .NET cũng có thể xử lý bất đồng bộ, tuy nhiên chúng ta sẽ phải viết code để tạo ra các thao tác bất đồng bộ ấy. Còn đối với NodeJS thì việc xử lý bất đồng bộ là mặc định.

Cộng đồng hỗ trợ NodeJS rất mạnh và đông

NodeJS là gì? Tổng quan về NodeJS dưới góc nhìn của một dev quèn
NPM - Node packages manager là hệ thống thư viện giúp chúng ta có thể xây dựng ứng dụng một cách nhanh chóng và dễ dàng hơn. Mặc dù NodeJS mới chỉ ra đời tới nay được hơn 10 năm, nhưng hệ thống thư viện hỗ trợ của chúng - npm nay đã có tới hơn 1,4 triệu packages, và con số này vẫn đang tăng lên chóng mặt (~804 packages/ngày ) theo số liệu của http://www.modulecounts.com/. Con số này thậm chí vượt trội so với những hệ thống thư viện của các framework lâu đời như nudget của ASP .NET, gems của Ruby on Rails,...

Một số package thông dụng nhất khi chúng ta tạo một server API với NodeJS có thể kể đến như express, mongoose (được coi như là relations mapping với MongoDB), Sequelize (Relation Mapping với các SQL database),... Chỉ với express cùng với 1 thư viện relation mapping thôi thì chúng ta hoàn toàn có thể build một RestfulAPI rất nhanh và dễ dàng rồi.

Sao NodeJS lại được ưa chuộng đến thế?

Một vài ưu điểm khiến em nó được ưa chuộng như vậy dưới kiến thức của mình:
  1. NodeJS là Javascript, tức là với NodeJS thì bây giờ lập trình viên FullStack chỉ cần làm việc với một ngôn ngữ. Hơn nữa, tính ổn định của Javascript qua các phiên bản ES5, ES6, rồi 7, 8 gì đó ngày càng hoàn thiện, ổn định và mang lại nhiều tính năng hơn cho lập trình viên.
  2. Cộng đồng cùng với hệ sinh thái Javascript cực kì lớn mạnh, thậm chí đang là cộng đồng lớn mạnh nhất theo khảo sát của stackoverflow.
  3. Các dự án phát triển theo mô hình Client Server (NodeJS đứng trong vài trò làm các services cung cấp APIs), NodeJS nó lại càng phù hợp hơn cho kiến trúc Microservices để đưa các bài toán lớn thành các bài toán nhỏ và có thể phát triển nhanh 1 dự án lớn, phát triển và quản lý nó dễ dàng.
  4. Các realtime services nó làm cũng tuyệt vời bởi các hệ thống realtime để hoạt động tức thời với các event được đưa ra và đó là đất diễn cho NodeJS vì nó có điểm mạnh là hỗ trợ Non-blocking.
  5. Hiệu năng của NodeJS cực kì phù hợp với các hệ thống phải xử lý nhiều request cùng một lúc. Với mô hình Non-blocking nó tiết kiệm cho chúng ta những khoản thời gian đáng kể thay vì request phải xếp hàng chờ đợi nhau như thời bao cấp.
  6. ...
Trên đây là những chia sẻ dựa trên kiến thức của mình, hi vọng nó sẽ giúp ích cho các bạn mới tiếp cận hoặc tìm hiểu về NodeJS

Getting Info...

إرسال تعليق

Chấp nhận Cookies
Chúng tôi cung cấp cookie trên trang web này để phân tích lưu lượng truy cập, ghi nhớ các tùy chọn của bạn và tối ưu hóa trải nghiệm của bạn.
Xem thêm
Oops!
Có vẻ như đã xảy ra sự cố với kết nối Internet của bạn. Vui lòng kết nối với internet và tải lại trang web.
AdBlock Detected!
Chúng tôi đã phát hiện ra rằng bạn đang sử dụng plugin chặn quảng cáo trong trình duyệt của mình.
Doanh thu chúng tôi kiếm được từ quảng cáo được sử dụng để quản lý trang web này, bạn vui lòng đưa trang web của chúng tôi vào white list trong plugin chặn quảng cáo của bạn.
Site is Blocked
Xin lỗi! Trang web không khả dụng ở quốc gia của bạn!