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ànhnghề Thiết kế trang web)

72 28 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 đề Giáo Trình Môn Học 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
Người hướng dẫn Phạm Đình Nam
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 864,76 KB

Cấu trúc

  • BÀI 1. TỔNG QUAN VỀ NODEJS (8)
    • 1. Giới thiệu về NodeJS (8)
    • 2. Thiết lập môi trường (8)
    • 3. Module trong Node.js (9)
    • 4. Tìm hiểu về NPM (10)
  • Bài 2. Các Module trong NodeJS (13)
    • 1. Module HTTP (13)
      • 1.1 Xây dựng máy chủ HTTP cơ bản (13)
      • 1.2 Phân tích máy chủ HTTP (13)
      • 1.3 Tr uyền hàm cho máy chủ hoạt động (14)
      • 1.4 Phương thức writeHead (14)
      • 1.5 Phương thức write (14)
      • 1.6 Phương thức end (15)
    • 2. Làm việc với file trong Node.js (15)
      • 2.1 Đọc nội dung file (15)
      • 2.2 Ghi nội dung vào file (17)
      • 2.3 Xóa file (18)
    • 3. Module URL (19)
      • 3.1 Giới thiệu (19)
      • 3.2 Phân tích URL (20)
    • 4. Module Path (21)
    • 5. Event Emitter (26)
      • 5.1 Lập trình hướng sự kiện (26)
      • 5.2 EventEmitter (26)
      • 5.3 Xóa sự kiện (27)
    • 6. Đối tượng Global và Process (27)
      • 6.1 Đối tượng Global trong Node.js (27)
      • 6.2 Đối tượng Process trong Node.js (28)
    • 7. Express Framework (28)
      • 7.1 Giới thiệu Express (28)
      • 7.2 Cài đặt và sử dụng Express (29)
      • 7.3 Router trong Express Framework (30)
        • 7.3.1 Router là gì? (30)
        • 7.3.2 Sử dụng Router (30)
        • 7.3.3 Tham số router (31)
      • 7.4 Template Engine trong Express (32)
        • 7.4.1 Template Engine là gì ? (32)
        • 7.4.2 Danh sách các loại template engine (32)
        • 7.4.3 Ưu điểm khi sử dụng Template Engine (32)
        • 7.4.4 Sử dụng Template Engine trong Express (32)
        • 7.4.5 Kết hợp EJS template với Express (33)
      • 7.5 Middleware Express (34)
        • 7.5.1 Midd leware trong ứng dụng web (34)
        • 7.5.2 Middleware trong Express (34)
        • 7.5.3 Cấu trúc middleware trong express (35)
        • 7.5.4 Sử dụng middleware trong express (36)
        • 7.5.5 Truy cập file tĩnh trong express (40)
        • 7.5.6 Làm việc với Form trong express (43)
    • 8. Sử dụng cookies (46)
      • 8.1 Cài đặt cookie -parser (46)
      • 8.2 Sử dụng cookie-parser (46)
      • 8.3 Đặt thời gian sống cho cookie (47)
      • 8.4 Xóa cookie hiện tại (48)
    • 9. Sử dụng session (48)
      • 9.1 Định nghĩa về Session (48)
      • 9.2 Lý do session ra đời (48)
      • 9.3 Phân biệt session của các trình duyệt khác nhau (48)
      • 9.4 Sử dụng session trong node.js (49)
  • Bài 3. Làm việc với MySQL Database Server trong NodeJS (50)
    • 1. Kết nối với MySQL Database Server (50)
      • 1.1 Cài đặt package mysql cho Node.js (50)
      • 1.2 Kết nối với MySQL Database Server bằng Node.js (50)
      • 1.3 Đóng kết nối cơ sở dữ liệu (51)
    • 2. Tạo bảng trong MySQL bằng Node.js (51)
    • 3. Thêm dữ liệu vào bảng từ Node.js (53)
    • 4. Truy vấn dữ liệu trong CSDL MySQL từ Node.js (55)
      • 4.1 Thực thi câu truy vấn đơn giản (55)
      • 4.2 Chuyển dữ liệu vào câu truy vấn (56)
    • 5. Cập nhật dữ liệu trong cơ sở dữ liệu MySQL bằng Node.js (56)
    • 6. Xóa dữ liệu trong MySQL từ Node.js (57)
  • Bài 4. Socket (59)
    • 1. Tổng quan về Socket.io (59)
    • 2. Cài đặt Socket.IO (59)
    • 3. Xử lý sự kiện trong Socket.IO (62)
      • 3.1 Tổng quan module Events trong Node.js (62)
      • 3.2 Sử dụng module Events (63)
      • 3.3 Viết một module khác kế thừa module Events (65)
      • 3.4 Phân biệt events với socket.io (67)
    • 4. Socket.IO Broadcasting (67)
    • 5. Socket.IO Namspace (70)

