1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình môn học: Phát triển mã nguồn mở với NodeJS (Ngành/nghề: Thiết kế trang web) - Trường CĐN Đà Lạt

72 24 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phát triển mã nguồn mở với NodeJS
Tác giả Phạm Đình Nam, Ngô Thiên Hoàng, Nguyễn Quỳnh Nguyên, Phan Ngọc Bảo
Trường học Trường Cao Đẳng Nghề Đà Lạt
Chuyên ngành Thiết kế trang web
Thể loại Giáo trình
Năm xuất bản 2019
Thành phố Lâm Đồng
Định dạng
Số trang 72
Dung lượng 1,49 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giáo trình Phát triển mã nguồn mở với NodeJS giúp cung cấp cho người học những kiến thức cơ bản về lập trình NodeJS cũng như kỹ năng lập trình cơ sở dữ liệu MySQL bằng ngôn ngữ NodeJS. Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.

Trang 1

ỦY BAN NHÂN DÂN TỈNH LÂM ĐỒNG TRƯỜNG CAO ĐẲNG NGHỀ ĐÀ LẠT

GIÁO TRÌNH MÔN HỌC/ MÔ ĐUN: PHÁT TRIỂN MÃ NGUỒN MỞ VỚI

NODEJS NGÀNH/ NGHỀ: THIẾT KẾ TRANG WEB

TRÌNH ĐỘ: CAO ĐẲNG

Ban hành kèm theo Quyết định số: 1157/QĐ-CĐNĐL ngày 11 tháng 12 năm

2019 của Hiệu trưởng Trường Cao đẳng Nghề Đà Lạt

(LƯU HÀNH NỘI BỘ)

Lâm Đồng, năm 2019

Trang 3

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 1

Trang 4

LỜI GIỚI THIỆU

Vài nét về xuất xứ giáo trình:

Giáo trình này được viết theo căn cứ Thông tư số 03/2017/TT-BLĐTBXH ngày

01 tháng 03 năm 2017 của Bộ Lao động – Thương binh và Xã hội về việc Quy định về quy trình xây dựng, thẩm định và ban hành chương trình; tổ chức biên soạn, lựa chọn, thẩm định giáo trình đào tạo trình độ trung cấp, trình độ cao đẳng

Quá trình biên soạn:

Giáo trình này được biên soạn có sự tham gia tích cực của các giáo viên có kinh nghiệm, cùng với những ý kiến đóng góp quý báu của các chuyên gia về lĩnh vực công nghệ thông tin

Mối quan hệ của tài liệu với chương trình, mô đun/môn học:

Căn cứ vào chương trình đào tạo nghề Thiết kế trang web, giáo trình giúp cung cấp cho người học những kiến thức cơ bản về lập trình NodeJS cũng như kỹ năng lập trình cơ sở dữ liệu MySQL bằng ngôn ngữ NodeJS

Để học được mô đun này người học cần có kiến thức cơ bản về HTML và cơ sở

dữ liệu

Cấu trúc chung của giáo trình này bao gồm 4 bài:

Bài 1 Tổng quan về nodejs

Bài 2 Các Module trong NodeJS

Bài 3 Làm việc với MySQL Database Server trong NodeJS

Bài 4 Socket

Lời cảm ơn

Giáo trình được biên soạn trên cơ sở các văn bản quy định của Nhà nước và tham khảo nhiều tài liệu liên quan có giá trị Song chắc hẳn quá trình biên soạn không tránh khỏi những thiếu sót nhất định Ban biên soạn mong muốn và thực sự cảm ơn những ý kiến nhận xét, đánh giá của các chuyên gia, các thầy cô đóng góp cho việc chỉnh sửa

để giáo trình ngày một hoàn thiện hơn

Lâm Đồng, ngày 10 tháng 12 năm 2019

Tham gia biên soạn

1 Phạm Đình Nam

2 Ngô Thiên Hoàng

3 Nguyễn Quỳnh Nguyên

4 Phan Ngọc Bảo

Trang 5

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 3

MỤC LỤC

BÀI 1 TỔNG QUAN VỀ NODEJS 6

1 Giới thiệu về NodeJS 6

2 Thiết lập môi trường 6

3 Module trong Node.js 7

4 Tìm hiểu về NPM 8

Bài 2 Các Module trong NodeJS 11

1 Module HTTP 11

1.1 Xây dựng máy chủ HTTP cơ bản 11

1.2 Phân tích máy chủ HTTP 11

1.3 Truyền hàm cho máy chủ hoạt động 12

1.4 Phương thức writeHead 12

1.5 Phương thức write 12

1.6 Phương thức end 13

2 Làm việc với file trong Node.js 13

2.1 Đọc nội dung file 13

2.2 Ghi nội dung vào file 15

2.3 Xóa file 16

3 Module URL 17

3.1 Giới thiệu 17

3.2 Phân tích URL 18

4 Module Path 19

5 Event Emitter 24

5.1 Lập trình hướng sự kiện 24

5.2 EventEmitter 24

5.3 Xóa sự kiện 25

6 Đối tượng Global và Process 25

6.1 Đối tượng Global trong Node.js 25

6.2 Đối tượng Process trong Node.js 26

7 Express Framework 26

7.1 Giới thiệu Express 26

7.2 Cài đặt và sử dụng Express 27

