Node.js là gì? Tại sao bạn nên học lập trình Node.js?
Node.js là một ngôn ngữ để chạy JavaScript trên server; nhưng nó còn hơn thế nữa. Nếu bạn là một người có hứng thú trong việc phát triển website, thì bạn nên tìm hiểu đôi chút về Node.js và lý do tại sao ngôn ngữ này đang tạo ra một làn sóng trong cộng đồng.
Table of Contents
1. Node.js là gì?
Node.js là một nền tảng chạy trên môi trường V8 JavaScript runtime – một trình thông dịch JavaScript cực nhanh chạy trên trình duyệt web Chrome. Bình thường thì bạn cũng có thể tải bộ V8 và nhúng nó vào bất kỳ chương trình nào; Node.js làm điều đó đối với các web server. JavaScript cũng chỉ là một ngôn ngữ – vậy thì không có lý do gì để nói ngôn ngữ này không thể sử dụng trên môi trường server tốt như là trong trình duyệt của người dùng.
Trong môi trường server điển hình LAMP (Linux-Apache-MySQL-PHP), bạn có một web server là Apache hoặc NGINX, cùng với PHP chạy trên nó. Mỗi một kết nối tới server sẽ sinh ra một thread mới, và điều này chắc chắn sẽ khiến ứng dụng nhanh chóng trở nên chậm chạp hoặc quá tải – cách duy nhất để hỗ trợ nhiều người dùng hơn là bổ sung thêm nhiều máy chủ. Đơn giản là nó không có khả năng mở rộng tốt như các ngôn ngữ khác. Nhưng với Node.js thì không phải là vấn đề. Không có máy chủ Apache lắng nghe các kết nối tới và trả về mã trạng thái HTTP – bạn sẽ phải tự quản lý kiến trúc của chính máy chủ đó. May mắn thay, có một số module giúp thực hiện điều này một cách dễ dàng hơn, nhưng công việc này sẽ gây cho bạn một chút khó khăn khi mới bắt đầu. Tuy nhiên, kết quả thu được chính là một ứng dụng web có tốc độ thực thi cao.
JavaScript là một ngôn ngữ lập trình dựa trên sự kiện, vì vậy bất cứ điều gì xảy ra trên server đều tạo ra một sự kiện non-blocking. Mỗi kết nối mới sẽ sinh ra một sự kiện; dữ liệu nhận được từ upload form sinh ra một sự kiện data-received; việc truy vấn dữ liệu từ database cũng sẽ sinh ra một sự kiện. Trong thực tế, điều này có nghĩa là một trang web Node.js sẽ chẳng bao giờ bị khóa (lock up) và có thể hỗ trợ cho hàng chục nghìn user có thể truy cập cùng lúc. Node.js đóng vai trò của server – Apache – và thông dịch lại các mã ứng dụng chạy trên nó. Giống như Apache, có rất nhiều module (thư viện) được cài đặt để bổ sung thêm các đặc trưng và chức năng – như việc lưu trữ dữ liệu dễ dàng, hỗ trợ file Zip, đăng nhập bằng Facebook, hoặc các cổng thanh toán. Dĩ nhiên, không có nhiều thư viện như PHP, nhưng Node.js vẫn đang có một cộng đồng rất mạnh mẽ.
Một khái niệm cốt lõi của Node.js đó là các function không đồng bộ (asynchronous functions). Với hầu hết các ngôn ngữ Java máy chủ, chương trình phải đợi mỗi function thực thi xong trước khi tiếp tục chạy. Với Node.js, bạn xác định các function sẽ chạy để hoàn thành được một tác vụ nào đó, trong khi phần còn lại của ứng dụng vẫn chạy song song. Vì vậy việc nắm vững Node.js là điều hết sức quan trọng.
2. Tại sao lại sử dụng Node.js?
Đầu tiên là ưu điểm về tốc độ thực thi và khả năng mở rộng của ngôn ngữ. Node.js có tốc độ chạy 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 và muốn đảm bảo có thể mở rộng một cách nhanh chóng, đáp ứng được lượng lớn người dùng cùng một lúc khi sử dụng trang web.
Node.js có thể xử lý hàng ngàn kết nối đồng thời trong khi PHP có khả năng sụp đổ. Bên cạnh các lợi ích về tốc độ thực thi và khả năng mở rộng của ngôn ngữ, nếu bạn cũng biết một chút về JavaScript, vì vậy tại sao lại cảm thấy phiền khi học thêm về một ngôn ngữ lập trình hoàn toàn mới như PHP? Và sau đó bạn sẽ cảm thấy thích thú khi học về một cái gì đó mới mẻ và gần như chưa được khám phá. Bạn còn nhớ cái cảm giác khi tiếp cận với cái mới và sau đó trở thành phổ biến khắp mọi nơi mà bạn hối tiếc đã không học về nó sớm hơn, và mãi mãi chỉ là người đến sau? Đừng phạm phải sai lầm như vậy, Node.js đã và đang ngày càng trở nên lớn mạnh hơn.
3. Nhược điểm
Giống như hầu hết các công nghệ mới, việc triển khai Node.js trên máy chủ không phải là điều dễ dàng. Nếu bạn có một web hosting chung, bạn không thể đơn giản tải lên một ứng dụng Node.js và mong chờ được hoạt động tốt. Thậm chí dễ hơn là sử dụng một dịch vụ có khả năng mở rộng như là Heroku, và bạn có thể an tâm để phát triển trang web của mình trên đó – bạn chỉ cần trả tiền khi cần thêm nhiều tài nguyên hơn.
Mặt khác, chúng ta rất dễ dàng để cài đặt Node.js chạy cục bộ trên máy tính và sử dụng các hệ điều hành như Windows, Mac hoặc Linux và bắt đầu phát triển ứng dụng ngay lập tức – chỉ việc tải phiên bản Node.js tương ứng tại đây. Một điều quan trọng nên chú ý là Node.js không chỉ đơn giản là sự thay thế cho Apache – các ứng dụng web đang tồn tại sẽ không có khả năng tương thích, và bạn sẽ làm việc hiệu quả với những ứng dụng phát triển ngay từ đầu.
Một nhược điểm lớn của Node.js đó là ngôn ngữ này 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.
>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:
>>> Xem thêm bài viết:
Đại học trực tuyến? Tại sao nên chọn học đại học trực tuyến thay vì đại học offline?
5 điều có thể bạn chưa biết về học lập trình trực tuyến FUNiX
Review khóa học trực tuyến FUNiX FPT đang được nhiều bạn trẻ lựa chọn
FUNiX đào tạo lập trình trực tuyến cung cấp nhân sự tập đoàn FPT
5 Điểm đáng chú ý tại khóa học lập trình trực tuyến FPT – FUNiX
Lương Thuận – dịch từ MakeUseOf
Bình luận (0
)