Nội dung

TỔNG QUAN VỀ NODEJS

Giới thiệu về NodeJS

Node.js, ra đời vào năm 2009, đã thu hút sự chú ý của nhiều chuyên gia lập trình và trở thành công cụ phổ biến trong nhiều lĩnh vực Nó hoạt động trên hầu hết các hệ điều hành và là nền tảng máy chủ được xây dựng dựa trên Engine JavaScript.

Nếu bạn đam mê lập trình web, hãy học Node.js, vì nó sẽ trở thành ngôn ngữ chủ đạo trong tương lai Xu hướng năm 2017 là học lập trình Node.js, và bộ giáo trình video bài học lập trình Node.js cơ bản dưới đây sẽ hỗ trợ bạn trên con đường trở thành lập trình viên.

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.

Tải tệp cài đặtvớ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

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 Node.js trên các máy chạy hệ điều hành Linux, bạn cần 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, bạn cần sử dụng lệnh `sudo mkdir -p /usr/local/nodejs` Sau đó, để giải nén tệp tar.gz mà bạn đã tải về, hãy vào thư mục download Node.js và chạy lệnh `tar xvfz filename.tar.gz` Ví dụ, nếu bạn đang tải phiên bản 10.13.0, tên tệp sẽ 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

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 hoàn thành lệnh kiểm tra việc chuyển Node.js vào thư mục /usr/local/nodejs, bạn hãy tiếp tục thực hiện các lệnh sau: cd /usr/local/nodejs và 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

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

Module trong Node.js

Khi phát triển ứng dụng Node.js, bạn có thể tổ chức toàn bộ mã nguồn vào một tệp duy nhất, bất kể quy mô hay độ phức tạp của ứng dụng Trình thông dịch Node.js không bị ảnh hưởng bởi cách sắp xếp này.

Việc tổ chức mã nguồn là rất quan trọng để quản lý các đoạn code hiệu quả Do đó, bạn nên chú ý đến cấu trúc code của mình Đây chính là lý do mà Node.js tích hợp tính năng module.

Các module Node.js có thể được hiểu đơn giản như các thư viện JavaScript hoặc các phần mã trong code của bạn, chẳng hạn như tập hợp các hàm, mà bạn muốn lưu trữ để tái sử dụng sau này Trong Node.js, có ba loại module mà bạn sẽ gặp phải.

Module tích hợp là các module có sẵn trong Node.js khi bạn cài đặt Bạn có thể tham khảo danh sách các module tích hợp này để sử dụng cho các dự án của mình.

Các module bên ngoài là những phần mềm được chia sẻ bởi các lập trình viên trên toàn thế giới thông qua kho quản lý NPM.

Bạn có thể tạo các module Node.js riêng biệt, bên cạnh việc sử dụng các module tích hợp và module bên ngoài do người khác cung cấp.

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

