Xem mẫu

  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
  2. TUYÊN BỐ BẢN QUYỀN Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. Giáo trình được lưu hành nội bộ Trường Cao đẳng Nghề Đà Lạt. Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 1
  3. 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 2
  4. 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 3
  5. 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 4
  6. 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 5
  7. 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 6
  8. 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 7
  9. function getRandom(min, max) { return Mapath.random() * (max - min) + min; } module.export.between1and10 = function() { return getRandom(1, 10); } Với tệp này sẽ cung cấp ra bên ngoài cho các module khác sử dụng thông qua module.exports . Ở đây tôi sẽ tạo một tệp khác với tên index.js để có thể sử dụng các chức năng đã exports. 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'); console.log(myRandom.between1and10()) Ở đây các bạn sẽ thấy tôi có dùng require để truy cập vào mã của module myRandom mà chúng ta vừa tạo. Bây giờ để kiểm tra Module chúng ta vừa viết có hoạt động được hay không có bạn đi vào thư mục chứa file index.js mà các bạn vừa tạo và chạy command với cú pháp. node index 4. 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à module có sẵn , module tự tạo là do chúng ta tạo ra, module bên ngoài là các module được các lập trình viên trên khắp thế giới chia sẻ. 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 8
  10. 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  … 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 Install package 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 9
  11. Đồ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 //Cài toàn cục npm install --save-dev //cài đặt chỉ phục vụ cho việc phát triển npm install @ //Lựa chọn phiên bản muốn cài đặt 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 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 10
  12. 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"); response.end(); }); 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 nhìn thấy hiện thị như thế này tức là các bạn đã tạo ra được cho mình một máy chủ hoạt động trên Node.js rồi đấy. Phần tiếp theo tôi sẽ phân tích cho các bạn hiểu về cách hoạt động của module HTTP này nhé. 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 11
  13. 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. var http = require('http'); var server = http.createServer(); server.listen(8000); Với đoạn mã này sẽ làm cho máy chủ của chúng ta nghe được tại cổng 8000 thế nhưng máy chủ của chúng ta vẫn chưa thể hoạt động được với đoạn mã này. Bây giờ để máy chủ của chúng ta thực sự hoạt động và phản hồi các yêu cầu của người dùng , chúng ta sẽ phải truyền vào trong hàm createServer một tham số đó là một hàm ẩn danh với 2 tham số. 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 1.4 Phương thức writeHead 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); Trong đó: statusCode : Mã trạng thái phản hồi, mã trạng thái tham khảo statusMessage: Lời nhắn của trạng thái 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 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. Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 12
  14. 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ẻ resonse.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>") 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é. 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: 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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 13
  15. 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 Kết quả nhận được: 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 đọ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 Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 14
  16. /** * 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: 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 /** * 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 15
  17. 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 " Ghi file đồng bộ Sử dụng fs.writeFileSync() để ghi file không đồng bộ. Cú pháp fs.writeFileSync(pathfile, content[,options]); 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”. 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 node writeFile chúng ta vẫn sẽ nhận được kết quả tương tự. 2.3 Xóa file Xóa file không đồng bộ Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 16
  18. 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"); }); chạy command với lệnh. node removeFile Xóa file đồng bộ 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'); 3. Module URL 3.1 Giới thiệu Module URL cung cấp các tiện ích cho phép bạn phân giải và phân tích URL. Nó có thể được truy cập bằng cách sử dụng var url = require('url'); Phạm Đình Nam – Trường Cao đẳng nghề Đà Lạt Trang 17
  19. 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. Thuộc tính Mô tả .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ủ .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 .port Cổng máy chủ .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); Ví dụ: Phân tich URL sau: http://thaygiaoquocdan.vn/path1/path2/index.html?query=strin#tab1 Tạo file index.js /** * 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 18
nguon tai.lieu . vn