Node.js là gì? Những điều cần biết về Node.js – Kách Hay .Com đã tổng hợp thông tin từ nhiều nguồn, giúp bạn có góc nhìn đa chiều hơn. Nào chúng ta bắt đầu thôi
@thai
màn hình
24943
Đăng ngày 13/09/2018 20:31 7 phút đọc
2.4KCK
2
3
Những điều cần biết về nodejs
- báo cáo
- Thêm vào chuỗi của tôi
Bài đăng này đã không được cập nhật trong 4 năm
1. Nodejs.History
Node.js là một hệ thống phần mềm được thiết kế để viết các ứng dụng internet có thể mở rộng, đặc biệt là các máy chủ web. Chương trình được viết bằng JavaScript và sử dụng đầu vào/đầu ra không đồng bộ, hướng sự kiện để giảm thiểu chi phí hoạt động và tối đa hóa khả năng mở rộng của Node.j, bao gồm công cụ JavaScript V8 của Google, libUV và một số thư viện khác.
Node.js được Ryan Dahl tạo ra từ năm 2009 và được phát triển dưới sự bảo trợ của Joyent.
Mục tiêu ban đầu của Dahl là làm cho trang web có tính năng đẩy, giống như trong một số ứng dụng web như Gmail. Sau khi thử một số ngôn ngữ, Dahl quyết định chọn Javascript do API I/O chưa hoàn thiện. Điều này cho phép bạn xác định quy ước I/O không chặn, hướng sự kiện.
Một số môi trường tương tự được viết bằng các ngôn ngữ khác, bao gồm Twisted cho Python, Môi trường đối tượng Perl cho Perl, libevent cho C và EventMachine cho Ruby. Không giống như hầu hết các chương trình Javascript, Nodejs không chạy trên trình duyệt mà chạy trên máy chủ. Node.js sử dụng nhiều đặc tả từ CommonJS.[6] Nó cung cấp một môi trường REPL để thử nghiệm tương tác. (nguồn wiki)
2. Nodejs.Functions
- NodeJs không phải là ngôn ngữ, nó chỉ là môi trường để chạy javascript phía máy chủ. Vì vậy, NodeJs có tất cả các thuộc tính của Javascript.
- Javascript là một ngôn ngữ không đồng bộ. Do đó, Nodejs cũng xử lý không đồng bộ.
- Nodejs chạy đơn luồng. Tức là Node.js chạy trên một lõi CPU.
- Javascript là một ngôn ngữ hướng sự kiện.
3.Nodejs và xử lý bất đồng bộ
Đồng bộ: Nói dễ hiểu: Diễn ra theo trình tự. Một hành động không được bắt đầu cho đến khi hành động trước đó kết thúc.
Không đồng bộ: Không theo thứ tự, các hành động có thể xảy ra đồng thời hoặc ít, mặc dù các hành động bắt đầu nhưng không kết thúc theo thứ tự. Một hành động có thể bắt đầu (và thậm chí kết thúc) trước khi hoàn thành hành động trước đó. Do đó trong thời gian chờ kết quả trả về nó vẫn hoạt động nên cơ chế xử lý bất đồng bộ sẽ tối ưu hóa thời gian xử lý.
Để hiểu rõ hơn về xử lý bất đồng bộ, hãy xem xét ví dụ cụ thể sau:
console.log(“cau lenh 1”); setTimeout(function(){ console.log(“cau lenh 2”); },0); console.log(“cau lenh 3”); Đã sao chép ✔️
Hàm setTimeOut là một hàm không đồng bộ trong Javascript. Kết quả dự đoán là:
cau lenh 1 cau lenh 2 cau lenh 3 Đã sao chép ✔️
Nhưng thực tế là:
cau lenh 1 cau lenh 3 cau lenh 2 Đã sao chép ✔️
Tại sao lại có kết quả như vậy? Hãy xem mô hình sau:
Giải thích các định nghĩa:
Heap: là một vùng bộ nhớ dùng để chứa kết quả tạm thời cho việc thực hiện các chức năng trên ngăn xếp. Heap càng lớn thì khả năng tính toán càng cao.
Ngăn xếp là một vùng bộ nhớ đặc biệt trên chip máy tính để thực hiện các lệnh, đặc biệt là các chức năng. Một hàm chỉ là một nhóm các câu lệnh và một chương trình là một nhóm các hàm hoạt động cùng nhau. Mỗi khi một chức năng được gọi, nó sẽ được đẩy vào một hàng đợi đặc biệt gọi là ngăn xếp. Stack là một hàng đợi LIFO (Last In First Out), nghĩa là vào trước, ra sau. Một chức năng không bị xóa khỏi ngăn xếp cho đến khi nó hoàn thành và trả về.
js runtime engine là không gian thực thi js bao gồm heap và stack.
API web là nơi trình duyệt hiển thị các tác vụ.
Hàng đợi gọi lại là hàng đợi công việc FIFO (vào trước ra trước). Vào trước ra trước.
Vòng lặp sự kiện nên đọc ngăn xếp và hàng đợi sự kiện. Khi nó thấy ngăn xếp trống, nó chọn sự kiện đầu tiên trong hàng đợi sự kiện và trình xử lý (gọi lại hoặc trình nghe) được liên kết với sự kiện đó và đẩy nó vào ngăn xếp. Đặc điểm của việc thực thi hàm trong JS là nó chỉ dừng lại khi hàm trả về hoặc ném ra một ngoại lệ. Điều này có nghĩa là trong khi chức năng đang chạy, không có chức năng nào khác đang chạy và dữ liệu tạm thời của chức năng không bị chức năng khác sửa đổi hoặc dừng lại cho đến khi hoàn thành. Vì có một vòng lặp chạy mãi mãi và thực hiện Queue nên nó được gọi là vòng lặp sự kiện.
trong khi (queue.waitForMessage()) { queue. processNextMessage(); Đã sao chép ✔️
cơ chế hoạt động:
- Thứ nhất: các lệnh được thực hiện từ trên xuống dưới. Các lệnh được ném vào hàng đợi.
- Bước 2: Bây giờ ngăn xếp trống, vì vậy vòng lặp sự kiện nhận một tác vụ trong hàng đợi và đặt nó vào ngăn xếp. Tức là khi chúng được đẩy lên ngăn xếp và xử lý console.log(“cau lenh 1”) . và in ra: cau lenh 1
- Bước 3: Sau khi xử lý xong, Task 1 được lấy ra khỏi ngăn xếp . Và đối với task 2 trong là: setTimeout(function(){ console.log(“cau lenh 2”); },0);Bây giờ ta thấy hàm SetTimeout là một hàm trong web AIP dùng để thiết lập thời gian tính toán. do đó, nó được đưa vào API web để chờ. Nếu hàng đợi trống, nó sẽ được trả về hàng đợi. Bước 4: Hoàn thành task 3 tương tự như task 1. In ra cau lenh 3Bước 5: Lúc này hàng đợi rỗng nên task 2 được xếp vào hàng đợi và đẩy lên ngăn xếp để thực hiện.
Kết luận
trên là cơ chế hoạt động của các process trong javascript cũng như nodejs. Dù là chức năng đồng bộ hay không đồng bộ thì cơ chế hoạt động nhìn chung là nhất quán và giống cơ chế trên.
thẩm quyền giải quyết
https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
https://viblo.asia/p/co-che-bat-dong-bo-trong-javascript-jvElaO1zKkw
https://viettut.com/lap-trinh/javascripts/event-loop-la-gi-va-hoat-dong-the-nao/
Đã đăng ký Bản quyền
- báo cáo
- Thêm vào chuỗi của tôi
Video [Kách chơi] Node.js là gì? Những điều cần biết về Node.js mới nhất 2023
Cảm ơn các bạn đã theo dõi bài viết [Kách chơi] Node.js là gì? Những điều cần biết về Node.js mới nhất 2023! Kách Hay .Com hi vọng đã mang đến thông tin hữu ích cho bạn. Xem thêm các bài viết cùng danh mục Hỏi đáp. Mọi ý kiến thắc mắc hãy comment bên dưới, chúng tôi sẽ phản hồi sớm nhất có thể. Kách Hay .Com chúc bạn ngày vui vẻ
“