Phạm Đình Nam –Trường Caođẳng nghề Đà Lạt Trang 8 function getRandom(min, max) { return Mapath.random() * (max - min) + min;

} module.export.between1and10 = function() { return getRandom(1, 10);

Tệp này sẽ được xuất ra cho các module khác thông qua module.exports Tôi sẽ tạo một tệp mới có tên index.js để sử dụng các chức năng đã được xuất.

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

Create an index.js file and include the following content: `var myRandom = require('./myRandom'); console.log(myRandom.between1and10());` This code utilizes the `require` function to access the code from the myRandom module that we just created.

Để kiểm tra xem Module mà chúng ta vừa viết có hoạt động hay không, bạn hãy truy cập vào thư mục chứa file index.js mà bạn đã tạo và chạy lệnh với cú pháp: node index.

Tìm hiểu về NPM

Ở bài trước tôi có nói tới 3 dạng module trong node.js là Module tích hợp, module bên ngoài và module tự tạo.

Module tích hợp là những module có sẵn, trong khi module tự tạo là những module do người dùng tự phát triển Bên cạnh đó, module bên ngoài là các module được chia sẻ bởi lập trình viên từ khắp nơi trên thế giới.

Để biết được các module được chia sẻ ở đâu và cách sử dụng chúng, chúng ta sẽ tìm hiểu cách quản lý các module bên ngoài thông qua NPM.

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

NPM cung cấp hai chức năng chính: một kho lưu trữ module trực tuyến cho Node.js và một tiện ích dòng lệnh để cài đặt các module, quản lý phiên bản cũng như sự phụ thuộc của các package Node.js.

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

Cài đặt và cấu hình 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ủa Node.js được lưu trữ trong tệp package.json, nằm ở thư mục gốc của các dự án hoặ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

Cuối cùng nó sẽ hỏi bạn có đồng ý lưu cấu hình hay không Các bạn nhập yes để lưu lại.

Sau khi lưu xong thì trong thư mục dự án của bạn sẽ xuất hiện file package.json

Hướng dẫn sử dụng NPM

Với hơn 800.000 package trên kho package của NPM các bạn có thể tự do cài đặt các gói phù hợp với ứng dụng của mình.

Trước tiên các bạn tìm kiếm package ở trên trang chủ chủ của NPMJS ở phần Search Package

Sau khi các bạn tìm được module phù hợp cho ứng dụng của mình, các bạn có thể cài đặt nó bằng cú pháp. npm install

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.

Phạm Đình Nam –Trường Caođẳng nghề Đà Lạt Trang 10 Đồ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.

You can install packages with various options using npm To install a package globally, use the command `npm install -g ` For development purposes, you can install a package with `npm install save-dev ` If you want to specify a particular version of a package, use `npm install @`.

Uninstall Package Để gỡ bỏ một package hoặc nhiều package nào đó Các bạn sử dụng command với lệnh npm uninstall

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

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

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

Các Module trong NodeJS

Module HTTP

Để phát triển ứng dụng web với Node.js, chúng ta không chỉ cần triển khai ứng dụng mà còn phải thiết lập 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

Để hiểu cách hoạt động của module HTTP trong Node.js, chúng ta sẽ bắt đầu với một ví dụ đơn giản Đoạn mã dưới đây tạo ra một server cơ bản: ```javascriptvar 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"); response.end(); });``` Mã này thiết lập một server và gửi phản hồi với mã trạng thái 200 cùng với nội dung văn bản chào mừng người dùng.

}); server.listen(8000, function (error) { if (error) return; console.log("Server listen in port 8000");

Bây giờ các bạn hãy tạo 1 file với tên server.js ở thư mục gốc project của bạn và đưa đoạn code bên trên vào.

Tiếp theo hãy lưu nó lại vàtiến hành mở command line tại thư mục gốc với lệnh. node server

Cuối cùng, hãy mở trình duyệt của bạn và truy cập vào địa chỉ http://localhost:8000 Trên trình duyệt sẽ xuất hiện nội dung sau

Nếu bạn thấy hiển thị như vậy, điều đó có nghĩa là bạn đã successfully tạo ra một máy chủ hoạt động trên Node.js Tiếp theo, tôi sẽ giải thích cho bạn cách hoạt động của module HTTP này.

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

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

Trong đoạn mã này, tôi gọi hàm createServer từ module HTTP, hàm này trả về một đối tượng với phương thức listen Phương thức này yêu cầu một tham số là cổng mà máy chủ HTTP sẽ lắng nghe Ví dụ, tôi đã sử dụng var http = require('http'); và khởi tạo server với var server = http.createServer(); sau đó, máy chủ lắng nghe trên cổng 8000 bằng server.listen(8000);

Đoạn mã này cho phép máy chủ của chúng ta lắng nghe tại cổng 8000, tuy nhiên, máy chủ vẫn chưa thể hoạt động hiệu quả với mã này.

Để máy chủ hoạt động và phản hồi yêu cầu của người dùng, chúng ta cần truyền vào hàm createServer một hàm ẩn danh với hai tham số: tham số đầu tiên là request, chứa thông tin người dùng gửi lên, và tham số thứ hai là response, chứa thông tin mà chúng ta muốn trả về để đáp ứng yêu cầu đó Ví dụ, chúng ta có thể sử dụng đoạn mã sau: `var http = require('http'); var server = http.createServer(function(request, response) {`.

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

Hàm ẩn danh bao gồm hai tham số chính: request, đại diện cho thông tin mà người dùng gửi lên, và response, đại diện cho thông tin mà 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

Phương thức writeHead dùng để thiết lập header phản hồi cho các yêu cầu của request writeHead(statusCode, statusMessage, headers);

Mã trạng thái phản hồi được biểu thị bằng statusCode, trong đó mã trạng thái tham khảo là một số Lời nhắn trạng thái được cung cấp qua statusMessage dưới dạng chuỗi Các tiêu đề phản hồi của máy chủ được định nghĩa trong headers, và bạn có thể tìm hiểu thêm về HTTP header tại đây.

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.

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

Chào mừng các bạn đến với Node.js của học viện công nghệ VietPro, nội dung này được hiển thị trong trình duyệt thông qua lệnh response.write("<b>Chào mừng các bạn đến với Node.js của học viện công nghệ VietPro</b>").

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.

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

Node.js cung cấp module fs, cho phép truy cập hệ thống file một cách hiệu quả Module fs đảm nhận tất cả các hoạt động I/O (Input/Output) cả đồng bộ lẫn không đồng bộ, giúp lập trình viên dễ dàng quản lý và thao tác với file trong ứng dụng của mình.

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é var fs = require("fs");

2.1 Đọc nội dung file Đọc file không đồng bộ

Sử dụng phương thức fs.readFile() để đọc file không đồng bộ. cú pháp: fs.readFile(pathfile, options, callback);

Mô tả về tham số pathfile: Đây là đường dẫn đầy đủ và tên file dưới dạng chuỗi Tham số options là tùy chọn có thể là đối tượng hoặc chuỗi, bao gồm mã hóa và cờ Mã hóa mặc định là utf8 và cờ mặc định là “r” Tham số callback là hàm được gọi khi thao tác đọc file hoàn tất, với hai tham số là error và data.

Để đọc nội dung của file mẫu demo.txt chứa dòng chữ "Chào bạn đến với học viện công nghệ VietPro", tôi sẽ sử dụng phương thức đọc file không đồng bộ từ module fs.

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

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

File index.js var fs = require('fs'); //Gọi module fs

* Thực hiện đọc file không đồng bộ

* */ fs.readFile("demo.txt", function(error, data) { if (error) throw error; console.log(data.toString())

Cuối cùng để kiểm tra các bạn chạy command với lệnh node index

Trong đoạn mã trên hàm callback sẽ được thực thi khi quá trình đọc file hoàn thành và kết quả trả về sẽ được đưa vào tham số data

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 việc đọc file không đồng bộ, nơi kết quả được xử lý trong hàm callback, việc đọc file đồng bộ trả về kết quả ngay lập tức sau khi chương trình hoàn tất quá trình đọc.

Cú pháp fs.readFileSync(pathfile, options);

Tham số pathfile là đường dẫn đầy đủ và tên file dưới dạng chuỗi Tham số options có thể là đối tượng hoặc chuỗi, bao gồm mã hóa và cờ Mã hóa mặc định được thiết lập là utf8, trong khi 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

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

* Thực hiện đọc file không đồng bộ

* */ var content = fs.readFile("demo.txt"); console.log(content.toString());

Tiếp tục chạy command với lệnh node index

Kết quả chúng ta vẫn nhận được dòng chữ với nội dung "Chào bạn đến với học viện công nghệ VietPro"

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: fs.writeFile(pathfile, content[,options], callback);

Mô tả tham số trong quá trình ghi file bao gồm: `pathfile`, là đường dẫn tuyệt đối hoặc tên file; `content`, là nội dung cần ghi vào file; `options`, là tham số tùy chọn có thể là đối tượng hoặc chuỗi, bao gồm mã hóa (mặc định là utf8) và cờ (mặc định là “r”); và `callback`, là hàm được gọi khi việc ghi nội dung vào file hoàn tất.

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

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

* */ fs.writeFile("writeDemo.txt", "Cao đẳng nghề Đà Lạt", function(error) {

Phạm Đình Nam –Trường Caođẳng nghề Đà Lạt Trang 16 if (error) throw error; console.log("Nội dung đã được ghi thành công")

}); chạy command với lệnh node writeFile

Kết quả nhận được Đồng thời module fs sẽ tạo ra file writeDemo.txt với nội dung " Cao đẳng nghề Đà Lạt "

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

Cú pháp fs.writeFileSync(pathfile, content[,options]);

Tham số pathfile chỉ định đường dẫn tuyệt đối của file hoặc tên file, trong khi content là nội dung cần ghi vào file Tham số options có thể là đối tượng hoặc chuỗi bao gồm mã hóa và cờ hiệu, với mã hóa mặc định là UTF-8 và cờ mặc định là “r”.

Ví dụ, để thay thế cú pháp ghi file không đồng bộ bằng cú pháp ghi file đồng bộ, bạn có thể sử dụng đoạn mã sau: 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 node writeFile chúng ta vẫn sẽ nhận được kết quả tương tự.

Xóa file không đồng bộ

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

To delete the file demo.txt as shown in the file reading example, create a new file named removeFile.js and include the following code: ```javascriptvar fs = require('fs'); fs.unlink('demo.txt', function(error) { if (error) throw error; console.log("File has been successfully deleted"); });```

}); chạy command với lệnh. node removeFile

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

Cú pháp: fs.unlinkSync(pathfile);

Mô tả tham số: pathfile: đường dẫn file muốn xóa.

Ví dụ: var fs = require('fs'); fs.unlinkSync('demo.txt');

Module URL

Module URL cung cấp các tiện ích hữu ích cho việc phân giải và phân tích URL Bạn có thể truy cập module này bằng cách sử dụng cú pháp var url = require('url');

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

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ênmáy chủ lưu trữ và cổng

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

.path Cung cấp tên đường dẫn URL

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

.auth Phân quyền của đườ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

3.2 Phân tích URL Để phân tích một đường dẫn bằng module url các bạn có thể dùng cú pháp url.parse(url);

Phân tich URL sau: http://thaygiaoquocdan.vn/path1/path2/index.html?query=strin#tab1

* Ví dụ phân tích các thành phần của URL

* http://thaygiaoquocdan.vn/path1/path2/index.html?query=strin#tab1

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

*/ var url = require('url'); var urlQuery "http://thaygiaoquocdan.vn/path1/path2/index.html?query=strin#tab1";

The code snippet demonstrates how to analyze a URL using the `url.parse` method It extracts and logs various components of the URL, including the href, path, pathname, port, protocol, host, hostname, query, auth, and search Each of these elements provides essential information about the structure and parameters of the URL being examined.

Chạy node với lệnh node index

Kêt quả bạn sẽ nhìn thấy thông tin của đường dẫn ở màn hình console

Module Path

Module path trong Node.js cung cấp nhiều chức năng hữu ích để truy cập và tương tác với hệ thống tập tin Bạn có thể dễ dàng sử dụng module này bằng cách sử dụng lệnh require: `var path = require('path')`.

Module path.sep tự động phân tách đường dẫn, sử dụng dấu \ trên Windows và / trên Linux/MacOs Đồng thời, path.delimiter cung cấp dấu phân tách đường dẫn, với dấu ; trên Windows và : trên Linux/MacOs.

Dưới đây là những phương thức thường được sử dụng ở module path path.basename() path.dirname() path.extname() path.isAbsolute() path.join()

Phạm Đình Nam –Trường Caođẳng nghề Đà Lạt Trang 20 path.parse() path.basename()

Phương thức sẽ trả về phần cuối cùng của đường dẫn

Cú pháp: path.basename(path[, ext])

Mô tả tham số path: Đường dẫn ext: Dùng để lọc phần mở rộng của tệp

Ví dụ.Lấy phần cuối cùng của đường dẫn /path1/somthing.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'); console.log(result); console.log(filterExt);

Chạy command với lệnh để xem kết quả node index

Kết quả bạn sẽ nhận được path.dirname()

Trả về phần thư mục của đường dẫn

Cú pháp path.dirname(path)

Mô tả tham số path: Đường dẫn

Ví dụ: lấy thư mục của đường dẫn path1/something.js

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); console.log(result);

Chạy command với lệnh để xem kết quả node index path.extname()

Trả về phần mở rộng của đường dẫn

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 phần mở rộng của tệp tin "path/something.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à :

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

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 không

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

* Lấy kiểm tra có phải đường dẫn tuyệt đối hay không

In Node.js, the 'path' module is utilized to determine if a given path string is absolute For example, when checking the path "/path1/something.js" with the method `path.isAbsolute()`, the result is true, indicating it is an absolute path Conversely, the relative path "./path1/something.js" returns false, confirming it is not absolute.

Chạy command với lệnh bên dưới để kiểm tra node index path.join()

Phương thức có tác dụng nối các tham số thành một đường dẫn hoàn chỉnh.

Cú pháp: path.join(arg1,arg2, ,argn);

Mô tả tham số: arg: là các tham số để tạo nên đường dẫn

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);

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