7.3 Router trong Express Framework 28

7.3.1 Router là gì? 28

7.3.2 Sử dụng Router 28

Trang 6

7.3.3 Tham số router 29

7.4 Template Engine trong Express 30

7.4.1 Template Engine là gì ? 30

7.4.2 Danh sách các loại template engine 30

7.4.3 Ưu điểm khi sử dụng Template Engine 30

7.4.4 Sử dụng Template Engine trong Express 30

7.4.5 Kết hợp EJS template với Express 31

7.5 Middleware Express 32

7.5.1 Middleware trong ứng dụng web 32

7.5.2 Middleware trong Express 32

7.5.3 Cấu trúc middleware trong express 33

7.5.4 Sử dụng middleware trong express 34

7.5.5 Truy cập file tĩnh trong express 38

7.5.6 Làm việc với Form trong express 41

8 Sử dụng cookies 44

8.1 Cài đặt cookie-parser 44

8.2 Sử dụng cookie-parser 44

8.3 Đặt thời gian sống cho cookie 45

8.4 Xóa cookie hiện tại 46

9 Sử dụng session 46

9.1 Định nghĩa về Session 46

9.2 Lý do session ra đời 46

9.3 Phân biệt session của các trình duyệt khác nhau 46

9.4 Sử dụng session trong node.js 47

Bài 3 Làm việc với MySQL Database Server trong NodeJS 48

1 Kết nối với MySQL Database Server 48

1.1 Cài đặt package mysql cho Node.js 48

1.2 Kết nối với MySQL Database Server bằng Node.js 48

1.3 Đóng kết nối cơ sở dữ liệu 49

2 Tạo bảng trong MySQL bằng Node.js 49

3 Thêm dữ liệu vào bảng từ Node.js 51

4 Truy vấn dữ liệu trong CSDL MySQL từ Node.js 53

4.1 Thực thi câu truy vấn đơn giản 53

4.2 Chuyển dữ liệu vào câu truy vấn 54

5 Cập nhật dữ liệu trong cơ sở dữ liệu MySQL bằng Node.js 54

Trang 7

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 5

6 Xóa dữ liệu trong MySQL từ Node.js 55

Bài 4 Socket 57

1 Tổng quan về Socket.io 57

2 Cài đặt Socket.IO 57

3 Xử lý sự kiện trong Socket.IO 60

3.1 Tổng quan module Events trong Node.js 60

3.2 Sử dụng module Events 61

3.3 Viết một module khác kế thừa module Events 63

3.4 Phân biệt events với socket.io 65

4 Socket.IO Broadcasting 65

5 Socket.IO Namspace 68

Trang 8

BÀI 1 TỔNG QUAN VỀ NODEJS

1 Giới thiệu về NodeJS

Mặc dù Nodejs mới ra đời năm 2009 nhưng được rất nhiều chuyên gia lập trình

quan tâm và được sử dụng rộng rãi trong tất cả các lĩnh vực, chạy trên hầu hết các hệ điều hành Đây là một nền tảng của Server và được xây dựng dựa trên Javascript Engine

Nếu bạn thực sự đam mê với lập trình web thì bạn nên học Nodejs, vì nó sẽ là một trong những ngôn ngữ chiếm ưu thế trong tương lai Hiện tại xu hướng năm 2017

đang là học lập trình Nodejs, hi vọng bộ giáo trình video bài học lập trình Nodejs

cơ bản dưới đây sẽ giúp ích các bạn rất nhiều trong con đường trở thành lập trình viên

2 Thiết lập môi trường

Các đoạn code node.js thực chất là các đoạn mã Javascript Node.js sẽ được sử dung để thông dịch và thực thi các đoạn code Javascript

Node.js phân phối dưới dạng các bản cài đặt cho các hệ điều hành Linux, Mac

OS X và Windown với các phiên bản 32 bit và 64 bit

Để cài đặt Node.js các bạn có thể truy cập vào kho lưu trữ của Node.js và tải xuống bản cài đặt phù hợp với hệ điều hành mình đang sử dụng

Cài đặt trên Windows

Tải tệp cài đặt với định dạng msi trên trang chủ download của Node.js

Chạy tệp cài đăt với định dạng msi mà bạn đã tiến hành tải xuống trước đó

Làm theo hướng dẫn trong trình cài đặt

Khởi động lại máy tính: Bạn sẽ không thể nào chạy được Node.js nếu không khởi động lại máy tính sau khi cài đặt

Cài đặt trên MacOs

Tải tệp cài đặt với định dạng pkg trên trang chủ Node.Js

Mở tệp cài đặt với định dạng pkg mà bạn vừa tải xuống

Làm theo các bước của hướng dẫn của bộ cài đặt

Cài đặt trên Linux

Với các máy chạy hệ điều hành Linux các bạn có thể cài đặt bằng cách tải xuống

và giải nén các tệp lưu trữ tar.gz , sau đó chuyển các tệp được giải nén vào thư mục /usr/local/nodejs

Tải tệp lưu trữ tar.gz

Tạo thư mục /usr/local/nodejs

Để tạo thư mục các bạn chạy command với lệnh sausudo mkdir -p /usr/local/nodejs giải nén tệp tar.gz mà bạn vừa tải về để giải nén các bạn đi vào thư mục dowload Node.js trước đó và chạy command với lệnhtar xvfz filename.tar.gzVí

