Node.js là gì và tại sao tôi nên học lập trình Node.js?

11 tháng 03, 2021 – 15186 lượt xem

Bài viết được dịch từ trang web MakeUseOf

Node.js hiện đang được những mạng xã hội lớn trên thế giới sử dụng.JavaScript chỉ là một ngôn ngữ lập trình phía client chạy trên trình duyệt, phải không? Nhưng điều này không còn đúng chút nào nữa. Node.js là một cách để 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 web, thì bạn nên tìm hiểu đôi chút về Node.js và lý do tại sao nó đang tạo ra một làn sóng trong cộng đồng.

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 Chrome. Bình thường thì bạn cũng có thể tải bộ V8 và nhúng nó vào bất cứ thứ gì; Node.js làm điều đó đối với các web server. JavaScript suy cho cùng cũng chỉ là một ngôn ngữ – vậy thì không có lý do gì để nói nó 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 được.

Trong một thiên nhiên và môi trường server nổi bật LAMP ( Linux-Apache-MySQL-PHP ), bạn có một web server là Apache hoặc NGINX nằm dưới, cùng với PHP chạy trên nó. Mỗi một liên kết tới server sẽ sinh ra một thread mới, và điều này khiến ứng dụng nhanh gọn trở nên lừ đừ hoặc quá tải – cách duy nhất để tương hỗ nhiều người dùng hơn là bằng cách bổ trợ thêm nhiều sever. Đơn giản là nó không có năng lực lan rộng ra tốt. Nhưng với Node. js thì điều này không phải là yếu tố. Không có một sever Apache lắng nghe những liên kết tới và trả về mã trạng thái HTTP – bạn sẽ phải tự quản lý kiến trúc lõi của sever đó. May mắn thay, có một số ít module giúp thực thi điều này được thuận tiện hơn, nhưng việc làm này vẫn gây cho bạn một chút ít khó khăn vất vả khi mới mở màn. Tuy nhiên, hiệu quả thu được là một ứng dụng web có vận tốc thực thi cao .Klout – Một ứng dụng web thống kê các hoạt động xã hội được xây dựng dựa trên Node.js vì ưu điểm tốc độ thực thi caoKlout – Một ứng dụng web thống kê các hoạt động xã hội
được xây dựng dựa trên Node.js vì ưu điểm tốc độ thực thi cao

JavaScript là một ngôn ngữ dựa trên sự kiện, vì vậy bất cứ thứ 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 sinh ra một sự kiện; dữ liệu nhận được từ một upload form sinh ra một sự kiện data-received; việc truy vấn dữ liệu từ database cũng 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 truy cập cùng lúc. Node.js đóng vai trò của server – Apache – và thông dịch mã ứng dụng chạy trên nó. Giống như Apache, có rất nhiều module (thư viện) có thể được cài đặt để bổ sung thêm các đặc trưng và chức năng – như lưu trữ dữ liệu, hỗ trợ file Zip, đăng nhập bằng Facebook, hoặc các cổng thanh toán. Dĩ nhiên, nó không có nhiều thư viện như PHP, nhưng Node.js vẫn đang ở trong giai đoạn ban đầu và có một cộng đồng rất mạnh mẽ ở đằng sau nó. 

Một khái niệm cốt lõi của Node. js đó là những function bất đồng bộ ( asynchronous functions ) – thế cho nên về cơ bản thì mọi thứ chạy trên nền tảng này. Với hầu hết những ngôn từ ngữ cảnh sever, chương trình phải đợi mỗi function thực thi xong trước khi hoàn toàn có thể liên tục chạy tiếp. Với Node. js, bạn xác lập những function sẽ chạy để hoàn thành xong một tác vụ nào đó, trong khi phần còn lại của ứng dụng vẫn chạy đồng thời. Nó là một chủ đề phức tạp mà tôi sẽ không đi vào quá sâu trong bài viết này, nhưng đó là một trong những đặc trưng tiêu biểu vượt trội của Node. js, thế cho nên việc nắm vững nó là điều rất là quan trọng. Tuy nhiên tôi sẽ đưa ra một ví dụ Hello World để mang lại cho bạn một cái nhìn thoáng qua một vài những khái niệm này .

var http = require("http");   
http.createServer(function (request, response) {   
response.writeHead(200, {   'Content-Type': 'text/plain'   });   
response.write('Hello World!');   
response.end();  }).listen(8080);  
console.log("Server running!");

Hãy thử phân tích đoạn code trên. Đầu tiên, chúng ta including module http vào trong project. Sau đó chúng ta tạo ra một server và truyền vào một function anonymous như một tham số – function này sẽ được gọi khi mỗi kết nối mới sinh ra. Nó có hai đối số – request, bao gồm các tham số yêu cầu từ người dùng; và response, cái chúng ta sử dụng để gửi kết quả trả về. Tiếp đến, chúng ta sử dụng đối tượng response đó để write một header tới người dùng với mã HTTP response là 200(“ok”) và content type, viết ra một message “Hello World!”, và kết thúc response đó. 

