NodeJS : 4 Module hữu ích được tích hợp sẵn hữu ích


1065

Module tích hợp sẵn là gì?

NodeJS có một số cái gọi là module tích hợp sẵn. Điều này có nghĩa là mặc dù các module này hoạt động giống như các module khác mà chúng ta có thể cài đặt, ví dụ: thông qua npm và sau đó bao gồm sử dụng cú pháp require  hoặc import , như tên đã thấy, các module tích hợp đã được cài đặt và do đó, luôn có sẵn.

Và tất nhiên, chúng được duy trì bởi nhóm phát triển đằng sau NodeJS. Vì vậy mọi thứ luôn được cập nhật và chúng ta có thể sử dụng các module mà không cần lo lắng.

Các tính năng của module không dùng nữa có thể được note trong document chính thức.

Vì vậy, tất cả các lý do chính đáng để xem một số module này. Và sử dụng chúng trong dự án tiếp theo của chúng ta.

Performance Timing API (perf_hooks)

Trong module này, chúng ta được cung cấp các tính năng khác nhau để kiểm tra hiệu suất của ứng dụng NodeJS.

API, cũng được triển khai trong các trình duyệt hiện đại, cung cấp kết quả rất chính xác . Và do đó hoàn toàn phù hợp để trở thành lựa chọn đầu tiên để phân tích ứng dụng của riêng bạn.

Hãy xem một ví dụ trong đó chúng ta kiểm tra thời gian cần thiết để đọc một tệp lớn và so sánh với việc đọc một tệp nhỏ. Tệp lớn chứa khoảng 3000 dòng Lorem Ipsum, tệp nhỏ chỉ có 20 dòng Lorem Ipsum.

Nếu bạn chạy ứng dụng NodeJS một vài lần. Bạn sẽ thấy rằng trung bình mất nhiều thời gian hơn để đọc tệp lớn với chức năng readFileSync.

const { readFileSync } = require('fs')
const { performance, PerformanceObserver } = require('perf_hooks')
// triggered whenever a new entry is added to the performance timeline
const obs = new PerformanceObserver(items => {
	// give out the new entry of the performance timeline, when added
	console.log(items.getEntries())
	// to remove the performance marks in the timeline (optional)
	performance.clearMarks()
})
// subscribed the PerformanceObserver to new entries of the "measure" type
obs.observe({ entryTypes: ['measure'] })
performance.mark('BigFileStart')
readFileSync('./big.txt')
performance.mark('BigFileEnd')
// measuring from start to end of reading the big file
performance.measure('Big File', 'BigFileStart', 'BigFileEnd')
performance.mark('SmallFileStart')
readFileSync('./small.txt')
performance.mark('SmallFileEnd')
// measuring from start to end of reading the small file
performance.measure('Small File', 'SmallFileStart', 'SmallFileEnd')

Chúng ta sử dụng các hàm performance.mark cho mục đích này bằng cách bao quanh đoạn code thực mà muốn kiểm tra việc thực thi với các điểm đánh dấu này.

Vì vậy, chúng ta luôn set điểm start  và endpoint, và với function performance.measure, sau đó có thể lưu trữ toàn bộ trong timeline hiệu suất để có thể đưa ra kết quả với PerformanceObserver.

Tham số đầu tiên của function là tên, hai tham số còn lại là tên của start và endpoint

Kết quả sẽ như thế này:

[
 PerformanceEntry {
 name: 'Big File',
 entryType: 'measure',
 startTime: 44.984569,
 duration: 0.75141
 }
]
[
 PerformanceEntry {
 name: 'Small File',
 entryType: 'measure',
 startTime: 56.151519,
 duration: 0.118684
 }
]

Dĩ nhiên, thời gian sẽ phụ thuộc vào máy của bạn.

Module File System (fs)

Hãy đọc bài viết để tham khảo thêm : Cách sử dụng Module FS trong NodeJS

Tôi nghĩ rằng mọi người đều đã biết module fs. Viết tắt của file system và cho phép truy cập vào file system. Như tên đã nói.

Hầu hết các bạn đều đã biết nó từ khi mới sử dụng NodeJS, và các chức năng cơ bản của module fs hoạt động tương tự trong hầu hết các ngôn ngữ lập trình.

Nhưng có một số tính năng hay mà không phải ai cũng biết mà tôi sẽ giới thiệu cho các bạn ngay bây giờ.

Kiểm tra xem nó có phải là một thư mục không

const fs = require(‘fs’)// will return false, no directory
fs.statSync(‘./index.html’).isDirectory()

In tất cả các tệp trong một thư mục

