Trong bài viết này, tôi sẽ chỉ cho bạn cách chia sẻ các chức năng và giá trị bằng cách xuất và nhập các mô-đun trong Node. js
Tại sao xuất mô-đun?
Bạn sẽ muốn xuất các mô-đun để có thể sử dụng chúng trong các phần khác của ứng dụng của mình
Các mô-đun có thể phục vụ các mục đích khác nhau. Họ có thể cung cấp các tiện ích đơn giản để sửa đổi chuỗi. Họ có thể cung cấp các phương thức để thực hiện các yêu cầu API. Hoặc thậm chí họ có thể cung cấp các hằng số và giá trị nguyên thủy
Khi bạn xuất một mô-đun, bạn có thể nhập nó vào các phần khác của ứng dụng và sử dụng nó
Nút. js hỗ trợ Mô-đun CommonJS và Mô-đun ECMAScript
Trong phần còn lại của bài viết này, chúng ta sẽ tập trung vào CommonJS Modules, cách tiếp cận ban đầu để đóng gói các module trong Node. js
Nếu bạn muốn tìm hiểu thêm về các Mô-đun ES [cùng với các mô-đun CommonJS], bạn có thể xem hướng dẫn chuyên sâu này
Cách xuất các mô-đun trong nút
Nút. js đã xuất các mô-đun dựng sẵn bao gồm fs, đường dẫn và http để đặt tên cho một số. Nhưng bạn có thể tạo các mô-đun của riêng mình
Nút. js coi mỗi tệp trong dự án Node là một mô-đun có thể xuất các giá trị và chức năng từ tệp
Ví dụ: giả sử bạn có tệp tiện ích
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 với mã sau// utility.js
const replaceStr = [str, char, replacer] => {
const regex = new RegExp[char, "g"]
const replaced = str.replace[regex, replacer]
return replaced
}
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 là một mô-đun mà các tệp khác có thể nhập nội dung từ đó. Nhưng hiện tại console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 không xuất được gìBạn có thể xác minh điều này bằng cách kiểm tra đối tượng toàn cầu
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
2 trong mỗi tệp. Khi bạn in đối tượng toàn cầu console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
2 trong tệp tiện ích này, bạn cóconsole.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
Đối tượng
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
2 có thuộc tính console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5, như bạn có thể thấy, là một đối tượng trốngVì vậy, mọi nỗ lực nhập bất kỳ thứ gì từ tệp này sẽ gây ra lỗi
Tệp
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 có phương thức console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
7 thay thế các ký tự trong chuỗi bằng một số ký tự khác. Chúng tôi có thể xuất chức năng này từ mô-đun này để sử dụng cho các tệp khácĐây là cách
// utility.js
const replaceStr = [str, char, replacer] => {
const regex = new RegExp[char, "g"]
const replaced = str.replace[regex, replacer]
return replaced
}
module.exports = { replaceStr }
// or
exports.replaceStr = replaceStr
Bây giờ,
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
7 có sẵn để sử dụng trong các phần khác của ứng dụng. Để sử dụng nó, bạn nhập nó như thế nàyconst { replaceStr } = require['./utility.js']
// then use the function anywhere
mô-đun. xuất so với xuất trong Node
Bạn có thể xuất các hàm và giá trị từ một mô-đun bằng cách sử dụng
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
1hoặc bằng cách sử dụng
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
3Có gì khác biệt?
Các phương pháp này khá giống nhau. Về cơ bản,
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5 đóng vai trò là tham chiếu đến console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9. Để hiểu rõ hơn về điều này, hãy thêm đối tượng console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5 bằng cách sử dụng hai cách xuất giá trịconsole.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
7Có hai điều cần lưu ý ở đây
- Từ khóa
5 là tham chiếu đến đối tượngconsole.log[module] // { // id: ".", // path: "...", // exports: {}, // parent: null, // filename: "...", // loaded: false, // children: [], // paths: [ // ... // ], // }
5 trong đối tượngconsole.log[module] // { // id: ".", // path: "...", // exports: {}, // parent: null, // filename: "...", // loaded: false, // children: [], // paths: [ // ... // ], // }
6. Bằng cách thực hiện// utility.js const replaceStr = [str, char, replacer] => { const regex = new RegExp[char, "g"] const replaced = str.replace[regex, replacer] return replaced } module.exports = { replaceStr } // or exports.replaceStr = replaceStr
7, nó đã thêm thuộc tính// utility.js const replaceStr = [str, char, replacer] => { const regex = new RegExp[char, "g"] const replaced = str.replace[regex, replacer] return replaced } module.exports = { replaceStr } // or exports.replaceStr = replaceStr
8 vào đối tượng// utility.js const replaceStr = [str, char, replacer] => { const regex = new RegExp[char, "g"] const replaced = str.replace[regex, replacer] return replaced } module.exports = { replaceStr } // or exports.replaceStr = replaceStr
9, như bạn có thể thấy trong nhật ký đầu tiênconsole.log[module] // { // id: ".", // path: "...", // exports: {}, // parent: null, // filename: "...", // loaded: false, // children: [], // paths: [ // ... // ], // }
- Nhật ký thứ hai không chứa bản xuất
8 nữa. Nó chỉ có chức năng được xuất bằng cách sử dụng// utility.js const replaceStr = [str, char, replacer] => { const regex = new RegExp[char, "g"] const replaced = str.replace[regex, replacer] return replaced } module.exports = { replaceStr } // or exports.replaceStr = replaceStr
9. Tại sao cái này rất?console.log[module] // { // id: ".", // path: "...", // exports: {}, // parent: null, // filename: "...", // loaded: false, // children: [], // paths: [ // ... // ], // }
const { replaceStr } = require['./utility.js']
// then use the function anywhere
2 là một cách gán lại một đối tượng mới cho thuộc tính console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5. Đối tượng mới chỉ chứa chức năng, vì vậy // utility.js
const replaceStr = [str, char, replacer] => {
const regex = new RegExp[char, "g"]
const replaced = str.replace[regex, replacer]
return replaced
}
module.exports = { replaceStr }
// or
exports.replaceStr = replaceStr
8 không còn được xuấtVậy sự khác biệt là gì?
Xuất giá trị chỉ bằng từ khóa
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5 là cách nhanh chóng để xuất giá trị từ một mô-đun. Bạn có thể sử dụng từ khóa này ở trên cùng hoặc dưới cùng và tất cả những gì nó làm là điền vào đối tượng console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9. Nhưng nếu bạn đang sử dụng console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5 trong một tệp, hãy tiếp tục sử dụng nó trong toàn bộ tệp đóSử dụng
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 là một cách chỉ định rõ ràng kết quả xuất của mô-đun. Và điều này lý tưởng nhất là chỉ tồn tại một lần trong một tệp. Nếu nó tồn tại hai lần, khai báo thứ hai sẽ gán lại thuộc tính console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 và mô-đun chỉ xuất những gì khai báo thứ hai nêuVì vậy, như một giải pháp cho mã trước đó, bạn có thể xuất như thế này
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
4hoặc như thế này
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
5Gói [lại
Mỗi tệp trong một Nút. dự án js được coi là một mô-đun có thể xuất các giá trị để các mô-đun khác sử dụng
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 là một đối tượng trong Nút. js chứa các giá trị và hàm đã xuất từ mô-đun đóKhai báo một đối tượng
console.log[module]
// {
// id: ".",
// path: "...",
// exports: {},
// parent: null,
// filename: "...",
// loaded: false,
// children: [],
// paths: [
// ...
// ],
// }
9 trong tệp chỉ định các giá trị sẽ được xuất từ tệp đó. Khi xuất, một mô-đun khác không thể nhập các giá trị này bằng phương pháp toàn cầu ________ 112QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Người ủng hộ nhà phát triển và Người sáng tạo nội dung đam mê chia sẻ kiến thức của tôi về Công nghệ. Tôi dạy JavaScript / ReactJS / NodeJS / React Frameworks / TypeScript / et al
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu