Hướng dẫn pipeline in nodejs
Chào các bạn! 1. Các loại stream trong Node.js:Trong bài trước, mình đã giới thiệu với các bạn về stream. Trong bài viết này mình sẽ giới thiệu về các loại stream trong Node.js.
Trong quá trình làm việc với Node.js, chúng ta có thể bắt gặp các loại stream này xuất hiện nhiều như: các request là readable stream, các response là writable stream; sử dụng fs module để xử lý đọc/ghi file (duplex stream) và hầu hết các loại kết nối trong Node.js đều dựa trên Node.js stream. 2. Kỹ thuật pipe trong Node.js là gì?Về cơ bản kỹ thuật là một phương thức của stream, là cơ chế kết nối 2 stream với nhau, đầu ra của stream này được nối với đầu vào của stream khác. Trong Node.js, pipe sẽ nối từ một readable stream sang một writable stream. 3. Các ví dụ minh họa:Ban đầu mình tạo 2 file là app.js và readme.txt cùng cấp. File app.js dùng để chứa code xử lý và readme.txt là file có nội dung bất kỳ được dùng làm file nguồn khi sử dụng kỹ thuật pipe.
Ở đây, mình tạo ra readable stream đọc nội dung từ file readme.txt, mình tạo ra writable stream để ghi nội dung vào file readmeCopy.txt. Bằng cách sử dụng kỹ thuật pipe, để nối readable stream với writable stream thì nội dung của file nguồn (trong readable stream) sẽ được truyền sang file đích (trong writable stream). Mở terminal lên và thực thi dòng lệnh node app.js. Các bạn sẽ thấy file readmeCopy.txt được tạo ra (cùng cấp) có nội
dung hoàn toàn giống với file readme.txt.
Ở đây, mình sử dụng thư viện zlib sẵn có trong Node.js để xử lý nén stream. Đồng thời, mình tạo một writable stream mới có tên là compress với file đích là readme.txt.gz, một luồng xử lý với tên là gzip để thực hiện nén dữ liệu trước khi ghi vào file đích. Bằng cách nối readable stream đọc nội từ file nguồn đến luồng nén gzip trước khi được ghi vào file đích readme.txt.gz. Mở terminal lên thực hiện lệnh: node app.js. Các bạn sẽ thấy file readme.txt.gz được tạo ra cùng cấp, và có dung lượng nhỏ hơn file nguồn. Và trong file này chứa file có nội dung hoàn toàn giống với file đích. Trên đây là những kiến thức bổ sung cho stream và những ví dụ minh họa cơ bản khi sử dụng kỹ thuật pipe trong node.js. Bằng cách vận dụng linh hoạt kỹ thuật pipe ghép nối nhiều readable và writable stream lại với nhau sẽ giúp chúng ta có thêm nhiều phương pháp xử lý cho từng yêu cầu cụ thể trong thực tế. *Nguồn tham khảo: *
|