Q/A NodeJS là cái gì?
Giải thích dễ hiểu về NodeJS dưới dạng hỏi đáp, giúp người mới làm quen với các khái niệm như JavaScript engine, event-driven, non-blocking I/O và package ecosystem.

NodeJS là gì?
Anh ui, NodeJS là cái gì vậy anh?
Định nghĩa của NodeJS trên trang chủ nè:
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven , non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem , npm, is the largest ecosystem of open source libraries in the world.
Đù, Một cái đinh nghĩa thui mà cả tá thuật ngữ chuyên ngành, em hem hiểu gì hết trơn
-
Javascript engine là cái quần gì?
-
event-driven là quần gì?
-
non-blocking nữa, vậy blocking là sao?
-
I/O model ???
-
package ecosystem là seo?
Javascript chạy như thế nào?
Chắc hẳng chú thường nghe nói Javascript chạy trên trình duyệt web ( browser ) đúng không?
Thì trình duyệt web nó cũng là một phèn mìm ( phần mềm ) thui, có gì đâu.
Giống như Microsoft Word để gõ văn bản vậy đó. Nhưng mà trình duyệt nào cũng vậy, để chạy được thì cần phải có 3 chương trình con trong nó. Nếu coi trình duyệt như một ông giám đốc thì cần có 3 thằng nhân viên:
-
DOM interpreter: thằng này để dịch HTML sang mã máy
-
CSS interpreter: thằng này để địch CSS sang mã máy
-
Javascript Engine: thằng này để dịch Javascript sang mã máy
Tại sao cần phải dịch?
Máy tính nó như người nguyên thủy sống giữa thời hiện đại vậy đó, nó chỉ hiểu ngôn ngữ cực thấp là
Binary code ( mã máy ) là 0 với 1 thôi. Chú có muốn viết code giống này không? Ăn rồi ngồi bấm lỗ 0 với 1 thôi nhé:
Chu choa mẹ ơi, nhìn cool vl anh à, em cũng muốn học binary code quá
Ừa, chú có thể vào đây học viết binary code để tặng gấu nè
Em làm gì có gấu, mà em hiểu sơ sơ rồi, tức là trình duyệt nó muốn chạy một trang web thì trình duyệt đó cần 3 phần mềm dịch bên trong nó để dịch code sang mã máy đúng không?
Chuẩn
À, hèn gì học lập trình web là phải học HTML, CSS với Javascript. Ủa vậy thì Chrome, Firefox, IE nó khác nhau thế nào?
Thì nó xài Javasript Engine khác nhau.
Mozilla
Spidermonkey
Chrome
V8
Safari
JavaScriptCore ( hay gọi là Nitro )
IE and Edge
Chakra
_ Đù gì tùm lum vậy, em chỉ muốn biết NodeJS là gì thôi mà?_
Thì NodeJS xài V8 engine đó, hem thấy hả?
_ Nhưng trình duyệt mới cần Javascript Engine chứ, NodeJS cần mẹ gì?_
Thì NodeJS dùng để viết web server đúng không, mà Javascript chạy được khi có Javascript Engine thôi, nên mới cần NodeJS.
Nhưng mà web server là gì?
Bây giờ máy tính của chú muốn lên Facebook được đúng không? Thì phải gõ vô trình duyệt web là
facebook.com. Ok chưa? Thực ra facebook.com là tên miền thôi, nó sẻ trỏ qua địa chỉ IP này 31.13.95.36
_ Khoan, sao anh biết biết địa chỉ IP của Facebook gê vậy?_
Dễ ẹt, vô Terminal ( máy Mac ) hoặc Command Prompt ( Windows ) gõ :
ping facebook.com
Nó sẽ ra địa chỉ thôi:
Sẽ có một cái máy tính khác đặt ở bên Mỹ ( ví dụ thôi chứ không biết nó đặt ở đâu nha ) có địa chỉ IP này.
Và giả sử máy tính hiện tại của chú có IP là 69.96.69.96 nha, thì khi chú truy cập đến facebook.com sẽ nhận kết quả trả về, người ta gọi đó là mô hình client - server:
Ví dụ, khi yêu cầu vào đường dẫn facebook.com thì web server nó trả về trang newsfeed
Tức là cái web server cùi bắp nhất phải làm những được việc sau:
-
Giao tiếp trên Internet
-
Nhận request là gửi response cho client
-
Kết nối với database
-
Quản lý FileFile
-
Xử lý nhiều request cùng lúc từ users
-
vv
Đó là lý do NodeJS ra đời.
_ Ừa, tạm hiểu, nhưng em vẫn không hiểu tại sao NodeJS xài V8 engine làm gì?_
Ok, ta vô trang chủ V8 engine xem nó là gì nhá:
V8 is Google's open source JavaScript engine.
V8 implements ECMAScript as specified in ECMA-262.
V8 is written in C++ and is used in Google Chrome, the open source browser from Google.
V8 can run standalone, or can be embedded into any C++ application.
Để ý câu cuối là can be embedded into any C++ nha. Tức là NodeJS là một library lớn hơn nhưng trong đó có xài V8 engine. Mục đích là để tạo nên một web server có những tính năng như: Nhận request là gửi response cho client, vv ( đã nói ở trên ) mà vẫn sử dụng Javascript chứ không phải C++ hay Python.
_ A, thì ra là vậy_
Đó vậy là đã hiểu ý đầu " Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine" rồi đúng không.
Vậy là còn:
-
event-driven là quần gì?
-
non-blocking nữa, vậy blocking là sao?
-
I/O model ???
-
package ecosystem là seo?
Ừa, vậy event-driven là gì vậy anh?
Related Posts
Discover more content you might enjoy

