1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu và áp dụng công nghệ mern stack để xây dựng demo website bán hàng thời trang

111 33 0

Đ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

Định dạng
Số trang 111
Dung lượng 5,71 MB

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

Nội dung

• Về project: Sản phẩm hoàn thành đã đạt được các nội dung như: Thao tác được với cơ sở dữ liệu NoSQL là MongoDBđể thao tác với big data thông qua sự hỗ trợ của mongoose khi thao tác trê

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH

TÌM HIỂU VÀ ÁP DỤNG CÔNG NGHỆ MERN STACK ĐỂ XÂY DỰNG DEMO WEBSITE BÁN HÀNG THỜI TRANG

ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN

GVHD: NGUYỄN THIÊN BẢO SVTT: NGUYỄN THỊ THỨC MSSV: 15110329

SVTH: ĐÀO HOÀN VŨ MSSV: 15110373

SKL 0 0 5 7 5 4

Trang 2

NGUYỄN THỊ THỨC - 15110329 ĐÀO HOÀN VŨ – 15110373

GIÁO VIÊN HƯỚNG DẪN

TS NGUYỄN THIÊN BẢO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

BỘ MÔN CÔNG NGHỆ PHẦN MỀM

Trang 3

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

KHOÁ LUẬN TỐT NGHIỆP KỸ SƯ CNTT

GIÁO VIÊN HƯỚNG DẪN

TS NGUYỄN THIÊN BẢO KHÓA 2015 - 2019 NGUYỄN THỊ THỨC - 15110329 ĐÀO HOÀN VŨ – 15110373

Trang 4

KHOA CNTT Độc lập – Tự do – Hạnh phúc

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Họ và tên SV thực hiện 1: Nguyễn Thị Thức Mã số SV: 15110329

Họ và tên SV thực hiện 2: Đào Hoàn Vũ Mã số SV: 15110373 Ngành: Công nghệ thông tin

Tên đề tài: Tìm hiểu và áp dụng công nghệ MERN stack để xây dựng demo website bán hàng thời trang

Họ và tên giáo viên hướng dẫn: T.S Nguyễn Thiên Bảo

NHẬN XÉT:

1 Về nội dung đề tài và khối lượng công việc thực hiện:

Về cơ bản nhóm đã đạt được các mục tiêu mà đề tài đã đặt ra như:

• Về lí thuyết: Đã tìm hiểu được các kiến thức cơ bản của các thành phần trong

mô hình MERN stack

• Về project: Sản phẩm hoàn thành đã đạt được các nội dung như: Thao tác được với cơ sở dữ liệu NoSQL là MongoDBđể thao tác với big data thông qua sự hỗ trợ của mongoose khi thao tác trên code NodeJS Nhóm đã tìm hiểu và tạo các API bằng NodeJS và framework của NodeJS là ExpressJS để nhiều thiết bị khác nhau có thể sử dụng chung nguồn dữ liệu Áp dụng thư viện redux để xây dựng giao diện khá đẹp và đầy đủ chức năng

Trang 5

• Ứng dụng có nhiều tính năng chưa được hoàn thành như:

- Chưa tích hợp được API của các cổng thanh toán trực tuyến

- Chưa thực hiện được chức năng thống kê các sản phẩm bán ra của cửa hàng

- Đưa ra danh sách các sản phẩm có liên quan đến sản phẩm mà khách hàng muốn mua

• Bất đồng về quan điểm giữa các thành viên trong nhóm

4 Đồng ý cho phản biện hay không? ………

5 Đánh giá loại: …………

6 Điểm: ………

TP.HCM, ngày tháng năm 2019

Giáo viên hướng dẫn

TS Nguyễn Thiên Bảo

Trang 6

ĐH SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA CNTT Độc lập – Tự do – Hạnh phúc

***** *****

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ và tên SV thực hiện 1: Nguyễn Thị Thức Mã số SV: 15110329 Họ và tên SV thực hiện 2: Đào Hoàn Vũ Mã số SV: 15110373 Ngành: Công nghệ thông tin Tên đề tài: Tìm hiểu và áp dụng công nghệ MERN stack để xây dựng demo website bán hàng thời trang Họ và tên giáo viên phản biện: T.S Nguyễn Thành Sơn NHẬN XÉT: 1 Về nội dung đề tài và khối lượng công việc thực hiện: ………

………

………

………

2 Ưu điểm: ………

………

………

………

3 Khuyết điểm: ………

………

………

………

4 Đồng ý cho bảo vệ hay không? …………

5 Đánh giá loại: …………

6 Điểm: ……… TP.HCM, ngày tháng năm 2019

Giáo viên phản biện

Trang 7

LỜI CẢM ƠN

Đề tài “Tìm hiểu và áp dụng công nghệ MERN để xây dựng website bán hàng thời trang” là nội dung chúng em chọn để nghiên cứu và hoàn thành khóa luận tốt nghiệp chuyên ngành công nghệ phần mềm

Để hoàn thành quá trình nghiên cứu và hoàn thiện luận văn này, lời đầu tiên cho phép chúng em xin chân thành cảm ơn sâu sắc đến thầy Nguyễn Thiên Bảo Thầy

đã trực tiếp chỉ bảo và hướng dẫn chúng em trong suốt quá trình nghiên cứu để chúng em hoàn thiện luận văn Ngoài ra chúng em cũng xin chân thành cảm ơn các thầy cô trong khoa Công nghệ thông tin đã đóng góp những ý kiến quý báu cho luận văn được ngày càng hoàn thiện hơn

Chúng em cũng xin chân thành cảm ơn bố mẹ đã nuôi nấng, dạy dỗ chúng em, luôn bên cạnh cổ vũ, tiếp thêm tinh thần, luôn ủng hộ và lắng nghe chúng em để chúng em có được như ngày hôm nay

Nhân dịp này, chúng em cũng xin cảm ơn lãnh đạo và các anh chị đang công tác tại trường đã tạo điều kiện, thời gian, cơ sở vật chất cho chúng em trong suốt quá trình nghiên cứu

Trân trọng cảm ơn!

Trang 8

Trường ĐH Sư Phạm Kỹ Thuật TP.HCM

Khoa: CNTT

ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP

Họ và Tên SV thực hiện 1: Nguyễn Thị Thức Mã Số SV: 15110329