dụ ở đây tôi đang tải về phiên bản 10.13.0 với tên file là node-v10.13.0.tar.gz

Di chuyển file tất cả các file vừa giải nén vào thư mục /usr/local/nodejs

Trang 9

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 7

Các bạn dùng command với lệnh sau để di chuyển file

sudo mv node-v10.10.0/* /usr/local/nodejs

Sau khi các chạy xong lệnh để kiểm tra xem đã chuyển thành công nodejs vào /usr/local/nodejs hay chưa các bạn chạy thêm các lệnh sau

cd /usr/local/nodejs

ls

Nếu như hiện thị danh dách file như thế này tức là các bạn đã di chuyển thành công

Thêm biến môi trường node vào PATH

Để thêm biến môi trường node vào PATH các bạn chạy command với lệnh sauexport PATH=$PATH:/usr/local/nodejs/bin

Kiểm tra Node.js

Sau khi cài đặt xong để chắc chắn là Node.js đã được cài đặt trên máy của bạn Các bạn chạy lệnh command sau để kiểm tra

node -v

3 Module trong Node.js

Khi các bạn viết một ứng dụng Node.js bạn có thể đặt tất cả code của bạn vào một tệp nào đó, cho dù ứng dụng của bạn có lớn hay phức tạp đến như thế nào Trình thông dịch nodejs sẽ không quan tâm đến vấn đề đấy

Nhưng về mặt tổ chức code bạn sẽ rất khó khăn để có thể quản lý các đoạn code của mình Vì vậy, như một thói quen các bạn nên quan tâm nhiều hơn về cấu trúc code của mình Đây là lý do mà module được đưa vào Node.js

Bạn có thể nghĩ đơn giản về các module Node.js như các thư viện Javascript hay một phần nào đó trong code của bạn (ví dụ tập hợp các hàm) mà bạn muốn giữ lại để

có thể tái sử dụng nó sau này

Ở Node.js các bạn sẽ gặp 3 loại Module

Module tích hợp : là loại module được Node.js tích hợp sẵn cho các bạn khi cài Node.js Các bạn có thể xem danh sách module được tích hợp sẵn

Module bên ngoài: các module này được chia sẻ từ các lập trình viên khác nhau trên thế giới thông qua một kho quản lý ở bên ngoài Cụ thể ở đây là NPM

Module tạo riêng của các bạn: Các module tích hợp và module bên ngoài được cung cấp bởi những người khác, nhưng bạn có thể tạo ra các module Node.js của riêng bạn

Tạo module của bạn

Ví dụ sau sẽ hướng dẫn các bạn tự tao ra một module myRandom cung cấp một hàm trợ giúp trả về số ngẫu nhiên từ 1 đến 10

Trước tiên các bạn tạo một tệp Javascript mới Ở đây tôi sẽ tạo một tệp với

tên myRandom.js

Ở trong tệp myRandom.js các bạn viết nội dung sau

Trang 10

function getRandom(min, max) {

return Mapath.random() * (max - min) + min;

Tiếp theo các bạn tạo thêm tệp mới để có thể nhận chức năng đã được exports ra bên trong myRandom.js

Các bạn tạo tệp index.js và thêm nội dung sau vào

var myRandom = require('./myRandom');

Vậy thì làm thế nào chúng ta có thể biết được các module được chia sẻ ở đâu, và

sử dụng module đó như thế nào Trong phần này chúng ta sẽ tìm hiểu cách sử dụng NPM để quản lý các module bên ngoài

NPM là gì?

 NPM là từ viết tắt của cụm từ (Node Package Manager)

 NPM cung cấp cho chúng ta 2 chức năng sau:

o Kho lưu trữ module trực tuyến cho Node.js

o Tiện ích dòng lệnh (command) để cài đặt các module, package Node.js quản lý phiên bản và sự phụ thuộc của các package node.js

Trang 11

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 9

Cài đặt và cấu hình NPM

Cài đặt NPM

Mặc định NPM sẽ đi kèm với trình cài đặt Node.js vì thế các bạn sẽ không cần phải cài đặt NPM

Sau khi cài đặt NPM và Node.js các bạn có thể kiểm tra và cập nhật NPM lên

phiên bản mới bằng command:

npm install npm@lastest -g

Cấu hình package

Các cấu hình package của Node.js được chứa trong một tệp có tên package.json

mà bạn có thể tìm thấy thư mục gốc của các dự án hoặc các module

Bạn có thể tạo tệp thiết lập mới bằng các chạy command

npm init

Bạn sẽ phải điiền vào một số thông tin ví dụ như:

 package name: Tên gói của bạn (npm sẽ lấy mặc định là tên thư mục của bạn)

 version: phiên bản của gói (mặc định 1.0.0)

 description: Mô tả về gói của bạn

npm install <package name>

Ví dụ: Tôi muốn cài đặt một package mang tên express (đây là web framework basic của Node.js)

– Để cài đặt các bạn đi vào thư mục gốc của project Sau đó mở command với npm chúng ta sẽ chủ yếu thao tác với Command line nhé

Sau khi cài đặt xong các bạn sẽ thấy project của các bạn xuất hiện thêm một thư

1 với tên "node_modules" Đây là thư mục chứa các module được cài đặt từ npm

Trang 12

Đồng thời ở file package.json sẽ thêm vào dependencies tên thư viện mà các bạn vừa cài

Ngoài các bạn có thể cài các package với nhiều tùy chọn khác nhau

npm install -g <package name> //Cài toàn cục

npm install save-dev <packeage name> //cài đặt chỉ phục vụ cho việc

npm uninstall <package name>

Ví dụ tôi muốn xóa bỏ package express vừa cài ở trên

Sau khi gỡ xong thì file package.json cũng thay đổi theo

Update package

Khi muốn nâng cấp một gói nào đó các bạn có thể sử dụng command lệnh sau npm update <package name>

Trang 13

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 11

Bài 2 Các Module trong NodeJS

1 Module HTTP

Với Node.js để có thể tạo ra web application chúng ta không phải chỉ có việc triển khai ứng dụng của mình là được, mà chúng ta phải triển khai toàn bộ máy chủ HTTP

Vì vậy Module HTTP cho phép chúng ta có thể tạo ra các máy chủ HTTP trong ứng dụng của mình

1.1 Xây dựng máy chủ HTTP cơ bản

Trước tiên để bắt đầu tìm hiểu về module HTTP hoạt động như thế nào thì chúng

ta cùng chạy 1 ví dụ đơn giản

Ở đây tôi có 1 đoạn code đơn giản dùng để tạo server cơ bản ở trong Node.js

var http = require('http');

var server = http.createServer(function(request, response) {

response.writeHead(200, {"Content-Type": "text/plain; charset=UTF-8"});

response.write("Chào mừng bạn đến với Học viện công nghệ VietPro");

1.2 Phân tích máy chủ HTTP

Ở dòng đầu tiên của đoạn code trên, tôi yêu cầu module HTTP của Node.js và làm cho nó có thể truy cập được thông qua biến http

Trang 14

Sau đó tôi gọi một trong những chức năng mà module này cung cấp: createServer Hàm này trả về một đối tượng, đối tượng này có 1 phương thức là listen, và nhận vào tham số là cổng mà máy chủ HTTP sẽ lắng nghe

tham số thứ nhất: request chứa những thông tin của người dùng gửi lên

tham số thứ hai: response chứa những thông tin mà chúng ta muốn trả về để đáp

ứng yêu cầu của request đó

var http = require('http');

var server = http.createServer(function(request, response) {

});

server.listen(8000);

1.3 Truyền hàm cho máy chủ hoạt động

Bên trong hàm ẩn danh sẽ có 2 tham số là resquest (đại diện cho các thông tin của người dùng gửi lên) còn response (đại diện cho thông tin server trả về)

Nhìn vào ví dụ đầu tiên các bạn sẽ thấy response tôi có sử dụng 2 phương 3 phương thức đó là writeHead, write, end

statusCode : Mã trạng thái phản hồi, mã trạng thái tham khảo <Number>

statusMessage: Lời nhắn của trạng thái <String>

headers: là các tiêu đề phản hồi của máy chủ, các bạn có thể tìm hiểu thêm về HTTP header tại đây <Object>

1.5 Phương thức write

Phương thức này thiết lập nội dung mà server muốn trả về cho trình duyệt, nội dụng này có thể là text đơn thuần hoặc code HTML

Trang 15

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 13

Cú pháp:

response.write(content, encoding);

Trong đó:

content: Nội dung muốn trả về trình duyệt

encoding: Loại mã hóa ký tự Mặc định UTF-8

Ví dụ: trả về trình duyệt nội dung “Chào mừng các bạn đến với Node.js của học

viện công nghệ VietPro” và được bao trong thẻ <b>

resonse.write("&lt;b&gt;Chào mừng các bạn đến với Node.js của học

viện công nghệ VietPro&lt;/b&gt;")

1.6 Phương thức end

Phương thức này thông báo tất cả phản hồi đã được gửi và phương thức này phải được gọi trên mỗi response

2 Làm việc với file trong Node.js

Node.js cung cấp module fs để có thể truy cập hệ thống file Module fs chịu trách nhiệm cho tất cả các hoạt động I/O (Input / Output) đồng bộ hoặc không đồng bộ

Với module fs tôi sẽ yêu cầu nó và sẽ gán vào biến fs để có thể truy cập module này nhé

pathfile: Đường dẫn đầy đủ và tên của file dưới dạng chuỗi

options: Tham số tùy chọn có thể là đối tượng hoặc chuối bào gồm mã hóa và cờ

hiệu Mã hóa mặc định là utf8 và cờ mặc định là “r”

callback: Hàm gọi lại khi thao tác đọc file hoàn thành, hàm có 2 tham số là error

và data

Ví dụ: Có một file mẫu demo.txt với nội dung "Chào bạn đến với học viện công

nghệ VietPro" bây giờ tôi sẽ dùng phương thức đọc file không đồng bộ của module fs để đọc nội dụng file này

File demo.txt

Trang 16

Chào bạn đến với học viện công nghệ VietPro

fs.readFile("demo.txt", function(error, data) {

if (error) throw error;

Mặc định data sẽ có kiểu dữ liệu là Buffer vì thế tôi đã dùng toString() để chuyển

nó về kiểu String thông thường

Đọc file đồng bộ

Sử dụng phương thức fs.readFileSync() để đọc file đồng bộ

Khác với đọc file không đồng bộ là kết quả trả về sẽ được xử lý trong hàm callback còn với đọc file đồng bộ thì kết quả sẽ được trả về trực tiếp sau khi mà chương trình đọc xong

Cú pháp

fs.readFileSync(pathfile, options);

Mô tả tham số:

pathfile: Đường dẫn đầy đủ và tên của file dưới dạng chuỗi

options: Tham số tùy chọn có thể là đối tượng hoặc chuối bào gồm mã hóa và cờ

hiệu Mã hóa mặc định là utf8 và cờ mặc định là “r”

Ví dụ: Tương tự với ví dụ ở đọc file không đồng bộ thì tôi sẽ thực hiện bằng cú

pháp của đọc file đồng bộ

Chỉnh nội dung file index.js thành

var fs = require('fs'); //Gọi module fs

Trang 17

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 15

2.2 Ghi nội dung vào file

Ghi file không đồng bộ

Sử dụng fs.writeFile() để ghi file không đồng bộ

Cú pháp:

1 fs.writeFile(pathfile, content[,options], callback);

Mô tả tham số:

pathfile: Đường dẫn tuyệt đối của file, hoặc tên file

content: Nội dung muốn ghi vào file

options: Tham số tùy chọn có thể là đối tượng hoặc chuối bào gồm mã hóa và cờ hiệu Mã hóa mặc định là utf8 và cờ mặc định là “r”

callback: Hàm gọi lại khi thao tác ghi nội dung vào file hoàn thành

Ví dụ: Ghi vào file writeDemo.txt với nội dung "Học lập trình node.js tại học

viện công nghệ VietPro"

Tạo file mới với tên writeFile.js và đưa nội dung bên dưới vào

var fs = require('fs'); //Gọi module fs

Trang 18

if (error) throw error;

console.log("Nội dung đã được ghi thành công")

pathfile: Đường dẫn tuyệt đối của file, hoặc tên file

content: Nội dung muốn ghi vào file

options: Tham số tùy chọn có thể là đối tượng hoặc chuối bào gồm mã hóa và cờ hiệu Mã hóa mặc định là utf8 và cờ mặc định là “r”

Ví dụ: Tượng tự với vị dụ phần ghi file không đồng bộ thay thế cú pháp ghi file

không đồng bộ bằng cú pháp ghi file đồng bộ

var fs = require('fs'); //Gọi module fs

/**

* Thực hiện viết nội dung vào file demo.txt

* */