Trên Window: path1\path2\path3\file.txt path.parse()

Phương thức có chức năng phân tích cú pháp dẫn tới đối tượng có các phân đoạn tạo ra nó.

Cú pháp: path.parse(pathname)

Mô tả tham số: pathname: đường dẫn muốn phân tích

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

* 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ả.

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

{ root: '/', dir: '/folder', base: 'file.txt', ext: '.txt', name: 'file' }

Event Emitter

5.1 Lập trình hướng sự kiện Để có ví dụ dễ nhận biết nhất về lập trình hướng sự kiện cho các bạn, chúng ta sẽ chuyển sang các trình duyệt một chút.

Khi bạn tương tác với một trang web qua giao diện người dùng, các sự kiện như click và keydown sẽ được kích hoạt Khi bạn nhấp vào nút, sự kiện click sẽ được thực hiện, và khi nhấn phím, sự kiện keydown sẽ xảy ra Những sự kiện này có các hàm liên quan, giúp thực thi các thay đổi trong giao diện người dùng theo ý tưởng mà bạn mong muốn.

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 đó.

Node.js mang đến một module quan trọng có tên là EventEmitter, cho phép người dùng tích hợp lập trình hướng sự kiện vào các dự án của mình một cách dễ dàng.

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')

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

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;

//Hàm xử lý sự kiện function welcomeUser(username){ console.log("Xin chào "+ username + " đến với VietPro")