Họ và Tên SV thực hiện 2: Đào Hoàn Vũ Mã Số SV: 15110373

Thời gian làm luận văn: Từ: 01/03/2019 Đến: 30/06/2019

Chuyên ngành: Công nghệ phần mềm

Tên luận văn: Tìm hiểu và áp dụng công nghệ MERN stack để xây dựng demo website bán hàng thời trang

GV hướng dẫn: TS Nguyễn Thiên Bảo

Nhiệm Vụ Của Luận Văn:

1 Tìm hiểu được các thành phần trong MERN stack (MongoDB, ExpressJS, ReactJS, NodeJS)

2 Xây dựng được các Restful API từ NodeJS, sử dụng framework là ExpressJS

3 Sử dụng ReactJS và thư viện Redux để nâng cao khả năng quản lí ở phía front-end cho trang web

4 Kết hợp API trong project ReactJS để thao tác với cơ sở dữ liệu

5 Hoàn thành trang web phục vụ mua bán hàng thời trang

Đề cương viết luận văn:

MỤC LỤC

1 Chương 1: MỞ ĐẦU

1.1 Sự cần thiết của đề tài

1.2 Mục đích của đề tài

1.3 Đối tượng và phạm vi nghiên cứu

1.4 Phân tích những công trình có liên quan

1.5 Kết quả dự kiến đạt được

2 Chương 2: CƠ SỞ LÍ THUYẾT

2.1 Công nghệ MERN STACK

Trang 9

3.4 Thiết kế giao diện

5.2 Ưu, nhược điểm

5.3 Hướng phát triển của đề tài

TÀI LIỆU THAM KHẢO

KẾ HOẠCH THỰC HIỆN

1

03/03 đến 17/03 Khảo sát hiện trạng và xác định yêu cầu và

thiết kế cơ sở dữ liệu

5 14/04 đến 28/04 Kết hợp API đã viết vào trang web

6 28/04 đến 12/05 Xây dựng chức năng login

16/06 đến 23/06 Public trang web lên host

Viết báo cáo

12 23/06 đến 30/06 Hoàn thành luận văn

Xác nhận của giáo viên hướng dẫn

TS Nguyễn Thiên Bảo

Ngày tháng năm 2019 Người viết đề cương

Nguyễn Thị Thức

Trang 10

MỤC LỤC

LỜI CẢM ƠN

ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP

DANH MỤC HÌNH ẢNH

DANH MỤC CÁC BẢNG

1 CHƯƠNG 1: MỞ ĐẦU 1

1.1 SỰ CẦN THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC ĐÍCH CỦA ĐỀ TÀI 3

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 3

1.4 PHÂN TÍCH NHỮNG CÔNG TRÌNH CÓ LIÊN QUAN 3

1.5 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC 4

2 CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG 5

2.1 CÁC WEBSITE TƯƠNG TỰ 5

2.1.1 Zara 5

2.1.2 MWC Store 5

2.2 YÊU CẦU CỦA WEBSITE 6

3 CHƯƠNG 3: CƠ SỞ LÍ THUYẾT 7

3.1 CÔNG NGHỆ MERN STACK 7

3.1.1 MongoDB 9

3.1.2 NodeJS 22

3.1.3 ExpressJS 26

3.1.4 ReactJS 31

3.2 RESTFUL API 38

3.2.1 Các thành phần 38

3.2.2 Cách hoạt động 39

3.2.3 Authentication và dữ liệu trả về 40

3.3 MONGOOSE 42

3.3.1 Định nghĩa 42

3.3.2 Thiết lập Mongoose 43

3.3.3 Định nghĩa schema cho Mongoose 44

3.3.4 Tạo và lưu những model của Mongoose 46

3.3.5 Xác thực dữ liệu trong schema 47

3.3.6 Một số thao tác với cơ sở dữ liệu 48

Trang 11

3.4.1 Giới thiệu 50

3.4.2 Các nguyên tắc cơ bản của Redux 51

3.4.3 Tính ứng dụng của Redux 52

4 CHƯƠNG 4: PHÂN TÍCH VÀ THIẾT KẾ ỨNG DỤNG 53

4.1 ĐẶC TẢ YÊU CẦU 53

4.1.1 Yêu cầu chức năng nghiệp vụ 53

4.1.2 Yêu cầu chức năng hệ thống 54

4.1.3 Yêu cầu phi chức năng 54

4.2 LƯỢC ĐỒ USE CASE 55

4.2.1 Lược đồ use case tổng quát 55

4.2.2 Danh sách các use case 55

4.3 CƠ SỞ DỮ LIỆU 61

4.3.1 Category Document 61

4.3.2 Orders Document 62

4.3.3 Employees Document 65

4.3.4 Customer Document 66

4.4 THIẾT KẾ GIAO DIỆN 68

4.4.2 Thiết kế giao diện cho khách hàng 68

4.4.3 Thiết kế giao diện cho nhân viên 73

4.4.4 Thiết kế giao diện cho admin: 79

4.5 THIẾT KẾ XỬ LÍ 80

4.5.2 Khách hàng 80

4.5.3 Quản lí 81

5 CHƯƠNG 5: CÀI ĐẶT VÀ KIỂM THỬ 83

5.3 CÀI ĐẶT 83

5.4 KIỂM THỬ 86

5.4.2 Test phần khách hàng 86

5.4.3 Test phần member 88

5.4.4 Test phần admin 93

6 CHƯƠNG 6: KẾT LUẬN 94

6.1 KẾT QUẢ ĐẠT ĐƯỢC 94

6.2 ƯU, NHƯỢC ĐIỂM 94

6.2.1 Ưu điểm 94

6.2.2 Nhược điểm 95

Trang 12

6.3 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 95

TÀI LIỆU THAM KHẢO 96

Trang 13

DANH MỤC HÌNH ẢNH

Hình 1 Website Zara 5

Hình 2 Website MWC Store 5

Hình 3 Công nghệ MERN STACK 7

Hình 4 Hệ quản trị cơ sở dữ liệu MongoDB 9

Hình 5 Mô tả _id trong MongoDB 10

Hình 6 Mô tả Collection trong MongoDB 10

Hình 7 Mô tả Cursor trong MongoDB 11

