NỘI DUNG BÀI VIẾT
Giới thiệu
- Node.js là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên JavaScript Runtime của Chrome. Chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng.
- Node.js được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ.
Dù sao thì chúng ta cũng nên biết qua một chút chút lịch sử của thứ mà chúng ta đang học một chút chứ nhỉ?
- Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.
- Nó tạo ra được các ứng dụng có tốc độ xử lý nhanh, real-time thời gian thực.
- Node.js áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ hoặc tạo ra các dự án Startup nhanh nhất có thể.
Phân biệt Node.js và JavaScript
Về bản chất, Node.js chính là ngôn ngữ JavaScript. Tuy nhiên, điểm khác của Node.js khác với JavaScript là các chương trình viết bằng Node.js sẽ được chạy trên môi trường máy chủ. Ngược lại các chương trình JavaScript thường sẽ được chạy trên môi trường trình duyệt.
Những kết luận sai lầm về Node.js
- Thứ nhất, Node.js là một nền tảng (platform), không phải Web Framework, cũng không phải ngôn ngữ lập trình.
- Thứ hai, Node.js không hỗ trợ đa luồng, nó là một máy chủ đơn luồng.
- Và một điều nữa, Node.js không dành cho người mới tinh mà chưa biết gì về lập trình. Vì như đã nói ở trên, Nodejs không phải là ngôn ngữ lập trình. Để học được Nodejs thì bạn cần phải biết về Javascript, kỹ thuật lập trình, một số giao thức…
Ứng dụng của Node.js
Rõ ràng, không phải cứ hot và mới là Node.js làm gì cũng tốt. Ví dụ như một ứng dụng cần tính ổn định cao, logic phức tạp thì các ngôn ngữ PHP hay Ruby… vẫn là sự lựa chọn tốt hơn. Còn dưới đây là những ứng dụng có thể và nên viết bằng Nodejs:
- 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.
Tại sao lại sử dụng Node.js
Về tốc độ
- Đầu tiên là ưu điểm về tốc độ thực thi và khả năng mở rộng. Node.js có tốc độ rất nhanh.
- Đó là một yêu cầu khá quan trọng khi bạn là một startup đang cố gắng tạo ra một sản phẩm lớn. Và muốn đảm bảo có thể mở rộng nhanh chóng. Đáp ứng được một lượng lớn người dùng khi trang web của bạn phát triển lên.
- js có thể xử lý hàng ngàn kết nối đồng thời trong khi PHP sẽ chỉ có nước sụp đổ.
Về JSON API
- Bởi lẽ REST/JSON APIs gọn nhẹ là điều khiến Node.JS 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.
- Ứ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ì Node.JS sẽ là sự lựa chọn của bạn.
- Shelling tools Unix
- Node.JS sẽ tận dụng tối đa Unix để hoạt động. Tức là Node.JS 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.
- Streamming 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, Node.JS 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
- Ứng dụng Web thời gian 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 Node.js
Tốn tài nguyên
- Giống như hầu hết các công nghệ mới, việc triển khai Node.js trên host không phải là điều dễ dàng. Node.js đó là nó vẫn đang trong giai đoạn phát triển ban đầu, điều này có nghĩa là một số đặc trưng sẽ thay đổi trong quá trình phát triển tiếp theo.
- Ứ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)!
Node.js và các ngôn ngữ khác
- Node.JS, 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 Node.JS sẽ hơn PHP,Ruby,Python… ở thời điểm này. Nhưng với Node.JS 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, opensource…) 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ờ.
- NoSQL + Nodejs + Noob !
- Với Node.JS, NoSQL thì là sự kết hợp hoàn hảo nhưng với các web service và trao đổi dữ liệu mở, thì việc tạo ra một ứng dụng tuyệt vời chưa bao giờ dễ như lúc này.
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.