Node.js Module là gì? Cách tạo và sử dụng module trong nodejs

1
Dịch vụ dạy kèm gia sư lập trình

Bài viết này chúng ta sẽ cùng nhau tìm hiểu về modue trong Node.js. Từ khái niệm Node.js module là gì, tầm quan trọng và cách tự xây dựng một module cho riêng mình.

Khi bạn viết ứng dụng web sử dụng Node.js, bạn hoàn toàn có thể bỏ tất cả code vào một file index.js mà không gặp lỗi lầm gì cả.

Kể cả ứng dụng của bạn lớn và phức tạp tới đâu thì bỏ tất cả code vào một file cũng không ảnh hưởng tới tốc độ của ứng dụng.

Tuy nhiên, về mặt tổ chức code, hay nói cách khác là tính clean code thì thật là thảm họa. Mã nguồn ứng dụng của bạn sẽ như một bãi rác, khó debug và tính maintain cực kém.

Bạn thử tưởng tượng, nếu bạn là người phải maintain một dự án mà người tiền nhiệm viết code kiểu như vậy. Chắc là mình chỉ muốn “giết người” thôi 😀

Vì vậy, phàm là con người thì chúng ta cần phải viết code có tâm. Code cần phải clean, mã nguồn dễ đọc dễ hiểu. Và lúc này khái niệm Module ra đời và thể hiện vai trò quan trọng của nó.

Node.js Module là gì? Cách tạo và sử dụng module trong nodejs

#Node.js Module là gì?

Module là những đoạn mã được đóng gói lại và được giữ Private. Điều đó có nghĩa là các hàm hay biến trong module mới có thể truy cập và thao tác với nhau. Nếu bạn muốn sử dụng module từ bên ngoài thì cần phải chìa API là các biến/hàm ra bằng cách sử dụng exports hoặc module.exports.

Chính nhờ tính đóng gói như thế này mà đảm bảo tính toàn vẹn của Module. Sẽ chỉ có những hàm, biến được exports thì bên ngoài mới truy cập được.

Các module hoàn toàn tách biệt độc lập nhau, mỗi module sẽ thực hiện nhiệm vụ của riêng nó mà không ảnh hưởng tới module khác. Khi nào cần sử dụng module nào thì gọi chúng ra và kết hợp các module lại với nhau tùy logic xử lý của bạn.

Trong Node.js có hai loại module. Một loại module được tích hợp sẵn trong Node.js và người ta gọi là built-in module.

Còn loại mà do bên thứ 3 phát triển và có thể cài đặt thêm bất cứ lúc nào thì gọi là external module. Với external module, bạn có thể dễ dàng cài đặt thông qua NPM.

Để đi tìm câu trả lời Node.js module là gì? Chúng ta sẽ lần lượt tìm hiểu từng loại module nhé!

1. Built-in Modules

Như mình đã nói ở trên, built-in modules là những module được tích hợp sẵn trong Node.js. Có thể kể tên một số built-in module như: http, url, crypto, fs, events, path…

Như ở bài viết giới thiệu về Nodejs, mình có thể tạo một server http mà không cần phải cài đặt thêm bất cứ module nào khác.

/**
 * Son Duong
 * https://vntalking.com
 * June 04, 2019
 */
// app.js
const http = require('http');

const server = http.createServer((req, res) => {
    res.write('<h1> Hi, thank you for visit https://vntalking.com </h1><hr>');
    res.end();
});
server.listen(3000, 'localhost');
//end

Trong ví dụ trên mình require module http, sau đó khởi tạo server bằng phương thức http.createServer(), cuối cùng là lắng nghe server này trên port 3000.

2. Các module do 3rd party xây dựng (External Modules)

Các built-in module chỉ mang lại cho Nodejs những tính năng cơ bản. Điều mà làm cho Nodejs phổ biến chính là một kho các module do cộng đồng phát triển.

Chúng ta có thể dễ dàng cài đặt một module thông qua NPM, với repository nổi tiếng là npmjs.

Ở bài viết về xây dựng website bằng Express.Js chính là một ví dụ về việc sử dụng module bên ngoài.

/**
 * Son Duong
 * https://vntalking.com
 * June 04, 2019
 */
const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, () => console.log(Example app listening on port ${port}!))

Câu lệnh cài đặt một module bên ngoài: npm install --save express

Để sử dụng thì cũng tương tự như build-in module thôi: require('express')

3. Tự xây dựng module

Để tạo một module trong Nodejs cực kì dễ. Nếu không bàn đến logic của business thì cú pháp để tạo và đóng gói một module rất đơn giản, chỉ với vài dòng code.

Để dễ hiểu hơn, mình sẽ minh họa bằng một ví dụ tạo một module: Trả về một số ngẫu nhiên trong khoảng từ 1 đến 10.

Bước 1: Viết Module và chìa ra API

Đầu tiên, bạn tạo một file myRandom.js và chìa ra một API để có thể sử dụng ở bên ngoài module.

/**
 * Son Dương
 * https://vntalking.com
 * June 04, 2019
 */
// myRandom.js

function getRandom(min, max) {
      return Math.random() * (max - min) + min;
}

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

Bạn có thể thấy đoạn code trên, mình sẽ “thò” một hàm có tên là between1and10() bằng từ khóa exports. Như vậy, từ bên ngoài module chỉ có thể sử dụng được hàm between1and10 mà thôi.

Đọc ngay:

Bước 2: Sử dụng module

Như mình đã nói ở phần trên, module là một có tính đóng gói. Tức là chỉ những hàm/biến được phép truy xuất từ bên ngoài qua từ khóa exports, còn lại thì bên ngoài không thể truy nhập được.

Để sử dụng module, bạn làm như sau:

var myRandom = require('./myRandom.js');

console.log(myRandom.between1and10());

Nếu bạn cố tình gọi hàm getRandom() từ bên ngoài như sau:

var myRandom = require('./myRandom.js');

console.log(myRandom.getRandom(5, 99));

Nodejs sẽ báo lỗi ngay: TypeError: myRandom.getRandom is not a function.

Bằng cách ẩn những hàm/biến trong module, và chỉ cho phép những phần được phép sẽ cho phép mã nguồn của bạn được tổ chức tốt hơn.

4. Tạm kết

Qua bài viết này, bạn đã hiểu về Node.js module là gì rồi đúng không? Nếu bạn đã đọc bài viết về clean code trong Nodejs, bạn sẽ hiểu về tầm quan trọng của module trong việc giúp mã nguồn sáng sủa hơn.

Bài viết tiếp theo mình sẽ hướng dẫn các bạn tự xây dựng một server bằng Nodejs, cũng rất đơn giản thôi. Các bạn chờ nhé!

Dịch vụ phát triển ứng dụng mobile giá rẻ - chất lượng
Bài trướcNhận diện khuôn mặt với Firebase MLKit trong Android
Bài tiếp theoTạo HTTP server với Nodejs và cách request dữ liệu
Sơn Dương
Tên đầy đủ là Dương Anh Sơn. Tốt nghiệp ĐH Bách Khoa Hà Nội. Mình bắt đầu nghiệp coder khi mà ra trường chẳng xin được việc đúng chuyên ngành. Mình tin rằng chỉ có chia sẻ kiến thức mới là cách học tập nhanh nhất. Các bạn góp ý bài viết của mình bằng cách comment bên dưới nhé !

1
Bình luận. Cùng nhau thảo luận nhé!

avatar
  Theo dõi bình luận  
Mới nhất Cũ nhất Nhiều voted nhất
Thông báo
Hoang
Guest
Hoang

tks bạn nhiều nha