English Course Challenge in 2 weeks - Day 12: Kinh nghiệm quay khoá học
Bài viết chia sẻ kinh nghiệm quay khóa học tiếng Anh về Bubble.io, bao gồm việc lựa chọn phần mềm Screen.Studio để quay màn hình và tự động tạo phụ đề, những bài học từ việc đặt mục tiêu và xác định đối tượng học viên trước khi chọn nội dung, cũng như lợi ích của việc thử thách bản thân để vượt qua nỗi sợ và hoàn thành dự định. Tác giả cũng giới thiệu khóa học 'Build your first web app in Bubble for beginners' dành cho người mới bắt đầu.

English Course Challenge in 2 weeks - Day 7: Fine-tuning ChatGPT là gì?
Bài viết chia sẻ tiến trình ngày thứ 7 trong thử thách tạo khóa học tiếng Anh trong 2 tuần. Tác giả giới thiệu về Fine-tuning ChatGPT, một tính năng cho phép tạo phiên bản ChatGPT tùy chỉnh dựa trên dữ liệu cung cấp, đặc biệt hữu ích cho chatbot hỗ trợ khách hàng. Bài viết cũng thảo luận về việc điều chỉnh hướng phát triển ứng dụng demo và khóa học, cùng với những khó khăn khi sử dụng API của OpenAI tại Việt Nam.

English Course Challenge in 2 weeks - Day 2: Tiềm năng của Prompt Engineering
Bài viết chia sẻ về việc phát triển ứng dụng SaaS AI demo cho khóa học Bubble, tập trung vào Prompt Engineering - kỹ thuật viết prompt hiệu quả cho AI. Tác giả giới thiệu cấu trúc prompt chuẩn gồm 6 phần: Persona, Context, Task, Format, Examplar và Tone, đồng thời trình bày ý tưởng và mockup cho ứng dụng hỗ trợ người dùng viết prompt tốt hơn, giải quyết vấn đề nhiều người gặp phải khi sử dụng AI.

Đối thoại với AI: Generative AI (AI tạo sinh) và những điều cần biết
Bài viết dạng hỏi đáp toàn diện về AI tạo sinh, bao gồm kỹ thuật viết prompt hiệu quả, cách kiếm tiền từ AI, các nền tảng thay thế Claude AI, chi phí huấn luyện mô hình lớn, và các khái niệm quan trọng như BERT, mô hình tiền huấn luyện cùng những vấn đề đạo đức liên quan.

Kiếm tiền thụ động với crypto staking
Bài viết giới thiệu tổng quan về crypto staking - phương pháp kiếm tiền thụ động trong thị trường tiền điện tử. Tác giả phân tích cơ chế hoạt động của staking, so sánh với gửi tiết kiệm ngân hàng, ưu nhược điểm, các loại staking phổ biến như Ethereum và Solana, cùng với các lựa chọn staking thông qua sàn giao dịch tập trung hoặc phi tập trung.

Day 1 - Profitable MVP in 30 Days - Tìm kiếm & đánh giá ý tưởng
Bài viết ngày đầu tiên của thử thách 30 ngày xây dựng MVP có lợi nhuận, tập trung vào việc tìm kiếm và đánh giá ý tưởng. Tác giả chia sẻ cách tìm ý tưởng từ vấn đề cá nhân, phân tích ưu nhược điểm của phương pháp này, và giới thiệu ba ý tưởng ban đầu: Speed Reading Chrome Extension, Pomodoro Timer app và ứng dụng nghe nhạc YouTube.