2. 1. Node.js là gì ?
Node.js là 1 nền tảng chạy trên môi trường V8 Javascript runtime.
Node.js cho phép lập trình viên xây dựng các ứng dụng có tính mở rộng cao sử
dụng Javascript trên server
Node.js sử dụng mô hình event-driven, non-blocking I/O
Lựa chọn hoàn hảo cho việc xây dựng các ứng dụng thời gian thực đòi hỏi lượng
dữ liệu lớn và phân tán trên nhiều thiết bị.
Các ứng dụng điển hình
• Xây dựng websocket server (Chat server)
• Ứng dụng upload file rất nhanh trên client
• Các máy chủ quảng cáo
• Hoặc bất kỳ ứng dụng dữ liệu thời gian thực nào.
3. 1.1 Không đồng bộ - non blocking
• Node.js thực tế chỉ là một ngữ cảnh khác của JavaScript: nó cho phép bạn
chạy mã JavaScript ở phía backend, vượt ra khỏi phạm vi trình duyệt.
• JavaScript là một ngôn ngữ dựa trên sự kiện
• 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.
4. 1.1 Không đồng bộ - non blocking
• 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ó.
Với hầu hết các ngôn ngữ kịch bản máy chủ, chương trình phải đợi mỗi function
thực thi xong trước khi có thể tiếp tục chạy tiếp.
Với Node.js, bạn xác định các function sẽ chạy để hoàn thành 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.
6. 1.2 Event Driven Programming (ví dụ)
var fs = require("fs");
fs.readFile('input.txt', function (err, data)
{
if (err){
console.log(err.stack);
return;
}
console.log(data.toString());
});
console.log("Program Ended");
Program Ended
Tutorials Point is giving self learning
content
to teach the world in simple and easy
way!!!!!
Source code:
Output:
2
1
3
Not waiting read
file completely
When reading file
completely
Tutorials Point is giving self learning
content
to teach the world in simple and easy
way!!!!!
input.txt
7. 2.1 Nhược điểm
1. Ứng dụng nặng tốn tài nguyên
• ứng dụng tốn tài nguyên CPU như encoding video, convert file, decoding
encryption… hoặc các ứng dụng tương tự như vậy thì không nên dùng NodeJS
• NodeJS được viết bằng C++ & Javascript, nên phải thông qua thêm 1 trình biên
dịch của NodeJS sẽ lâu hơn 1 chút
2. NodeJS và ngôn ngữ khác
• Cộng đồng hỗ trợ ít
• Nếu bạn/doanh nghiệp chưa biết về NodeJS thì việc cần xây dựng dự án quan
trọng, kinh doanh phát triển trên NodeJS sẽ không phải lựa chọn bây giờ.
3. NoSQL + Nodejs + Noob !
• Với NodeJS, NoSQL thì là sự kết hợp hoàn hảo nhưng cần có kinh nghiệm và
kiên trì
8. 2.2 Ưu điểm
1. JSON APIs
• cơ chế event-driven, non-blocking I/O(Input/Output) và mô hình kết hợp với
Javascript là sự lựa chọn tuyệt vời cho các dịch vụ Webs làm bằng JSON.
2. Ứng dụng trên 1 trang
• Khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh
3. Shelling tools unix
• NodeJS sẽ tận dụng tối đa Unix để hoạt động.
• Tức là NodeJS có thể xử lý hàng nghìn Process và trả ra 1 luồng khiến cho hiệu xuất
hoạt động đạt mức tối đa nhất và tuyệt vời nhất.
4. Streamming Data (Luồng dữ liệu)
• Giả xử cần xử lý 1 luồng giữ liệu cực lớnNodeJS sẽ xây dựng các Proxy phân vùng
các luồng dữ liệu để đảm bảo tối đa hoạt động cho các luồng dữ liệu khác
5. Ứng dụng Web thực
• Giả sử bạn xây dựng 1 ứng dụng chat, feed … Facebook, Twitter là điển hình cho
Web thực. NodeJS làm khá tốt điều đó!
9. 3. Mất bao lâu để có thể thành thạo.
• Thông thường sẽ từ 3 - 6 tháng cho một Teamwork (3 - 5
người). Cá nhân từ 4 - 8 tháng.