Hình 8 Ví dụ Document trong MongoDB 11

Hình 9 Ví dụ về Indexes trong MongoDB 12

Hình 10 Ví dụ về cấu trúc dữ liệu của MongoDB và SQL 13

Hình 11 Cơ chế hoạt động của MongoDB 17

Hình 12 Lợi thế ít Schema trong MongoDB 19

Hình 13 Khả năng mở rộng của MongoDB 20

Hình 14 Cách lưu trữ và cho phép truy cập của MongoDB 20

Hình 15 Minh họa NodeJS 22

Hình 16 Minh họa ExpressJS 26

Hình 17 Minh họa cấu trúc của ExpressJS 27

Hình 18 Hoạt động của ExpressJS 28

Hình 19 Quá trình nhận request và trả lại respone của ExpressJS 29

Hình 20 Code ví dụ về điều kiện phản hồi của ExpressJS 29

Hình 21 Thư viện ReactJS 31

Hình 22 Ví dụ về phân nhóm theo tính năng hoặc theo routes 32

Hình 23 Ví dụ về phân nhóm theo loại file 32

Hình 24 So sánh thay đổi của props và state trong component 37

Hình 25 Giới thiệu mô hình hoạt động của Restful API 38

Hình 26 Minh họa framework Mongoose 42

Hình 27 Thư viện Redux 50

Hình 28 Cách hoạt động của Redux 51

Hình 29 Use case tổng quát 55

Hình 30 Use case đăng nhập 55

Hình 31 Use case quản lý mã giảm giá 56

Hình 32 Use case quản lý loại sản phẩm 57

Hình 33 Use case quản lý sản phẩm 58

Hình 34 Use case quản lý khách hàng 59

Hình 35 Use case quản lý giỏ hàng 60

Hình 39 Giao diện màn hình đăng nhập 68

Hình 40 Giao diện màn hình quản lý thông tin của khách hàng 69

Hình 41 Giao diện màn hình xem giỏ hàng 71

Hình 42 Giao diện màn hình thêm sản phẩm vào giỏ hàng 72

Hình 43 Giao diện thêm sản phẩm vào giỏ hàng #2 72

Hình 44 Giao diện màn hình quản lý thông tin nhân viên 73

Hình 45 Giao diện màn hình hiển thị danh sách sản phẩm 74

Hình 46 Giao diện màn hình xem thông tin sản phẩm 75

Hình 47 Giao diện màn hình xem thông tin chi tiết sản phẩm 76

Hình 48 Giao diện màn hình hiển thị danh sách các loại sản phẩm 77

Hình 49 Giao diện màn hình hiển thị đơn hàng 78

Hình 50 Giao diện màn hình xem danh sách nhân viên 79

Hình 51 Giao diện màn hình chi tiết nhân viên 80

Hình 52 Lược đồ tuần tự màn hình đăng nhập 80

Hình 53 Lược đồ tuần tự màn hình chỉnh sửa thông tin cá nhân 81

Hình 54 Lược đồ tuần tự màn hình xóa nhân viên 81

Hình 55 Lược đồ tuần tự màn hình thêm nhân viên 82

Hình 56 Cài đặt các thư viện cần thiết cho API 83

Hình 57 Cài đặt thư viện cần thiết cho API 83

Hình 59 Trở lại thư mục mern-stack-app 84

Hình 60 Chạy npm run dev 84

Hình 61 Kết quả sau khi cài đặt 85

Trang 14

DANH MỤC CÁC BẢNG

Bảng 1 So sánh giữa RDBMS và MongoDB 13

Bảng 2 Các dữ liệu trong MongoDB 13

Bảng 3 Một số câu lệnh thường được sử dụng trong MongoDB 15

Bảng 4 Use case đăng nhập 55

Bảng 5 Use case quản lý mã giảm giá 56

Bảng 6 Use case quản lý loại sản phẩm 57

Bảng 7 Use case quản lý sản phẩm 58

Bảng 8 Use case quản lý khách hàng 59

Bảng 9 Use case quản lý giỏ hàng 60

Bảng 22 Mô tả giao diện đăng nhập 68

Bảng 23 Mô tả giao diện màn hình thông tin cá nhân 69

Bảng 24 Mô tả giao diện màn hình xem giỏ hàng 70

Bảng 25 Mô tả giao diện thêm sản phẩm vào giỏ hàng 73

Bảng 26 Mô tả màn hình thông tin cá nhân 74

Bảng 27 Mô tả màn hình hiển thị danh sách sản phẩm 75

Bảng 28 Mô tả màn hình xem thông tin sản phẩm 76

Bảng 29 Mô tả màn hình xem thông tin chi tiết sản phẩm 77

Bảng 30 Mô tả giao diện hiển thị danh sách các loại sản phẩm 78

Bảng 31 Mô tả màn hình xem danh sách nhân viên 79

Bảng 32 Test màn hình đăng nhập 86

Bảng 33 Test màn hình thông tin cá nhân 86

Bảng 34 Test màn hình xem giỏ hàng 87

Bảng 35 Test màn hình thêm sản phẩm vào giỏ hàng 88

Bảng 36 Test màn hình xem thông tin nhân viên 88

Bảng 37 Test màn hình xem danh sách sản phẩm 88

Bảng 38 Test màn hình xem thông tin chi tiết sản phẩm 89

Bảng 39 Test màn hình xem danh sách mã giảm giá 90

Bảng 40 Test màn hình xem thông tin khách hàng 91

Bảng 41 Test màn hình xem danh sách các loại sản phẩm 91

Bảng 42 Test màn hình xem đơn hàng 92

Bảng 43 Test màn hình danh sách nhân viên 93

Trang 15

1 CHƯƠNG 1: MỞ ĐẦU 1.1 SỰ CẦN THIẾT CỦA ĐỀ TÀI

Thế giới đang ngày càng phát triển, kéo theo đó là sự phát triển không ngừng của nền khoa học nói chung và công nghệ thông tin nói riêng Ngày nay công nghệ thông tin là điều không thể thiếu trong hầu hết các lĩnh vực, trong đó có kinh doanh,

cụ thể là kinh doanh các mặt hàng thời trang Nếu không thiết kế web, bạn đã vô tình

bỏ qua khoảng 90% lượng khách hàng đến với mình mà không hề hay biết Vậy thì tại sao website lại có ma lực giúp chủ cửa hàng tiếp cận một lượng khách hàng lớn đến như vậy? Dưới đây là những lí do chính để trả lời cho câu hỏi này:

Thứ nhất: bạn sẽ có thể tăng khả năng tiếp cận khách hàng của mình: Nếu cửa hàng không có trang web riêng, khách hàng sẽ chỉ có thể mua sản phẩm, nhận dịch

vụ và tương tác với chủ cửa hàng trong giờ hành chính Điều này khiến các dịch vụ cũng như hoạt động của cửa hàng bị giới hạn Một cửa hàng có thể thu hút được khách địa phương nhưng lại là hạn chế đối với những khách hàng ở khu vực khác Tuy nhiên, khi cửa hàng xây dựng một trang web riêng thì phạm vị khách hàng sẽ không bị giới hạn Cơ hội nhận được đơn đặt hàng của khách từ khắp mọi nơi trên đất nước sẽ ngày càng tăng cao

Thứ hai: Quản lý hàng hóa dễ dàng: Nếu bạn bán hàng trên facebook? rõ ràng bạn phải xem xét rất nhiều thứ để biết được hàng đó còn hay hết, đặc biệt nếu bạn là chủ và có một nhân viên khác bán hàng Nếu bạn đang có một vài cửa hàng ở các quận khác nhau, nếu muốn biết số hàng này còn hay hết bạn sẽ phải xem xét sổ sách thống kế rất phức tạp Hoặc phải đợi cuối tuần hoặc cuối tháng nhân viên tổng kết lại bạn mới nắm được việc kinh doanh của mình tiến triển như thế nào Nếu bạn đang dùng một phần mềm được lập trình để quản lý kinh doanh? cũng được đấy Nhưng chưa phải là tốt nhất! Chắc chắn bạn không thể dùng điện thoại của mình để check

các thống kê được Nhưng hệ thống quản trị của website làm được tất cả những việc

đó, ngay cả khi bạn chỉ cầm một chiếc smartphone khi đang đi du lịch

Thứ ba: Dịch vụ chăm sóc khách hàng hiệu quả: Mọi người đều dễ dàng gõ một câu hỏi khi thắc mắc về sản phẩm của bạn khi phần comment được tích hợp trên website hơn là cầm điện thoại lên để alo

Trang 16

Thứ tư: Website là nền tảng cho thương mại điện tử: Một người đi làm 8h/ngày thì sẽ có rất ít thời gian đi mua sắm ở cửa hàng hay các trung tâm mua sắm offline

Đó là lý do mà bán hàng online ngày càng phát triển

Thứ năm: Xây dựng thương hiệu: Bạn nghĩ bán hàng qua facebook bằng cách live stream tặng quà, khuyến mãi … là bạn đang bán hàng online? Không hẳn vậy Thực tế là có đến gần 90% lượng khách hàng lựa chọn sản phẩm của shop có website riêng hơn là những shop khác Bởi lẽ: Xây dựng thương hiệu là điều đáng quan tâm của một doanh nghiệp và trang web sẽ giúp doanh nghiệp làm điều này Nó phản ánh một hình ảnh chuyên nghiệp thông qua giao diện và các hoạt động của doanh nghiệp Địa chỉ email, tên miền và cách giao tiếp với khách hàng qua website giúp doanh nghiệp xây dựng uy tín và sự tin cậy cho khách hàng, tạo dựng thương hiệu và truyền

bá hình ảnh trên toàn thế giới

Thứ sáu: Hoạt động 24/7: Với Website chuyên nghiệp, cửa hàng của bạn dường như không bao giờ ngừng làm việc để phục vụ khách hàng, từ đó, giúp bạn tiết kiệm

về thời gian lẫn chi phí

Website sẽ hoạt động 24/7, bất cứ khi nào khách hàng cần, kể cả giờ nghỉ của nhân viên hoặc ngày nghỉ lễ Thông qua Website, khách hàng dễ dàng tiếp cận hơn với cửa hàng, sử dụng dịch vụ của bạn một cách dễ dàng nhất dù họ ở nơi đâu, bất cứ lúc nào

Thứ 7: Với khả năng phối đồ khá tinh tường của các nhân viên thì không những chọn một chiếc áo, chiếc quần hay đôi giày, … Mà khách hàng có thể lựa chọn nguyên một set đồ để dự một sự kiện, một buổi tiệc nào đó thông qua chức năng đề xuất của website Điều này chẳng những tạo sự linh động trong cách bán hàng mà còn giúp tăng doanh số một cách đáng kể

Hơn thế nữa, bạn có thể đưa những thắc mắc thường gặp của khách hàng lên website và thiết lập hệ thống trả lời những câu hỏi đó Sẽ tiết kiệm rất nhiều thời gian trả lời điện thoại hoặc thuê riêng một nhân viên hỗ trợ

Bên cạnh việc đã có được một trang web, việc trang web đó hoạt động như thế nào để đáp ứng được nhu cầu của người dùng cũng là một vấn đề rất đáng được quan tâm Với một trang web truyền thống, khi người dùng yêu cầu một trang web, thì

Trang 17

server sẽ tính toán và trả về trang web đó cho người dùng toàn bộ trang web dưới dạng

mã html Hầu như không có bất kỳ sự liên kết nào giữa 2 yêu cầu gần nhau Do đó khi

có nhiều yêu cầu được diễn ra thì sẽ làm quá trình tính toán diễn ra lâu hơn, bởi hệ thống phải tính toán nhiều thành phần trước khi trả về một trang web hoàn chỉnh, điều

đó khiến cho performance của trang web khá chậm Chính vì các lí do đó mà SPAs (single page applications) đã được ra đời Sau khi load trang web ở lần đầu tiên, ở những lần sau, khi chuyển trang khác, client sẽ gửi những request để nhận dữ liệu cần thiết (thường là phần nội dung) Việc này mang đến trải nghiệm cho người dùng web tốt hơn, giảm thời gian phải load lại toàn bộ trang web cồng kềnh, tiết kiệm băng thông cũng như thời gian chờ đợi Việc này là trái ngược hoàn toàn với trang web truyền thống khi toàn bộ trang web phải load lại mỗi khi chuyển trang

Có quá nhiều lý do để trả lời cho một câu hỏi: Vì sao cần phải có một website kinh doanh thời trang hoàn hảo, chạy nhanh? Vậy nên website kinh doanh là một phần không thể thiếu đối với các shop thời trang trong thời kỳ hiện đại của thế giới ngày nay

1.2 MỤC ĐÍCH CỦA ĐỀ TÀI

Đề tài “Tìm hiểu và áp dụng công nghệ MERN STACK để xây dựng website bán hàng thời trang” thuộc hướng tìm hiểu công nghệ để từ đó xây dựng ứng dụng Mục tiêu của đề tài là tìm hiểu các kiến thức cơ bản của MERN STACK trong việc

áp dụng để xây dựng một trang web theo hướng Single Page Applications

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

- Đối tượng nghiên cứu: Công nghệ MERN STACK

- Phạm vi nghiên cứu: Ứng dụng của công nghệ MERN STACK trong xây dựng một trang web

1.4 PHÂN TÍCH NHỮNG CÔNG TRÌNH CÓ LIÊN QUAN

Trong quá trình làm tiểu luận, nhóm đã tham khảo các trang web trên internet

về bán hàng online như: Shopee, Lazada, … Để nắm bắt được xu hướng ưa thích giao diện của người dùng về trang web bán hàng trực tuyến và đưa ra giao diện phù hợp Ngoài ra, nhóm cũng có tham khảo các dự án bằng ReactJS và NodeJS thông qua các kênh youtube để hoàn thành website

Trang 18

1.5 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC

- Tìm hiểu các kiến thức cơ bản về công nghệ MERN STACK trong xây dựng một ứng dụng web bao gồm các đặc điểm và chức năng như:

+ Thêm, sửa, xóa các đối tượng được quản lí bởi website như: sản phẩm, khách hàng, nhân viên, danh sách các loại sản phẩm, … Tùy theo chức năng của từng người dùng (nhân viên và khách hàng)

Trang 19

2 CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG 2.1 CÁC WEBSITE TƯƠNG TỰ

Trang 20

2.2 YÊU CẦU CỦA WEBSITE

- Thao tác được với cơ sở dữ liệu NoSQL là MongoDB đang được sử dụng rất rộng rãi hiện nay để thao tác với big data thông qua sự hỗ trợ của mongoose khi thao tác trên code NodeJS Với cơ sở dữ liệu, nhóm đã có thể hiểu được cấu trúc của một document và thao tác để thêm mới, sửa, và xóa đi các thành phần của document, lấy dữ liệu mong muốn từ document trong cơ sở dữ liệu

- Với nhu cầu hiện tại, phần lớn các trang web được thiết kế với phần lấy dữ liệu

là sử dụng các API (Resful API) để nhiều thiết bị khác nhau có thể sử dụng chung nguồn dữ liệu Chính vì vậy, nhóm đã tìm hiểu và tạo các API bằng NodeJS và framework của NodeJS là ExpressJS

- Về phía Client: Phần giao diện với người sử dụng được viết bằng ReactJS và áp dụng thư viện nâng cao hơn là Redux để hoàn thành giao diện Về cơ bản, trang web đã có thể thực hiện các thao tác cho người khách hàng có thể đăng kí tài khoản mới, xem các sản phẩm, xem chi tiết sản phẩm, thêm sản phẩm vào giỏ hàng và đăng nhập vào hệ thống để thực hiện mua hàng Về phía những người quản trị trang web: có thể quản lí thông tin tất cả các đối tượng liên quan đến cửa hàng như: sản phẩm, loại sản phẩm, mã giảm giá, danh sách nhân viên, khách hàng, … Đồng thời, người sử dụng có thể thao tác để sửa chữa thông tin cá nhân của mình

Trang 21

3 CHƯƠNG 3: CƠ SỞ LÍ THUYẾT 3.1 CÔNG NGHỆ MERN STACK

Một ứng dụng web được xây dựng dựa trên sự kết hợp của nhiều công nghệ khác nhau, sự kết hợp của các công nghệ lại với nhau như vậy được gọi là “stack” Một trong những stack nổi tiếng là LAMP (sự kết hợp giữa Linux, Apache, MySQL

và PHP, đều là những thành phần mã nguồn mở) Khi sự phát triển web ngày càng phát triển và tính tương tác ngày càng nổi bật thì SPAs (single page applications) lại trở nên phổ biến hơn Một ứng dụng web SPA thay vì việc gọi lên server để tải lại toàn bộ nội dung của trang sau mỗi lần có request từ phía client sẽ chỉ gọi lên server để lấy các nội dung cần thiết cần được thay đổi Chính điều này đã dẫn đến yêu cầu ngày càng nâng cao về ngôn ngữ xử lí ở phía front-end

Hình 3 Công nghệ MERN STACK

MEAN (MongoDB, Express, AngularJS, Node.js) STACK là một trong những

bộ công cụ mã nguồn mở áp dụng theo mô hình SPAs (single page applications) cùng với việc áp dụng cơ sở dữ liệu NoSQL Trong stack này:

- AngularJS đóng vai trò là một front-end framework dựa trên mô hình MVC

(model-view-controller)

- MongoDB dùng để lưu trữ dữ liệu là một hệ quản trị cơ sở dữ liệu NoSQL

rất phổ biến

- NodeJS: là một JavaScript runtime

Trước NodeJS, các nhà phát triển phần mềm sẽ phải sử dụng các ngôn ngữ khác nhau như PHP, Java, ASP.NET, … chạy trên máy chủ và JavaScript sẽ chạy

Trang 22

trong trình duyệt máy khách Giờ đây với NodeJS, các nhà phát triển có thể sử dụng JavaScript trên máy chủ cũng như máy khách NodeJS cho phép JavaScript chạy

mà không cần trình duyệt và thường được sử dụng để chạy các máy chủ web Một chương trình sẽ nhận source code và:

• Phân tích source và thực thi từng đơn vị có thể

• Cung cấp một vài object để javascript có thể tương tác với thế giới bên ngoài

