SlideShare a Scribd company logo
1 of 9
NodeJS Introduction
Thanh.bntt
( Sưu tầm ) 07/2nd/2015
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.
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.
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.
1.2 Event Driven Programming
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
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ì
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 đó!
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.

More Related Content

What's hot

Tổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COMTổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COMKhoa Nguyen
 
Giới thiệu Nuxt.js
Giới thiệu Nuxt.jsGiới thiệu Nuxt.js
Giới thiệu Nuxt.jsRobin Huy
 
giới thiệu về Asp.net core 2.0
giới thiệu về Asp.net core  2.0giới thiệu về Asp.net core  2.0
giới thiệu về Asp.net core 2.0VanSy9x
 
Giới thiệu docker và ứng dụng trong ci-cd
Giới thiệu docker và ứng dụng trong ci-cdGiới thiệu docker và ứng dụng trong ci-cd
Giới thiệu docker và ứng dụng trong ci-cdGMO-Z.com Vietnam Lab Center
 
Bảo mật dữ liệu
Bảo mật dữ liệuBảo mật dữ liệu
Bảo mật dữ liệuSon Nguyen
 
Introduce docker
Introduce dockerIntroduce docker
Introduce dockerRobin Huy
 
DockerDay2015: Introduction to Dockerfile
DockerDay2015: Introduction to DockerfileDockerDay2015: Introduction to Dockerfile
DockerDay2015: Introduction to DockerfileDocker-Hanoi
 
Lập trình web – cgi
Lập trình web – cgiLập trình web – cgi
Lập trình web – cgiSon Nguyen
 
Lesson 22: Flash communicate
Lesson 22: Flash communicateLesson 22: Flash communicate
Lesson 22: Flash communicateHallo Patidu
 
Lập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnLập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnSon Nguyen
 
Bai3 basic servlets_956
Bai3 basic servlets_956Bai3 basic servlets_956
Bai3 basic servlets_956Ham Chơi
 
Kết nối linux đến linux bằng ssh
Kết nối linux đến linux bằng sshKết nối linux đến linux bằng ssh
Kết nối linux đến linux bằng sshphanleson
 
Monitor và tối ưu sql server
Monitor và tối ưu sql serverMonitor và tối ưu sql server
Monitor và tối ưu sql serverHuân Bùi Đình
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnDotnet Open Group
 
DockerDay2015: Build and monitor a load balanced web application with Docker ...
DockerDay2015: Build and monitor a load balanced web application with Docker ...DockerDay2015: Build and monitor a load balanced web application with Docker ...
DockerDay2015: Build and monitor a load balanced web application with Docker ...Docker-Hanoi
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Ham Chơi
 

What's hot (19)

Tổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COMTổng quan ASP.NET CORE - NIVIKI.COM
Tổng quan ASP.NET CORE - NIVIKI.COM
 
Giới thiệu Nuxt.js
Giới thiệu Nuxt.jsGiới thiệu Nuxt.js
Giới thiệu Nuxt.js
 
giới thiệu về Asp.net core 2.0
giới thiệu về Asp.net core  2.0giới thiệu về Asp.net core  2.0
giới thiệu về Asp.net core 2.0
 
Giới thiệu docker và ứng dụng trong ci-cd
Giới thiệu docker và ứng dụng trong ci-cdGiới thiệu docker và ứng dụng trong ci-cd
Giới thiệu docker và ứng dụng trong ci-cd
 
Phalcon căn bản
Phalcon căn bảnPhalcon căn bản
Phalcon căn bản
 
Bizweb Microservices Architecture
Bizweb Microservices ArchitectureBizweb Microservices Architecture
Bizweb Microservices Architecture
 
Bảo mật dữ liệu
Bảo mật dữ liệuBảo mật dữ liệu
Bảo mật dữ liệu
 
Introduce docker
Introduce dockerIntroduce docker
Introduce docker
 
DockerDay2015: Introduction to Dockerfile
DockerDay2015: Introduction to DockerfileDockerDay2015: Introduction to Dockerfile
DockerDay2015: Introduction to Dockerfile
 
Lập trình web – cgi
Lập trình web – cgiLập trình web – cgi
Lập trình web – cgi
 
Lesson 22: Flash communicate
Lesson 22: Flash communicateLesson 22: Flash communicate
Lesson 22: Flash communicate
 
Lập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biếnLập trình web với các công nghệ phổ biến
Lập trình web với các công nghệ phổ biến
 
Bai3 basic servlets_956
Bai3 basic servlets_956Bai3 basic servlets_956
Bai3 basic servlets_956
 
Vue.js
Vue.jsVue.js
Vue.js
 
Kết nối linux đến linux bằng ssh
Kết nối linux đến linux bằng sshKết nối linux đến linux bằng ssh
Kết nối linux đến linux bằng ssh
 