//Lắng nghe sự kiện eventEmitter.on('welcome', welcomeUser);

//Kích hoạt sự kiện eventEmitter.emit('welcome', 'User 1')

Bây giờ bạn chạy chương trình với lệnh node index

5.3 Xóa sự kiện Đôi khi bạn muốn xóa trình xử lý sự kiện ra khỏi sự kiện vì một lý do gì đó (sự kiện không cần thiết hoặc tránh rò rỉ bộ nhớ). Để loại bỏ các trình lắng nghe sự kiện trong EventEmitter, chúng ta có thể sử dung removeListenerhoặc removeAllListener

Cú pháp eventEmiiter.removeListener('eventName')

Đố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

Trong ứng dụng của chúng ta, có hai file quan trọng: index.js, là file chạy chính, và hello.js, là một module đơn giản mà chúng ta tự viết.

Và module hello.js sẽ có nội dung như sau. module.exports = function(name){ return config.loichao + " " +name;

Đoạn mã trên nhận vào một tên và trả về lời chào tương ứng Để sử dụng, cần gọi module hello.js trong file index.js với nội dung: `var hello = require('./hello'); console.log(hello("VietPro"));`.

Để hello.js có thể đọc giá trị "loichao" từ đối tượng config, chúng ta cần điều chỉnh file index.js như sau: ```javascriptvar hello = require('./hello'); var config = {loichao: "Xin chào"}; console.log(hello("VietPro")); ```

Chạy lệnh `node index` trong file index.js sẽ dẫn đến lỗi do mỗi module trong Node.js có phạm vi riêng Để biến trở thành toàn cầu, bạn cần sử dụng đối tượng global Hãy cập nhật file index.js để sử dụng global cho các biến cần thiết.

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.

Express Framework

Express là một trong những framework web Node.js phổ biến nhất, đóng vai trò là thư viện nền tảng cho nhiều framework Node.js khác Nó cung cấp các cơ chế linh hoạt và mạnh mẽ, giúp phát triển ứng dụng web một cách hiệu quả.

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

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 yêu cầu trình quản lý package tải xuống module cần thiết Để sử dụng Express, chúng ta sẽ thực hiện một ví dụ bằng cách tạo ra một ứng dụng đơn giản, đó là một server lắng 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

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

Trong đoạn mã đầu tiên, chúng tôi sử dụng hàm require để nhập module vào Tiếp theo, trước khi sử dụng express, chúng tôi tạo một đối tượng từ module express Từ đối tượng này, chúng tôi sử dụng một hàm callback, được gọi khi có ai đó truy cập vào đường dẫn http://localhost:3000, để phản hồi nội dung cho máy khách Tham số response trong hàm callback được dùng để gửi nội dung về phía máy khách Cuối cùng, chúng tôi sử dụng phương thức listen để lắng nghe các yêu cầu từ 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

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

Router là công cụ giúp máy chủ nhận diện và xử lý yêu cầu từ máy khách Mỗi router có thể sở hữu một hoặc nhiều chức năng điều khiển, được kích hoạt khi có yêu cầu phù hợp.

Khi một máy khách gửi yêu cầu bằng các phương thức GET, POST, PUT hoặc DELETE đến các đường dẫn khác nhau, ví dụ như URL http://localhost:3000/users, hệ thống sẽ xử lý và trả về kết quả tương ứng.

Nếu yêu cầu bằng phương thức GET được thực hiện cho URL này, thì bên máy chủ sẽ phản hồi một danh sách tất cả người dùng.

Vì vậy, dựa trên URL được truy cập, một chức năng trên máy chủ sẽ được gọi và theo đó các phản hồi sẽ được gửi đến máy khách

Sử dụng Router bằng cách sử dụng các phương thức của đối tượng app (thể hiên của express).

Cú pháp: app.METHOD(path, callback_handler)

METHOD là một phương thức yêu cầu HTTP, bao gồm GET, POST, PUT hoặc DELETE Path là đường dẫn trên máy chủ, trong khi callback_handler là hàm được thực thi khi router khớp với path.

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ảntrị“

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ủ");

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ị");

Bây giờ các bạn chạy ứng dụng của mình lên bằng command lệnh. node server

Để xem kết quả, bạn hãy mở trình duyệt và truy cập vào các địa chỉ http://localhost:3000, http://localhost:3000/admin, và http://localhost:3000/user Trong đoạn mã, app.get được sử dụng để xử lý yêu cầu cho các router như /, /admin và /user, trong đó get là phương thức dùng để xử lý các yêu cầu HTTP GET Bạn cũng có thể sử dụng các phương thức khác như post, put, delete để xử lý các yêu cầu HTTP tương ứng.

Tham số router là các phần của URL dùng để thu thập các giá trị cụ thể tại vị trí của chúng trong đường dẫn Những giá trị này sẽ được chuyển đổi và lưu trữ trong đối tượng request.params, với tên tham số router được xác định trong đường dẫn router.

Cú pháp app.METHOD('/:param1/:param2 /:paramN, callback_handler);

In this example, the path 'users/Id' includes 'Id' as a dynamic parameter To implement this, create a file named 'server.js' with the following code: ```javascriptvar express = require('express'); var app = express(); app.get('/user/:Id', function(request, response) { response.send(request.params.Id); });```

Chạy ứng dụng bằng command lệnh. node server

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

Lúc này bạn vào đường dẫn http://localhost:3000/user/15 để kiểm tra hoặc bạn có thể nhập một ký tự bất kỳ

Template engine là công cụ hỗ trợ tạo HTML template thông qua mã nguồn tối giản, cho phép chèn dữ liệu vào template trên máy khách và sinh ra các đoạn mã HTML hiệu quả.

Hiện nay, có nhiều template engine dành cho Node.js, mỗi loại sử dụng ngôn ngữ và cú pháp riêng để xác định các HTML template 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

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

Thiết lập đường dẫn chứa tệp template: app.set('views', folder)

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

Trong đó, từ khóa "views" được quy định để thiết lập đường dẫn cho template folder, là một chuỗi dùng để cung cấp đường dẫn thư mục chứa file template.

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

Trước tiên để sử dụng EJS các bạn vui lòng tải module này xuống bằng trình quản lý package của Node.js npm install ejs

Kết hợp với express Để kết với express thì trước tiên các bạn tạo cho tôi một server đơn giản bằng express và được nghe trên cổng 3000.

File server.js 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ệ

Tại thư mục gốc của dự án, hãy tạo một thư mục có tên "views", nơi sẽ lưu trữ tất cả các file template của chúng ta.

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.

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

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

To modify the server.js file, start by requiring the Express framework and initializing the app Set the views directory to './views' and specify 'ejs' as the view engine Finally, create a route for the root URL that renders the 'demo' view.

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

Sử dụng cookies

Cookie là các dữ liệu nhỏ được gửi từ một trang web và lưu trữ trong trình duyệt của người dùng khi họ truy cập trang đó.

Mỗi khi người dùng tải lại trang web, trình duyệt sẽ gửi dữ liệu đã lưu để nhận diện các hành động trước đó của người dùng trên website hoặc máy chủ.

8.1 Cài đặt cookie-parser Để sử dụng cookie trong express các bạn phải cài đặt thêm các middleware hỗ trợ phân tích cookie Trong bài này tôi sẽ hướng dẫn cho các bạn sử dụng cookie thông qua middleware bên thứ ba là cookie-parser

Cú pháp cài đặt npm install cookie-parse

Require module cookie-parse vào ứng dụng của bạn. var express = require('express'); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser());

Sau khi sử dụng cookie-parser, đối tượng request sẽ tự động có thuộc tính cookies, trong đó request.cookies chứa toàn bộ các cookie đã được tạo Để tạo một cookie mới, bạn có thể sử dụng cú pháp: response.cookie(cookie_name, cookie_value [, options]).

Trong đó cookie_name là tên cookie muốn đặt , sẽ lưu vào đối tượng cookies cookie_value là giá trị của cookie options các lựa chọn thiết thập khác

Ví dụ: tạo mới cookie

Phạm Đình Nam from Da Lat Vocational College demonstrates the use of cookies in an Express.js application By utilizing the cookie-parser middleware, the app sets a cookie named 'time' with the current date and sends a confirmation message to the user This example highlights the practical implementation of cookie handling in web development.

Để kiểm tra xem cookie đã được thiết lập hay chưa, hãy truy cập địa chỉ http://localhost:3000/cookie, sau đó mở màn hình console (F12 -> console) trong trình duyệt và nhập lệnh document.cookie Để xác minh một cookie được gửi đến máy chủ, bạn có thể chạy đoạn mã tương ứng để kiểm tra.

In the server.js file, the Express framework is initialized by requiring the 'express' module and creating an app instance The 'cookie-parser' middleware is utilized to parse cookies in incoming requests A GET route is defined at '/cookie', which sets a cookie named 'time' with the current date and sends a response indicating that the cookie has been successfully set.

}); app.get('/', function(req, res) { console.log("Cookies : ", req.cookies);

8.3 Đặt thời gian sống cho cookie Để đặt thời gian sống cho cookie các bạn có thể sử dụng cú pháp. res.cookie(name , 'value', {expire : new Date() + 9999});

Thời gian sống của cookie sẽ được tính bằng mili giây.

Một cách khác để thiết đặt thời gian sống của cookie là sử dụng thuộc tính maxAge res.cookie(name, 'value', {maxAge : 9999});

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

Các cookie hiện tại có thể xóa dễ dàng bằng cách sử dụng phương thức clearCookie tham số truyền vào là tên cookie mà bạn muốn xóa

Ví dụ app.get('/clearcookie', function(req,res){ clearCookie('cookie_name'); res.send('Cookie deleted');

Sử dụng session

Session là một tập tin nhỏ được lưu trữ trên server

Session là một khái niệm quan trọng trong lập trình website kết nối với cơ sở dữ liệu, đặc biệt trong việc thực hiện các chức năng như đăng nhập và đăng xuất người dùng, mà không có session thì rất khó để thực hiện.

9.2 Lý do session ra đời

Giao tiếp giữa trình duyệt và máy chủ website diễn ra qua nhiều router trên internet Một thách thức trong quá trình này là phân biệt các trình duyệt khác nhau Ví dụ, khi bạn truy cập một trang bán hàng, máy chủ cần xác định được trình duyệt mà bạn đang sử dụng để cung cấp thông tin phù hợp.

Máy chủ cần phân biệt các máy tính và trình duyệt khác nhau trong lượt truy cập gửi tới, nhằm xác định đâu là truy cập từ máy tính của bạn và đâu là của người khác.

Lưu thông tin của giỏ hàng: ví dụ như thông tin về số lượng hàng hoá bạn đã thêm vào giỏ hàng

Bạn có quyền quyết định thông tin nào nên lưu trữ trong Session Tuy nhiên, thông thường, chỉ nên lưu trữ thông tin tạm thời như số lượng sản phẩm trong giỏ hàng chưa mua hoặc các nhận xét đang soạn thảo Đối với dữ liệu lâu dài như nội dung nhận xét đã gửi hoặc số sản phẩm đã mua, nên lưu trữ trên máy chủ cơ sở dữ liệu.

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

Sau khi lập trình viên website tạo ra một tập tin session trên máy chủ để lưu trữ dữ liệu tạm thời của người dùng, việc phân biệt session của từng người dùng là rất quan trọng Để thực hiện điều này, mỗi session cần được liên kết với một cookie tương ứng trên trình duyệt của người dùng Cookie là một mẩu tin nhỏ được trình duyệt tạo ra khi người dùng duyệt web, giúp lưu trữ thông tin của người dùng ở phía trình duyệt (máy khách).

Cookie có thể được tạo mà không cần thiết lập một session trên server Tuy nhiên, mỗi session được tạo ra đều cần phải có một cookie tương ứng.

Phạm Đình Nam từ Trường Cao đẳng nghề Đà Lạt đã chỉ ra rằng việc sử dụng cookie giúp xác định trình duyệt nào đang sử dụng session, cho phép phân biệt giữa các session khác nhau của các trình duyệt khác nhau.

9.4 Sử dụng session trong node.js Để sử dụng được session trong ứng dụng node.js chúng các bạn có thể cài thêm middleware trung gian express-session

Cú pháp npm install express-session

Sử dụng session express-session là một middleware vì thế để sử dụng chúng ta sử dụng phương thức use của đối tượng app

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

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

Socket

Ngày đăng: 30/10/2021, 05:34

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w