NodeJS được xây dựng trên JavaScript runtime V8 của chrome để đáp ứng nhu cầu phát triển nhanh và có thể mở rộng của ứng dụng Để tương tác với môi trường, V8 cung cấp các lớp template bọc ngoài các object và function được viết bởi C++ Các function C++ này có thể làm nhiệm vụ đọc – ghi file system, thao tác networking hoặc giao tiếp các tiến trình khác trong hệ thống Các biến được cung cấp bởi các thư viện, đón nhận source và thực thi nó

- ExpressJS là một web framework được xây dựng bằng javascript chạy trên

nền NodeJS Nó hỗ trợ thêm nhiều tính năng cần có của một web framework như:

routing, middlewares, …

Bản thân NodeJS có thể làm được mọi thứ nhưng ExpressJS được ra đời để các thao tác được thực hiện dễ dàng hơn

Ưu điểm của việc sử dụng ExpressJS:

• Có khả năng sử dụng cho Sass, Less, Stylus

Trang 23

NoSQL là 1 dạng CSDL mã nguồn mở không sử dụng Transact-SQL để truy vấn thông tin NoSQL viết tắt bởi: Non-Relational SQL, hay có nơi thường gọi là Not-Only SQL CSDL này được phát triển trên Javascript Framework với kiểu dữ liệu JSON (Cú pháp của JSON là “key:value”) NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ

RDBMS về tốc độ, tính năng, khả năng mở rộng, memory cache,

Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collections và Documents, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng

((*) https://docs.mongodb.com/manual/reference/operator/query/type/)

3.1.1.2 Các thuật ngữ hay được sử dụng trong MongoDB:

Trang 24

- _id: Là trường bắt buộc có trong mỗi document Trường _id đại diện cho một

giá trị duy nhất trong document MongoDB Trường _id cũng có thể được hiểu là khóa chính trong document Nếu bạn thêm mới một document thì MongoDB sẽ tự động sinh ra một _id đại diện cho document đó và là duy nhất trong cơ sở dữ liệu MongoDB

Hình 5 Mô tả _id trong MongoDB

- Collection: Là nhóm của nhiều document trong MongoDB Collection có thể

được hiểu là một bảng tương ứng trong cơ sở dữ liệu RDBMS (Relational Database Management System) Collection nằm trong một cơ sở dữ liệu duy nhất Các collection không phải định nghĩa các cột, các hàng hay kiểu dữ liệu trước

Hình 6 Mô tả Collection trong MongoDB

Trang 25

- Cursor: Đây là một con trỏ đến tập kết quả của một truy vấn Máy khách có

thể lặp qua một con trỏ để lấy kết quả

Hình 7 Mô tả Cursor trong MongoDB

- Database: Nơi chứa các Collection, giống với cơ sở dữ liệu RDMS chúng

chứa các bảng Mỗi Database có một tập tin riêng lưu trữ trên bộ nhớ vật lý Một mấy chủ MongoDB có thể chứa nhiều Database

- Document: Một bản ghi thuộc một Collection thì được gọi là một Document

Các Document lần lượt bao gồm các trường tên và giá trị

Hình 8 Ví dụ Document trong MongoDB

- Field: Là một cặp name – value trong một document Một document có thể

có không hoặc nhiều trường Các trường giống các cột ở cơ sở dữ liệu quan hệ

Trang 26

- JSON: Viết tắt của JavaScript Object Notation Con người có thể đọc được

ở định dạng văn bản đơn giản thể hiện cho các dữ liệu có cấu trúc Hiện tại JSON đang hỗ trợ rất nhiều ngôn ngữ lập trình

- Index: Là những cấu trúc dữ liệu đặc biệt, dùng để chứa một phần nhỏ của

các tập dữ liệu một cách dễ dàng để quét Chỉ số lưu trữ giá trị của một fields cụ thể hoặc thiết lập các fields, sắp xếp theo giá trị của các fields này Index hỗ trợ độ phân tích một cách hiệu quả các truy vấn Nếu không có chỉ mục, MongoDB sẽ phải quét tất cả các documents của collection để chọn ra những document phù hợp với câu truy vấn Quá trình quét này là không hiệu quả và yêu cầu MongoDB để xử lý một khối lượng lớn dữ liệu

Hình 9 Ví dụ về Indexes trong MongoDB

- Schema: Trong MongoDB không có lược đồ còn trong SQL thì định nghĩa

lược đồ thông qua các định nghĩa bảng Một “schema” là một cấu trúc của tài liệu

và nó được thực thi thông qua các lớp ứng dụng

Trang 27

Join Embeded Documents, Linking

3.1.1.4 Các kiểu dữ liệu trong MongoDB:

Bảng 2 Các dữ liệu trong MongoDB

Trang 29

- Chuỗi: Đây là kiểu dữ liệu được sử dụng phổ biến nhất để lưu giữ dữ liệu Chuỗi trong MongoDB phải là UTF-8 hợp lệ

- Số nguyên: Kiểu dữ liệu này được sử dụng để lưu một giá trị số Số nguyên

có thể là 32 bit hoặc 64 bit phụ thuộc vào Server

- Boolean: Kiểu dữ liệu này được sử dụng để lưu giữ một giá trị Boolean (true/false)

- Double: Kiểu dữ liệu này được sử dụng để lưu các giá trị số thực dấu chấm động

- Min/ Max keys: Kiểu dữ liệu này được sử dụng để so sánh một giá trị với các

- Object: Kiểu dữ liệu này được sử dụng cho các Document được nhúng vào

- Null: Kiểu dữ liệu này được sử dụng để lưu một giá trị Null

- Symbol: Kiểu dữ liệu này được sử dụng giống như một chuỗi

- Date: Kiểu dữ liệu này được sử dụng để lưu giữ date và time hiện tại trong

định dạng UNIX time

- Object ID: Kiểu dữ liệu này được sử dụng để lưu giữ ID của Document

- Binary data: Kiểu dữ liệu này được sử dụng để lưu giữ dữ liệu nhị phân

- Code: Kiểu dữ liệu này được sử dụng để lưu giữ JavaScrip code vào trong

Document

- Regular expression: Kiểu dữ liệu này được sử dụng để lưu giữ Regular

Expresion

3.1.1.5 Một số câu lệnh dùng trong MongoDB:

Bảng 3 Một số câu lệnh thường được sử dụng trong MongoDB

Create table CREATE TABLE people (id

MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age

db.people.insertOne({User_id:

“abc123”, Age: 55, Status:

“A”})

Trang 30

Number, status char(1), PRIMARY KEY (id))

Drop table DROP TABLE people db.people.drop()

Insert records

into tables

INSERT INTO people(user_id, age, status) VALUES ("bcd001", 45,

"A")

db.people.insertOne( { user_id:

"bcd001", age: 45, status: "A" })

Select SELECT *FROM people db.people.find()

SELECT id,user_id, status FROM people

db.people.find( { }, { user_id: 1

status: 1 } )

SELECT * FROM people WHERE status = "A"

db.people.find( { status: "A" } )

SELECT * FROM people WHERE status = "A" AND age = 50

db.people.find( { status: "A", age: 50 } )

SELECT * FROM people WHERE status = "A" OR age

db.people.find( { user_id: {

$regex: /bc/ } } )

SELECT COUNT(user_id) FROM people

db.people.count( { user_id: {

$exists: true } } ) db.people.find( { user_id: {

$exists: true } } ).count()

Trang 31

DELETE FROM people db.people.deleteMany({})

3.1.1.6 MongoDB hoạt động như thế nào:

Hình 11 Cơ chế hoạt động của MongoDB

- MongoDB hoạt động dưới một tiến trình ngầm service, luôn mở một cổng (Cổng mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi vào sau đó mới tiến hành xử lý

- Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên

“_id” thuộc kiểu dữ liệu ObjectId mà nó quy định để xác định được tính duy nhất

Trang 32

của bản ghi này so với bản ghi khác, cũng như phục vụ các thao tác tìm kiếm và truy vấn thông tin về sau Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất

- Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng

- Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng mặc định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng

3.1.1.7 Nhược điểm của MongoDB:

- Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ nhớ RAM lớn

- Như đã giới thiệu ở trên, mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện đột xuất là rất cao

3.1.1.8 Lợi thế của MongoDB:

- Ít schema hơn: Vì schema được sinh ra là để nhóm các đối tượng vào 1 cụm,

dễ quản lý Ví dụ như tạo 1 schema tên là Students chẳng hạn thì chỉ có những gì liên quan đến student thì mới được cho vào schema này Trong khi đó trong mongodb thì chỉ 1 collection ta có thể chứa nhiều document khác nhau Với mỗi document thì số trường, nội dung, kích thước lại có thể khác nhau

Trang 33

Hình 12 Lợi thế ít Schema trong MongoDB

- Cấu trúc của một đối tượng rõ ràng

- Không có các Join phức tạp

- Khả năng mở rộng cực lớn: việc mở rộng dữ liệu mà không phải lo đến các vấn đề như khóa ngoại, khóa chính, kiểm tra ràng buộc, MongoDB cho phép thực hiện replication và sharding nên việc mở rộng cũng thuận lợi hơn

Trang 34

Hình 13 Khả năng mở rộng của MongoDB

- Sử dụng bộ nhớ trong để lưu giữ cửa sổ làm việc cho phép truy cập dữ liệu nhanh hơn Việc cập nhật được thực hiện nhanh gọn nhờ update tại chỗ (in-place)

Hình 14 Cách lưu trữ và cho phép truy cập của MongoDB

Trang 35

3.1.1.9 Khi nào nên sử dụng MongoDB:

- Nếu website có tính chất INSERT cao: Bởi vì mặc định MongoDB có sẵn cơ chế ghi với tốc độ cao và an toàn Website ở dạng thời gian thực nhiều, nghĩa là nhiều người thao tác với ứng dung Nếu trong quá trình load bị lỗi tại một điểm nào

đó thì nó sẽ bỏ qua phần đó nên sẽ an toàn

- Website có nhiều dữ liệu quá: Giả sử web bạn có đến 10 triệu records thì đó

là cơn ác mộng với MySQL Bởi vì MongoDB có khả năng tìm kiến thông tin liên quan cũng khá nhanh nên trường hợp này nên dùng nó

- Máy chủ không có hệ quản trị CSDL: Trường hợp này thường sẽ sử dụng SQLITE hoặc là MongoDB

3.1.1.10 Khi nào không nên sử dụng MongoDB:

- Các ứng dụng cần sử dụng nhiều transaction (như ngân hàng) do Mongodb không có cơ chế transaction (giao dịch) để phục vụ cho các ứng dụng ngân hàng

- Các ứng dụng cần SQL (sử dụng joins)

3.1.1.11 Các công cụ quản trị MongoDB:

Một số công cụ điển hình như:

- Bước 1: Tải MongoDB từ link (https://www.mongodb.org/downloads)

- Bước 2: Chạy file vừa tải về

- Bước 3: Chạy file mongod (trong thư mục chọn cài đặt MongoDB) để khởi động mongoDB

- Bước 4: Dùng địa chỉ 127.0.0.1:27017 để tạo connection đến mongoDB

Trang 36

- NodeJS chứa một thư viện built-in cho phép các ứng dụng hoạt động như một Webserver mà không cần phần mềm như Nginx, Apache HTTP Server hoặc IIS

- NodeJS cung cấp kiến trúc hướng sự kiện (event-driven) và non-blocking I/O API, tối ưu hóa thông lượng của ứng dụng và có khả năng mở rộng cao

- Mọi hàm trong NodeJS là không đồng bộ (asynchronous) Do đó, các tác vụ đều được xử lý và thực thi ở chế độ nền (background processing)

3.1.2.2 Ứng dụng của NodeJS:

- Xây dựng websocket server (Chat server)

- Hệ thống Notification (Giống như facebook hayTwitter)

- Ứng dụng upload file trên client

- Các máy chủ quảng cáo

Trang 37

3.1.2.3 Nhược điểm của NodeJS:

- Ứng dụng nặng tốn tài nguyên: Nếu bạn cần xử lý các ứ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 (Lý do: 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) Trường hợp này bạn hãy viết 1 Addon C++ để tích hợp với NodeJS để tăng hiệu suất tối đa!

- NodeJS và ngôn ngữ khác NodeJS: PHP, Ruby, Python NET …thì việc cuối cùng là phát triển các App Web NodeJS mới sơ khai như các ngôn ngữ lập trình khác Vậy nên bạn đừng hi vọng NodeJS sẽ không hơn PHP, Ruby, Python… ở thời điểm này Nhưng với NodeJS bạn có thể có 1 ứng dụng như mong đợi, điều đó là chắc chắn!

3.1.2.4 Ưu điểm của NodeJS:

- Đặc điểm nổi bật của NodeJS là nó nhận và xử lý nhiều kết nối chỉ với một single-thread Điều này giúp hệ thống tốn ít RAM nhất và chạy nhanh nhất khi không phải tạo thread mới cho mỗi truy vấn giống PHP Ngoài ra, tận dụng ưu điểm non-blocking I/O của Javascript mà NodeJS tận dụng tối đa tài nguyên của server mà không tạo ra độ trễ như PHP

- JSON APIs Với 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

- Ứng dụng trên 1 trang (Single page Application) Nếu bạn định viết 1 ứng dụng thể hiện trên 1 trang (Gmail?) NodeJS rất phù hợp để làm Với khả năng xử lý nhiều Request/s đồng thời thời gian phản hồi nhanh Các ứng dụng bạn định viết không muốn nó tải lại trang, gồm rất nhiều request từ người dùng cần sự hoạt động nhanh để thể hiện sự chuyên nghiệp thì NodeJS sẽ là sự lựa chọn của bạn

Trang 38

- 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

- Streamming Data (Luồng dữ liệu) Các web thông thường gửi HTTP request

và nhận phản hồi lại (Luồng dữ liệu) Giả xử sẽ cần xử lý 1 luồng giữ liệu cực lớn, NodeJS 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

- Ứng dụng Web thời gian thực Với sự ra đời của các ứng dụng di động &

HTML 5 nên NodeJS rất hiệu quả khi xây dựng những ứng dụng thời gian thực

(real-time applications) như ứng dụng chat, các dịch vụ mạng xã hội như Facebook, Twitter, …

3.1.2.5 Không nên sử dụng NodeJS khi:

- Xây dựng các ứng dụng hao tốn tài nguyên: Bạn đừng mơ mộng đến NodeJS khi bạn đang muốn viết một chương trình convert video NodeJS hay bị rơi vào trường hợp thắt cổ chai khi làm việc với những file dung lượng lớn

- Một ứng dụng chỉ toàn CRUD: NodeJS không nhanh hơn PHP khi bạn làm các tác vụ mang nặng tính I/O như vậy Ngoài ra, với sự ổn định lâu dài của các webserver script khác, các tác vụ CRUD của nó đã được tối ưu hóa Còn NodeJS?

Nó sẽ lòi ra những API cực cực kỳ ngớ ngẩn

- Khi bạn cần sự ổn định trong ứng dụng của bạn: Chỉ với 4 năm phát triển của mình (2009-2013), version của NodeJS đã là 0.10.15 (hiện tại tới thời điểm này là v0.10.35) Mọi API đều có thể thay đổi – một cách không tương thích ngược – hãy thật cẩn thận với những API mà bạn đang dùng, và luôn đặt câu hỏi: “Khi nó thay đổi, nó sẽ ảnh hưởng gì đến dự án của tôi?”

- Và quan trọng nhất: Bạn chưa hiểu hết về NodeJS NodeJS cực kỳ nguy hiểm trong trường hợp này, bạn sẽ rơi vào một thế giới đầy rẫy cạm bẫy, khó khăn Với phần lớn các API hoạt động theo phương thức non-blocking/async việc không hiểu

Trang 39

rõ vấn đề sẽ làm cho việc xuất hiện những error mà thậm chí bạn không biết nó xuất phát từ đâu? Và mệt mỏi hơn nữa: Khi cộng đồng NodeJS chưa đủ lớn mạnh, và sẽ

ít có sự support từ cộng đồng Khi mà phần lớn cộng đồng cũng không khá hơn bạn

là bao

3.1.2.6 Những trường hợp nên sử dụng NodeJS :

- NodeJS thực sự tỏa sáng trong việc xây dựng RESTful API (JSON) Gần như không có ngôn ngữ nào xử lý JSON dễ dàng hơn Javascript, chưa kể các API server thường không phải thực hiện những xử lý nặng nề nhưng lượng concurrent request thì rất cao Mà NodeJS thì xử lý non-blocking Chẳng còn gì thích hợp hơn NodeJS trong trường hợp này!

- Những ứng dụng đòi hỏi các giao thức kết nối khác chứ không phải chỉ có HTTP Với việc hỗ trợ giao thức TCP, từ nó bạn có thể xây dựng bất kỳ một giao thức custom nào đó một cách dễ dàng

- Những ứng dụng thời gian thực: Khỏi phải nói vì NodeJS dường như sinh ra

để làm việc này!

- Những website stateful Node.js xử lý mọi request trên cùng một process giúp cho việc xây dựng các bộ nhớ đệm chưa bao giờ đơn giản đến thế: Hãy lưu nó vào một biến global, và thế là mọi request đều có thể truy cập đến bộ nhớ đệm đó Caching sẽ không còn quá đau đầu như trước đây, và bạn có thể lưu cũng như chia

sẻ trạng thái của một client với các client khác ngay trong ngôn ngữ, chứ bạn không cần thông qua các bộ nhớ ngoài!

Trang 40

Express hỗ trợ các phương thức HTTP mà middleware tạo ra một API vô cùng mạnh mẽ và dễ sử dụng Có thể tổng hợp một số chức năng chính của Express như sau:

- Thiết lập các lớp trung gian để trả về HTTP Request

- Định nghĩa router cho phép sử dụng các hành động khác nhau dựa trên phương thức HTTP và URL

- Cho phép trả về các trang dựa vào các tham số

Về các package hỗ trợ: ExpressJS có vô số các package hỗ trợ nên các không phải lo lắng khi làm việc với Framework này

Về performance: Express cung cấp thêm về các tính năng (feature) để dev lập trình tốt hơn Chứ không làm giảm tốc độ của NodeJS

Và hơn hết, các Framework nổi tiếng của NodeJS hiện nay đều sử dụng ExpressJS như một core function, chẳng hạn: SailsJS, MEAN,

3.1.3.2 Cài đặt ExpressJS:

- Để cài đặt được ExpressJS bạn cần phải cài đặt các gói: NodeJS và npm

- Cài đặt ExpressJS: npm install express –save

Ngày đăng: 28/11/2021, 16:33

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