Cuối cùng, chúng ta nói server lắng nghe các request đến trên cổng 8080, và xuất ra một message trên cửa sổ console (command line) để báo cho chúng ta biết rằng nó đang hoạt động. Nếu bạn muốn thực sự làm thử, thì hãy lưu đoạn code trên thành file test.js, tải bộ cài đặt Node.js về, và từ cửa sổ command line chạy dòng lệnh sau –

node test.js

Sau đó mở trình duyệt lên và truy vấn vào địa chỉ localhost : 8080 để xem ứng dụng đầu tay của bạn ! Lúc này bạn sẽ có một chút ít ý niệm về cách làm thế nào mà hàng loạt quy trình bất đồng bộ ( asynchronous ) hoạt động giải trí, đi cùng với những quy mô hướng sự kiện. Nếu bạn là một người mới tiếp xúc với JavaScript, thì khái niệm truyền những function như thể một đối số của function khác hoàn toàn có thể có một chút ít lạ lẫm .

Tham khảo khoá Lộ trình NodeJS – ReactJS Full Stack : https://nodejs.techmaster.vn/

Tại sao lại sử dụng Node.js?

Đầu tiên là ưu điểm về vận tốc thực thi và năng lực lan rộng ra. Node. js có vận tốc rất nhanh. Đó là một nhu yếu khá quan trọng khi bạn là một startup đang nỗ lực tạo ra một mẫu sản phẩm lớn và muốn bảo vệ hoàn toàn có thể lan rộng ra nhanh gọn, cung ứng được một lượng lớn người dùng khi website của bạn tăng trưởng lên .Node. js hoàn toàn có thể giải quyết và xử lý hàng ngàn liên kết đồng thời trong khi PHP sẽ chỉ có nước sụp đổ. Bên cạnh những quyền lợi về vận tốc thực thi và năng lực lan rộng ra, hoàn toàn có thể bạn cũng đã biết một chút ít về JavaScript, vì thế tại sao lại phải phiền phức để học thêm về một ngôn từ lập trình trọn vẹn mới như PHP ? Và sau đó bạn sẽ có một sự phấn khích khi học về một cái gì đó mới lạ và gần như chưa được tò mò. Bạn còn nhớ cái cảm xúc khi mà một cái gì đó mới Open và sau đó trở thành phổ cập khắp mọi nơi mà bạn hụt hẫng đã 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 đáng tiếc như vậy lần này nữa. Node. js đang ngày càng trở nên vững mạnh hơn .

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 host không phải là điều dễ dàng. Nếu bạn có một web hosting xài chung, bạn không thể đơn giản tải lên một ứng dụng Node.js và mong chờ nó hoạt động tốt. VPS và dedicated server là một sự lựa chọn tốt hơn – bạn có thể cài đặt Node.js trên chúng. 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ể hoàn toàn 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ễ cài đặt Node.js chạy cục bộ trên máy tính của bạn 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à một 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 từ đầu (mặc dù có rất nhiều framework ngoài kia để giúp đỡ bạn với nhiều đặc trưng phổ biến). 

Một điểm yếu kém lớn khác của Node. js đó là nó vẫn đang trong quy trình tiến độ tăng trưởng bắt đầu, điều này có nghĩa là 1 số ít đặc trưng sẽ đổi khác trong quy trình tăng trưởng tiếp theo. Trong trong thực tiễn, nếu bạn đọc những tài liệu đi kèm, thì nó gồm có một chỉ số không thay đổi ( stability index ), chỉ số này cho thấy mức độ rủi ro đáng tiếc khi bạn sử dụng những đặc trưng hiện có .

Chỉ số ổn định của các module trong Node.js

Bạn biết đấy – sẽ chẳng bao giờ có thời điểm nào tuyệt vời hơn để trở thành một nhà phát triển web. 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ó phải bạn đang nghĩ rằng mình nên học Node.js? Tốt lắm. Hãy tiến lên phía trước và tạo ra một sản phẩm Twitter tiếp theo! Có thể bạn cũng muốn có một nền tảng kiến thức tốt về thư viện JavaScript jQuery để xây dựng phần front end.

Về tác giả bài viết:

James là một lập trình viên có nhiều năm kinh nghiệm trong lĩnh vực phát triển phần mềm, đồng thời anh cũng là một tín đồ của game và các kỷ lục trên Technophilia. Bạn có thể liên hệ với anh qua email jamesbruce[at]makeuseof.com

tin tức khoá học NodeJS – ReactJS Full Stack 8 tháng : https://nodejs.techmaster.vn/

Học phí lớp sáng giảm ngay 10% – 15%- 20% khi đăng kí 1, nhóm 2, nhóm 3 học viên

Liên hệ tư vấn Ms Hương 0382416368 ( zalo )Lịch khai giảng dự kiến :