var error = fs.writeFileSync("writeDemo.txt", "Học lập trình Node.js

tại học viện công nghệ VietPro");

if (error) return;

console.log("Nội dung đã được ghi thành công");

Chạy lại command với lệnh

Trang 19

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 17

Sử dụng fs.unlink() để xóa file không đồng bộ

Cú pháp:

fs.unlink(pathfile, callback);

Mô tả tham số

pathfile: đường dẫn tuyệt đối file hoặc tên file muốn xóa

callback: Hàm gọi lại khi thao tác xóa file hoàn thành

Ví dụ: Xóa file demo.txt ở ví dụ phần đọc file Tạo file removeFile.js và đưa nội

dung phía dưới vào

var fs = require('fs');

fs.unlink('demo.txt', function(error) {

if (error) throw error;

console.log("File đã được xóa thành công");

Trang 20

Module URL là một trong các module đi kèm với Node.js sử dụng để phân tích URL và các thuộc tính khác của URL

Bằng cách sử dụng module URL nó cung cấp cho chúng ta rất nhiều thuộc tính

để làm việc với đường dẫn

.href Cung cấp một đường dẫn URL hoàn chỉnh

.host Cung cấp tên máy chủ lưu trữ và cổng

.hostname Tên của máy chủ

.pathname Cung cấp tên máy chủ , cổng và tên đường dẫn

.protocol Giao thức được sử dụng cho việc gửi yêu cầu

.search Trả về chuỗ truy vấn được đính kèm với URL

Trang 21

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 19

var queryString = url.parse(urlQuery);

console.log("Đây là href:" + queryString.href);

console.log("Đây là path:" + queryString.path);

console.log("Đây là pathname:" + queryString.pathname);

console.log("Đây là port:" + queryString.port);

console.log("Đây là protocol:" + queryString.protocol);

console.log("Đây là host:" + queryString.host);

console.log("Đây là hostname:" + queryString.hostname);

console.log("Đây là query:" + queryString.query);

console.log("Đây là auth:" + queryString.auth);

console.log("Đây là search:" + queryString.search);

Chạy node với lệnh

var path = require('path')

Module path.sep cung tự động phân tách đường dẫn (\ trên Windows và / trên Linux/MacOs) và path.delimiter cung cấp dấu phân tách đường dẫn (; trên Windows

Trang 22

Ví dụ Lấy phần cuối cùng của đường dẫn /path1/somthing.js

Tạo file: index.js

/**

* Ví dụ với path.basename()

* Lấy phần cuối cùng của đường dẫn /path1/something.js

*/

var path = require('path')

var pathString = "/path1/something.js";

var result = path.basename(pathString);

var filterExt = path.basename(pathString, '.js');

Trang 23

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 21

tạo file index.js

/**

* Ví dụ với path.dirname()

* Lấy thư mục của đường dẫn /path1/something.js

*/

var path = require('path')

var pathString = "/path1/something.js";

var result = path.dirname(pathString);

path : đường dẫn file muốn kiểm tra

Ví dụ: Kiểm tra phần mở rộng của tệp tin "path/something.js"

Tạo file index.js

/**

* Ví dụ với path.extname()

* Lấy định dạng của file/path /path1/something.js

*/

var path = require('path')

var pathString = "/path1/something.js";

var result = path.extname(pathString);

console.log(result);

Chạy command với lệnh

node index

Kết quả bạn sẽ nhận được là :

Trang 24

.js

path.isAbsolute()

Kiểm tra xem đường dẫn có phải là đường dẫn tuyệt đối hay không Kết quả trả

về thuộc kiểu boolean

Cú pháp

path.extname(path)

Mô tả tham số

path : đường dẫn file muốn kiểm tra

Ví dụ: Kiểm tra xem 2 đường dẫn dưới đây có phải là đường dẫn tuyệt đối hay

var path = require('path')

var pathString1 = "/path1/something.js";

var pathString2 = "./path1/something.js";

var result1 = path.isAbsolute(pathString1);

var result2 = path.isAbsolute(pathString2);

Trang 25

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 23

Tạo ra đường dẫn từ các tham số

/**

* Ví dụ với path.join()

* Tạo ra đường dẫn từ các tham số

*/

var path = require('path')

var result = path.join('path1', 'path2', 'path3', 'file.txt');

console.log(result);

Kết quả:

Trên Linux/MacOS: path1/path2/path3/file.txt

Trên Window: path1\path2\path3\file.txt

pathname: đường dẫn muốn phân tích

Ví dụ: Phân tích đường dẫn: "/folder/file.txt"

Tạo file index.js

/**

* Ví dụ với path.parse()

* Phân tích đường dẫn "/folder/file.txt"

*/

var path = require('path')

var result = path.parse('/folder/file.txt');

console.log(result);

Chạy command với lệnh

node index

Bạn sẽ nhận được kết quả

Trang 26

Một Event Handler là một callback function sẽ được gọi khi một sự kiện được kích hoạt

Một vòng lặp chính lắng nghe các trình kích hoạt sự kiện và gọi trình xử lý sự kiện được liên kết cho sự kiện đó

5.2 EventEmitter

Node.js cung cấp cho chúng ta một module hữu ích được gọi là EventEmitter cho phép chúng ta có thể bắt đầu kết hợp lập trình hướng sự kiện trong các dự án của mình

Chúng ta có thể truy cập lớp EventEmitter thông qua module events được cung cấp sẵn trong Node.js

Khi được yêu cầu module, chúng ta sẽ cần phải tạo một đối tượng mới từ class để

có thể sử dụng nó

Khởi tạo lắng nghe sự kiện

Cú pháp

var events = require('events');

var eventEmitter = new events.EventEmitter;

Cú pháp tích hợp một eventHandler với một event

eventEmitter.on('eventName', eventHandler)

Cú pháp để kích hoạt sự kiện

eventEmitter.emit('eventName')

Trang 27

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 25

Ví dụ:

Tạo file index.js với nội dung sau

// Import và Khởi tạo đối tượng event

var events = require('events');

var eventEmitter = new events.EventEmitter;

6 Đối tượng Global và Process

6.1 Đối tượng Global trong Node.js

Để tìm hiểu về đối tượng toàn cục global trong chúng ta cùng đi xét một ví dụ sau

Các bạn hãy hình dung chúng ta có 2 file index.js là file chạy chính của ứng dụng và hello.js là module đơn giản mà chúng ta tự viết ra

Và module hello.js sẽ có nội dung như sau

module.exports = function(name){

return config.loichao + " " +name;

}

Trang 28

Đoạn mã trên chỉ đơn giản là nhận vào một cái tên nào đó và trả về một lời chào Tiếp theo, tiến hành gọi module hello.js vào trong index.js

index.js sẽ có nội dung như sau

var hello = require('./hello');

console.log(hello("VietPro"));

Lúc này hello.js sẽ đọc loichao trong đối tượng config vì thế chúng ta phải chỉnh lại index.js như sau

var hello = require('./hello');

var config = {loichao: "Xin chào"};

console.log(hello("VietPro"));

Tiếp theo các bạn chạy index.js với lệnh

node index

bạn sẽ nhận được kết quả lỗi

Điều này là do mỗi module trong Node.js mặc định sẽ có phạm vi riêng của

nó Để cho một biến nào đó thuộc phạm vi toàn cầu bạn phải sử dụng đối tượng global Bây giờ thay đổi index.js bằng cách sử dụng global

Chình index.js thành

var hello = require('./hello');

global.config = {loichao: "Xin chào"}

console.log(hello("VietPro"));

Cuối cùng bạn chạy lại file index.js

6.2 Đối tượng Process trong Node.js

Đối tượng process là một đối tượng toàn cục và có thể được truy tập từ bất cứ đâu

7 Express Framework

7.1 Giới thiệu Express

Express là một framework web Node.js phổ biến nhất và là thư viện cơ bản cho một số framework Node.js phổ biến khác Express cung cấp các cơ chế

Viết trình xử lý cho các yêu cầu (request) với các phương thức HTTP khác nhau tại các đường dẫn URL khác nhau (router)

Tích hợp công cụ hiện thị “view” để tạo các phản hồi bằng cách chèn dữ liệu vào các view

Trang 29

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 27

Thêm các yêu cầu xử lý trung gian “middleware” tại bất kỳ điểm nào luồng xử lý yêu cầu

7.2 Cài đặt và sử dụng Express

Express được cài đặt thông qua trình quản lý package của Node Để cài đặt express chạy command với lệnh sau

npm install express

Câu lệnh trên sẽ yêu cầu trình quản lý package tải xuống module được yêu cầu

Để sử dụng express chúng ta cùng đi qua một ví dụ sau Chúng ta sẽ tạo ra một ứng dụng đơn giản, đó là một server sẽ nghe trên cổng 3000

Tạo file server.js

var express = require('express'); //1

var app = express(); // 2

app.get('/', function(request, response){ // 3

response.send("Học viện công nghệ VietPro, Xin chào các bạn"); //4

});

app.listen(3000) //5

Tôi sẽ giải thích qua cho các bạn về đoạn code ở trên

Trong dòng code đầu tiên, chúng tôi sử dụng hàm require để import module vào

Ở dòng code số 2 , trước khi bắt đầu sử dụng express chúng tôi phải tạo một đối tượng thể hiện module express

Ở dòng code số 3, Từ đối tượng thể hiện của module express chúng tôi sử dụng một hàm callback Hàm này sẽ được gọi thi có một người nào đó truy cập vào đường dẫn http://localhost:3000 Hàm gọi lại sẽ dùng để phản hồi các nội dung cho máy khách

Ở dòng code số 4, Tham số response ở trong hàm callback được sử dụng để trả

về nội dung cho phía máy khách

Ở dòng code số 5, Cuối cùng chúng ta phương thức listen để lắng nghe các yêu cầu của máy khách trên cống 3000

Tiếp theo chúng ta tiến hành chạy server bằng command lệnh

node server

Khi lệnh được thực thi thành công Các bạn truy cập vào đường dẫn http://localhost:3000 ở trên trình duyệt

Trang 30

7.3 Router trong Express Framework

7.3.1 Router là gì?

Router là cách để máy chủ xác định và đáp ứng yêu cầu của máy khách Mỗi router có thể có một hoặc nhiều hàm điều khiển, được thực thi khi các yêu cầu trùng khớp

Ví dụ có một máy khách gửi yêu cầu bằng phương thức GET, POST, PUT hoặc DELETE cho các đường dẫn khác nhau, chẳng hạn như một URL được hiện thị bên dưới

path là một đường dẫn trên máy chủ

callback_handler là hàm được thực thi khi router khớp với path

Ví dụ

Tạo ra 3 router để đáp ứng yêu cầu sau

1 router với path là /user sẽ hiện thị nội dung “Đây là trang thành viên“

1 router với path là /admin sẽ hiện thị nội dung “Đây là trang quản trị“

1 router với path là / sẽ hiện thị nội dung “Đây là trang chủ“

Tạo file server.js với nội dung

var express = require('express');

var app = express();

app.get('/', function(request, response){

response.send("Đây là trang chủ");

});

Trang 31

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 29

app.get('/user', function(request, response){

response.send("Đây là trang thành viên");

});

app.get('/admin', function(request, response){

response.send("Đây là trang quản trị");

Ở đoạn code trên các bạn có thể thấy tối dùng app.get để truyền xử lý yêu cầu của các router /, /admin, /user thì get ở đây chính là phương thức dùng để xử lý các yêu cầu HTTP GET Ngoài ra các bạn có thể dùng post, put, delete … hoặc các phương thức khác để xử lý các yêu cầu HTTP tương ứng

7.3.3 Tham số router

Tham số router là các phân đoạn URL được sử dụng để nắm bắt các giá trị được chỉ định tại vị trí của chúng trong URL Các giá trị sẽ được chuyển đổi trong đối tượng request.params , với tên của tham số router được chỉ định trong đường dẫn router

Cú pháp

app.METHOD('/:param1/:param2 /:paramN, callback_handler);

Ví dụ: Với đường dẫn users/Id trong đó Id là một tham số động của đường dẫn

Tạo file server.js với nội dung sau

var express = require('express');

var app = express();

app.get('/user/:Id', function(request, response){

Trang 32

Lúc này bạn vào đường dẫn http://localhost:3000/user/15 để kiểm tra hoặc bạn

Hiện nay có rất nhiều template engine cho Node.js Mỗi template engine sử dụng các ngôn ngữ , cú pháp khác nhau để xác định các HTML templte và đưa dữ liệu vào

7.4.2 Danh sách các loại template engine

7.4.3 Ưu điểm khi sử dụng Template Engine

Cải thiện năng suất của các lập trình viên

Cải thiện khả năng đọc, bảo trì code

Hiêu suất nhanh hơn

Tối đa hóa cho xử lý phía khách hàng

Một template có thể dùng trong nhiều trang

7.4.4 Sử dụng Template Engine trong Express

Để hiện thị các tệp template engine chúng ta phải thiết lập trong ứng dụng của chúng ta 2 thành phần

Đường dẫn chứa tệp template

Khai báo loại template engine muốn sử dụng

Để thiết lập trong ứng dụng chúng ta sẽ có phương thức app.set() của đối tượng app

Cú pháp:

Thiết lập đường dẫn chứa tệp template:

app.set('views', folder)

Trang 33

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 31

Trong đó:

views là từ khóa được quy đinh để thiết lập đường dẫn chứa template

folder là một chuỗi dùng để cung cấp đường dẫn thư mục chứa file template

Mặc định là “./views”

Thiết lập loại tempalate engine

app.set('view engine', template_engine_name)

Trong đó

view engine là từ khóa quy định để thiết lập loại template engine muốn sử dụng template_engine_name tên loại template enigne sẽ sử dụng

7.4.5 Kết hợp EJS template với Express

Như đã liệt kê ở phần đầu, trong node.js có rất nhiều loại template engine có thể kết hợp, và một trong số đó là EJS

var express = require('express');

var app = express();

app.get('demoejs', function(request, response){

response.send('chào mừng các bạn đến với học viện công nghệ

Bây giờ chúng ta sẽ kết hợp EJS vào Express

Trước tiên các bạn tạo cho tôi một file với tên demo.ejs ở trong thư mục views với nội dung

<h1>Chào mừng bạn đến với học viện công nghệ VietPro</h1>

Trang 34

Bây giờ bạn chỉnh lại file server.js như sau

var express = require('express');

var app = express();

app.set('views', './views'); //1

app.set('view engine', 'ejs'); //2

app.get('/', function(request, response){

response.render('demo'); //3

});

app.listen(3000)

Lúc này bạn sẽ thấy tôi có chỉnh và thêm vài dòng code

Dòng thứ 1, Đây là đoạn code dùng để thiết lập thư mục chứa template

Dòng thứ 2, Đây là đoạn code dùng để thiết lập loại template engine muốn sử dụng

Dòng thứ 3, Dòng code này sẽ dùng để biên dịch một file templte engine để chuyển thành mã HTML

Bây giờ các bạn tiến hành chạy thử ứng dụng lên bằng command lệnh

node server

và truy cập vào đường dẫn http://localhost:3000

Các bạn sẽ nhận được nội dung từ file template engine được biên dịch sang mã HTML

7.5 Middleware Express

Trong ngành công nghiệp phần mềm, middleware là một thuật ngữ dùng để mô

tả một lớp phần mềm nằm giữa các ứng dụng và hệ điều hành Nhằm cung cấp dịch vụ cho các ứng dụng phần mềm ngoài những ứng dụng có sẵn từ hệ điều hành…

7.5.1 Middleware trong ứng dụng web

Trong lập trình web middleware đóng vai trò trung gian giữa yêu cầu của người dùng và phản hồi của máy chủ (request và response)

Ở trong các freamwork của các ngôn ngữ lập trình middleware là các hàm dùng

để xử lý các request trước khi đưa vào xử lý logic của ứng dụng web

7.5.2 Middleware trong Express

Ở trong express middleware là các hàm thực thi trong suốt vòng đời của một yêu cầu (request) tới máy chủ Express Mỗi middleware đều có quyền truy cập vào request và response của mỗi router được gắn vào

Middleware trong express sẽ thực hiện 4 công việc sau

Thực hiện bất kỳ dòng code nào như một hàm thông thường

Trang 35

Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 33

Thực hiện thay đổi đối với request và response

Kết thúc chu kỳ request-reponse

Gọi middleware tiếp theo

7.5.3 Cấu trúc middleware trong express

Một middleware trong express sẽ như thế nào?

Bên dưới là cấu trúc của một middleware ở trong express

function middlewareExample(request, response, next){

Ví dụ

Tôi sẽ ví dụ cho các bạn một middleware đơn giản sau đó chúng ta sẽ tìm hiểu các cách sử dụng middleware

File server.js

var express = require('express');

var app = express();

function myLogger(request, response, next){

console.log(`Có 1 client truy cập vào đường dẫn: ${request.url}` );

Hàm myLogger sẽ có chức năng là in ra đường dẫn mà client đang truy cập tới

Để sử dụng middleware tôi sử dụng app.use() của express và chỉ đinh các chức năng của middleware, cụ thể ở đây là chức năng myLogger

Bây giờ các bạn hãy chạy thử ví dụ trên bằng lệnh

Trang 36

node server

sau đó thử truy cập đường dẫn:

http://localhost:3000/abc, http://localhost:3000/xyz, http://localhost:3000 và thử kiểm tra hoạt động của middleware

7.5.4 Sử dụng middleware trong express

Sử dụng middleware ở cấp ứng dụng

Khi bạn khởi tạo một ứng dụng Web với Express một đối tượng đại diện cho ứng dụng của chúng ta đó là app (tùi theo mỗi người mà tên đối tượng này có thể sẽ khác) Chúng ta có thể sử dụng đối tượng này để khai báo middleware thông qua các hàm app.use() hoặc app.METHOD METHOD ở đây chính là các phương thức của request

Ví dụ với middleware khi không có đường dẫn Với kiểu khai báo như thế này thì mỗi khi có yêu cầu tới middleware sẽ được thực thi

File server.js

var express = require('express');

var app = express();

app.use(function(request, response, next){

console.log('Time:' + Date.now())

next();

});

app.get('/', function(request, response){

response.send('Chào mừng các bạn đến với học viện công nghệ

var express = require('express');

var app = express();

app.use('/user/:id', function(request, response, next){

console.log('Time:' + Date.now())

next();

});

Ngày đăng: 25/04/2021, 08:57

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w