Monitor và tối ưu sql server
Monitor và tối ưu sql serverMonitor và tối ưu sql server
Monitor và tối ưu sql server
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vn
 
DockerDay2015: Build and monitor a load balanced web application with Docker ...
DockerDay2015: Build and monitor a load balanced web application with Docker ...DockerDay2015: Build and monitor a load balanced web application with Docker ...
DockerDay2015: Build and monitor a load balanced web application with Docker ...
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952
 

Similar to Nodejs Introduction

Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake phplaonap166
 
Viet framework - Poly sáng tạo 2016 - Sinh viên FPT Polytechnic
Viet framework - Poly sáng tạo 2016 - Sinh viên FPT PolytechnicViet framework - Poly sáng tạo 2016 - Sinh viên FPT Polytechnic
Viet framework - Poly sáng tạo 2016 - Sinh viên FPT PolytechnicFPT Polytechnic
 
Ebook lập trình Java hướng đối tượng (Tiếng việt)
Ebook lập trình Java hướng đối tượng (Tiếng việt)Ebook lập trình Java hướng đối tượng (Tiếng việt)
Ebook lập trình Java hướng đối tượng (Tiếng việt)Duy Lê Văn
 
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênGiáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênTrần Thiên Đại
 
Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0Huân Bùi Đình
 
Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android
Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android
Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android Lương Bá Hợp
 
Cloud computing and OpenStack
Cloud computing and OpenStackCloud computing and OpenStack
Cloud computing and OpenStackMinh Le
 
Cloud computing and OpenStack
Cloud computing and OpenStackCloud computing and OpenStack
Cloud computing and OpenStackMinh Le
 
Cấu trúc android
Cấu trúc androidCấu trúc android
Cấu trúc androiddhinh_190192
 
Bài giảng lập trình Java cơ bản - Java Programming
Bài giảng lập trình Java cơ bản - Java ProgrammingBài giảng lập trình Java cơ bản - Java Programming
Bài giảng lập trình Java cơ bản - Java ProgrammingVntalking Blog
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programmingDucLe868608
 

Similar to Nodejs Introduction (20)

Arrowjs.io
Arrowjs.ioArrowjs.io
Arrowjs.io
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake php
 
Gt java080102005
Gt java080102005Gt java080102005
Gt java080102005
 
Viet framework - Poly sáng tạo 2016 - Sinh viên FPT Polytechnic
Viet framework - Poly sáng tạo 2016 - Sinh viên FPT PolytechnicViet framework - Poly sáng tạo 2016 - Sinh viên FPT Polytechnic
Viet framework - Poly sáng tạo 2016 - Sinh viên FPT Polytechnic
 
Ebook lập trình Java hướng đối tượng (Tiếng việt)
Ebook lập trình Java hướng đối tượng (Tiếng việt)Ebook lập trình Java hướng đối tượng (Tiếng việt)
Ebook lập trình Java hướng đối tượng (Tiếng việt)
 
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênGiáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
 
Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0Giới thiệu ASP.NET Core 2.0
Giới thiệu ASP.NET Core 2.0
 
Subversion Seminar [2010]
Subversion Seminar [2010]Subversion Seminar [2010]
Subversion Seminar [2010]
 
NodeJS_1 1.pptx
NodeJS_1 1.pptxNodeJS_1 1.pptx
NodeJS_1 1.pptx
 
Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android
Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android
Ứng dụng từ điển cho SmartPhone từ Framework PhoneGap trên nền tảng Android
 
Cloud computing and OpenStack
Cloud computing and OpenStackCloud computing and OpenStack
Cloud computing and OpenStack
 
Cloud computing and OpenStack
Cloud computing and OpenStackCloud computing and OpenStack
Cloud computing and OpenStack
 
Cấu trúc android
Cấu trúc androidCấu trúc android
Cấu trúc android
 
Thuyet trinh java fx
Thuyet trinh java fxThuyet trinh java fx
Thuyet trinh java fx
 
Bài giảng lập trình Java cơ bản - Java Programming
Bài giảng lập trình Java cơ bản - Java ProgrammingBài giảng lập trình Java cơ bản - Java Programming
Bài giảng lập trình Java cơ bản - Java Programming
 
Cong nghnet
Cong nghnetCong nghnet
Cong nghnet
 
Giáo trình asp.net với c sharp
Giáo trình asp.net với c sharpGiáo trình asp.net với c sharp
Giáo trình asp.net với c sharp
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programming
 
Cac bai tap .net
Cac bai tap .netCac bai tap .net
Cac bai tap .net
 
Mobile group
Mobile groupMobile group
Mobile group
 

Nodejs Introduction

  • 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.
  • 5. 1.2 Event Driven Programming
  • 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.