fs.readdir(‘./test-dir’, (err, files) => {
  files.forEach(file => {
    console.log(file)
  })
})

Xem thư mục để biết các thay đổi và đưa ra loại thay đổi

fs.watch(‘./test-dir’, (eventType, filename) => {
  if (filename) console.log(filename, eventType)
})

Các tính năng cơ bản của module fs

Đọc tệp và in ra nội dung của nó

fs.readFile(‘./note.txt’, ‘utf8’, (err, data) => {
  console.log(data)
})

Nếu bạn bỏ qua tham số decoding. Trong ví dụ của chúng ta, “utf8”, theo mặc định, nội dung sẽ được cung cấp dưới dạng bộ đệm.

Thêm một cái gì đó vào tệp

fs.appendFile(‘./note.txt’, ‘This is new!’, err => {
  if (err) throw err
  console.log(‘file changed’)
})

Tạo một tệp mới, ghi một cái gì đó vào đó / xóa tệp

fs.writeFile(‘./note.txt’, ‘’, err => {
  if (err) throw err
  console.log(‘file cleared’)
})

Tham số thứ hai của hàm này là nội dung sẽ được ghi vào tệp. Trong ví dụ, chúng ta để trống phần này nên nếu tệp đã cho tồn tại, nó sẽ được tạo hoàn toàn trống.

Nếu nó không tồn tại, nó sẽ được tạo, nhưng cũng sẽ vẫn trống. Vì vậy, chức năng này không phù hợp để thêm nội dung vào tệp, vì nó ghi đè lên mọi thứ đã được thêm trước đó.

Module Operating System(os)

Module này có thể xuất ra tất cả các loại thông tin về hệ thống mà NodeJS hiện đang chạy. Ví dụ, nó có thể được sử dụng để giám sát hoạt động của một máy chủ.

Dưới đây là một vài function hữu ích mà tôi đã chuyển đổi trực tiếp đầu ra để chúng dễ hiểu hơn đối với chúng ta.

Bằng cách chia giá trị cho os.totalmem () ba lần, cung cấp kích thước chính xác của RAM, một số đẹp sẽ được xuất ra. Trong trường hợp của tôi, trên MacBook của tôi, chính xác là “16”, vì nó có 16 gigabyte RAM.

Để xác nhận rằng os.freemem () hoạt động tốt, bạn có thể mở một vài tab Chrome, chạy tập lệnh và đóng chúng lại rồi chạy lại tập lệnh. Bạn sẽ thấy một sự khác biệt.

const os = require('os')
// array of information about each cpu core
console.log(os.cpus())
// total memory, free memory, in Gigabyte:
console.log(os.totalmem() / 1024 / 1024 / 1024)
console.log(os.freemem() / 1024 / 1024 / 1024)
// uptime in hours:
console.log(os.uptime() / 60 / 60)

Module URL (url)

Vì NodeJS thường được sử dụng cho phần cuối của các ứng dụng web. Nên việc làm việc với URL hầu như không thể tránh khỏi.

Module tích hợp này có thể giúp công việc của chúng ta dễ dàng hơn bằng cách cung cấp các function tiêu chuẩn để xử lý URL.

Chia URL thành tất cả các thông tin quan trọng, chẳng hạn như máy chủ, giao thức và port

const url = require("url")
url.parse(‘https://medium.com/@louispetrik')

Result:

Url {
 protocol: ‘https:’,
 slashes: true,
 auth: null,
 host: ‘medium.com’,
 port: null,
 hostname: ‘medium.com’,
 hash: null,
 search: null,
 query: null,
 pathname: ‘/@louispetrik’,
 path: ‘/@louispetrik’,
 href: ‘https://medium.com/@louispetrik'
}

Hợp nhất URL cơ sở và một đường dẫn chính xác thành một URL chính xác

url.resolve(‘https://hocweb.vn/', ‘/cach-xu-ly-error-trong-ung-dung-express-va-nodejs’)

Kết quả: https://hocweb.vn/cach-xu-ly-error-trong-ung-dung-express-va-nodejs/

Xuất giá trị của tham số tìm kiếm của URL

let SearchURL = new URL(‘https://example.org/?product=car')
console.log(SearchURL.searchParams.get(‘product’))

Kết quả: car

Kết luận

Hôm nay là vậy, tôi hy vọng bạn đã học được điều gì đó mới và hữu ích. Hãy tận dụng để giúp ích cho project, app của bạn.

Tham khảo thêm về NodeJS: Tạo bot Telegram đơn giản bằng NodeJS

Tham khảo thêm về React: 10 React Components mới tuyệt vời nhất 04/2020


Like it? Share with your friends!

1065