Nodejs không ăn được, nhưng khá ngon

Nó có thể làm được gì?
- Xây dựng websocket server (Chat server)
- Ứng dụng upload file rất nhanh trên client
- Ad server
- Hoặc bất kỳ ứng dụng dữ liệu thời gian thực nào.
Nó không phải là:
- Một web framework
- Không dành cho người mới bắt đầu
- Không phải là một nền tảng thực thi các tác vụ đa luồng
Block code và Non-block code
Ví dụ xây dựng chức năng đọc file và in ra dữ liệu của file.
Logic Block code- Đọc file từ Filesystem, gán dữ liệu tương ứng với biến "contents"
- In dữ liệu biến "content"
- Thực hiện công việc khác tiếp theo.
- Đọc file từ Filesystem
- Sau khi đọc xong thì in dữ liệu (callback)
- Thực hiện công việc khác tiếp theo.
var contents = fs.readFileSync('hello.txt'); // Dừng cho đến khi đọc xong file.
console.log(contents);
console.log('Thực hiện công việc khác');
fs.readFile('hello.txt', function(contents){
console.log(contents);
});
console.log('Thực hiện công việc khác');

Ta có thể thấy ở đây, tốc độ xử lý của non-block code là cao hơn so với block code. Giả sử bạn thực hiện công việc trên ở 2 file trở lên thì tốc dộ xử lý của Non-block code sẽ nhanh hơn Block code rất nhiều. Hãy tự trải nghiệm :)
Ứng dụng đầu tiên
var http = require('http'); // đây là cách chúng ta require các modules
http.createServer(function(request, response){
response.writeHead(200, {'Content-Type':'text/plain'}); // Status code và content type
response.write("Xin chào lập trình viên!"); // Thông điệp được gửi xuống client.
response.end(); // Đóng kết nối
}).listen(3000); // Chờ kết nối ở cổng 3000.
console.log("Server đang chờ kết nối tại cổng 3000");
Chạy server: node hello hoặc node hello.js --> Server đang chờ kết nối tại cổng 3000
Mở trình duyệt và truy cập tới địa chỉ http://localhost:3000 hoặc dùng terminal:
$ curl http://localhost:3000
--> Xin chào lập trình viên
Tôi là Duyệt