Trong quá trình phát triển web, Node.Js được xem như là một thành phần quan trọng trong việc xây dựng và phát triển các ứng dụng chạy trên website. Chắc hẳn Node.Js phải có những thuộc tính ưu việt để có thể trở thành sự lựa chọn hàng đầu cho các developer hiện nay. Hãy cùng iViettech tìm hiểu nhé!
Node.Js là gì?
Node.js là môi trường runtime cho JavaScript. Mọi ngôn ngữ đều có một thời gian chạy (giai đoạn chạy của một chương trình). Ruby, Java, Python, mọi ngôn ngữ khác đều có thời gian chạy.
JavaScript là ngôn ngữ được sử dụng nhiều nhất và nó không thực sự có thời gian chạy trên máy tính. JavaScript chỉ có thể chạy trên trình duyệt vì trình duyệt là phần mềm duy nhất có thể xử lý mã JS.
Vì vậy, điều đó đã hạn chế các nhà phát triển JavaScript trong việc viết mã JavaScript và làm điều gì đó mạnh mẽ hơn mà máy tính có thể làm được, nhưng trình duyệt không thể làm được. Đó là những gì Node.Js mang đến cho chúng ta.
Node.Js là thời gian chạy cho JavaScript để nó có thể chạy mã JavaScript trên máy. Node.Js có thể được cài đặt trên bất kỳ máy nào, có thể là Linux, MAC, hay Windows.
Node.Js có gì đặc biệt?
Node.Js tuy không phải là công nghệ đầu tiên dùng để tạo runtime chạy JavaScript trên máy, nhưng nó đã vươn lên và vượt qua được các công nghệ truyền thống trong lĩnh vực phát triển ứng dụng web. Lý do khiến Node.Js thành công là loại kỹ thuật mà nó triển khai trong việc xử lý code JavaScript thực sự nhanh và cực kỳ hiệu quả.
Thuộc tính của Node.Js:
– Non-blocking (Không đồng bộ)
– Event Driven (Event Loop)
– Single-Threaded
Với thuộc tính non-blocking, cách Node.Js chạy code theo mặc định là code không đồng bộ. Thứ hai, JavaScript được điều khiển theo sự kiện. Bên cạnh đó, nó có một khái niệm về vòng lặp sự kiện mà qua đó nó xử lý code. Và Node.Js là đơn luồng.
1. Non-blocking (Không đồng bộ)
Dưới đây là một ví dụ cho thuộc tính non-blocking của Node.Js:
getDataFromDatabase(‘tên’, function(output){
console.log(output);
});
console.log(‘Xin chào’);
Kiểu mã hóa không đồng bộ là chúng ta xác định cùng một hàm lấy dữ liệu từ cơ sở dữ liệu getDataFromDatabase truyền trong cùng một tham số nhưng chúng ta sẽ truyền một tham số khác là hàm gọi lại (call back). Vì vậy, cách thức hoạt động của đoạn code trên là nó sẽ chuyển đến phần này getDataFromDatabase, sau đó lấy dữ liệu và trong khi quá trình truy vấn cơ sở dữ liệu đang diễn ra, thường mất vài giây và nó sẽ in ra ‘Xin chào’ hoặc bất kỳ thông tin nào ở đó.
Nó sẽ không đợi truy vấn cơ sở dữ liệu kết thúc, nó sẽ chuyển sang dòng tiếp theo. Vì vậy, theo thiết kế thì nó không chặn và không đồng bộ, điều đó có nghĩa là mọi thứ đang diễn ra cùng nhau.
Lấy một ví dụ thực tế để bạn dễ hiểu: Tại một nhà hàng, sau khi người phục vụ nhận yêu cầu món ăn từ khách hàng, anh ta đi đến chỗ đầu bếp và ngồi đợi đầu bếp chế biến. Khi món ăn đã sẵn sàng, người phục vụ mới lấy món ăn và phục vụ cho khách hàng đang chờ. Trường hợp này là cách làm việc đồng bộ.
Tuy nhiên, cách làm không đồng bộ là cách thông minh hơn. Trong khi đầu bếp đang nấu ăn, người phục vụ rảnh rỗi và không phải làm gì nhưng trong thời gian đó, anh ta có thể phục vụ những khách hàng khác hoặc làm một số nhiệm vụ khác của một người phục vụ. Như vậy, phương pháp không đồng bộ giúp tối đa hóa việc sử dụng bộ xử lý, nó rẻ hơn và hiệu quả hơn đối với bộ xử lý máy tính.
2. Event Driven (Event Loop)
Một điều quan trọng khác về Node.Js là nó được điều khiển theo sự kiện và nó có một khái niệm gọi là vòng lặp sự kiện (event loop). Node.Js hoạt động trong một luồng duy nhất. Nó có một bộ xử lý duy nhất. Trong một danh sách các nhiệm vụ, các nhiệm vụ sẽ được thực hiện theo trình tự, khi nhiệm vụ đầu tiên hoàn thành, nhiệm vụ thứ hai sẽ bắt đầu, khi nhiệm vụ thứ hai hoàn thành, nhiệm vụ thứ ba sẽ bắt đầu và khi nhiệm vụ thứ ba kết thúc, nhiệm vụ thứ tư sẽ xảy ra, v.v. Nó sẽ đi trong một tải.
Nếu có nhiệm vụ mới, nó sẽ được thêm vào đầu nhiệm vụ và nó sẽ là nhiệm vụ 5, v.v.
Khi nó có tất cả các nhiệm vụ, bất cứ khi nào nó có một chồng nhiệm vụ khác nhau hoặc thậm chí là một nhiệm vụ duy nhất, Nó sẽ bắt đầu thực hiện nó. Nhiệm vụ 1 từ góc độ máy là lưu trữ một tệp, hệ thống đó sẽ được thực hiện bởi hệ thống tệp. Nhiệm vụ có thể là lưu trữ thông tin trong cơ sở dữ liệu hoặc truy xuất thông tin từ cơ sở dữ liệu. Hoặc đơn giản nó có thể là một yêu cầu máy chủ.
Khi nó đã gửi yêu cầu tới yêu cầu web, yêu cầu thứ hai tới cơ sở dữ liệu, yêu cầu thứ ba tới hệ thống tệp, nó thực sự không còn nhiều việc phải làm. Sẽ không đợi hệ thống tệp lưu thành công các tệp hoặc cơ sở dữ liệu để truy vấn thành công các nội dung hoặc yêu cầu web hoàn tất.
Vì vậy, khi Callback quay trở lại, khi hệ thống tập tin đã hoàn thành nhiệm vụ. Các kết quả nhận được sẽ được xếp chồng lên nhau ở trên cùng của vòng lặp và bất kỳ thao tác in nào cần diễn ra, nó sẽ diễn ra.
Bài post này đã giúp bạn nhận thấy được những điểm đặc biệt của công nghệ Node.Js. Nếu bạn có nhu cầu trang bị kỹ năng lập trình Node.Js để làm việc trong ngành phần mềm thì hãy inbox iViettech ngay để được tư vấn nhé!
Xem thông tin chi tiết về khóa học tại: Khóa học lập trình Node.js chuyên nghiệp tại Đà Nẵng – iViettech – iViettech
——————————–
Liên hệ ngay với chúng tôi tại:
🏫 Địa chỉ: 92 Quang Trung, Hải Châu, TP. Đà Nẵng
☎️ Hotline: 02363 888 279