Node.js & Typescript: Modules, Tham số dòng lệnh và Hệ thống Tập tin

Trước tiên hãy làm rõ khái niệm: Nodejs là là một môi trường có thể chạy JavaScript bên ngoài trình duyệt và điều đó có nghĩa là sau khi cài đặt Node.js , bạn có thể khởi động terminal và thực thi mã JavaScript!
Nếu bạn đã từng sử dụng node thì có thể kiểm tra bằng câu lệnh dưới đây trong terminal, hoặc không hay cài đặt Node.js theo tài liệu của nó.
Modules
Bây giờ chúng ta tìm hiểu cách các module Node.js hoạt động và cách sử dụng chúng, hãy nhìn vào ví dụ dưới đây:
// main.js
console.log('Hello');
return;
console.log('world!');
Và kết quả khi chạy file trên là:
Hello
Theo ECMA 262 thì đoạn code trên có lẽ đã lỗi cú pháp
An ECMAScript program is considered syntactically incorrect if it contains a return statement that is not within a FunctionBody. A return statement causes a function to cease execution and return a value to the caller. If Expression is omitted, the return value is undefined. Otherwise, the return value is the value of Expression.
Nhung khi chạy nó, không có lỗi nào được thông báo và trình đã trả ra kết quả "Hello" . Lý giải cho việc này là thực tế trong Node.js mỗi tệp đưuọc coi là 1 module riêng biệt. Bên trong, Node.js gói chúng thành một hàm như thế này
function (exports, require, module, __filename, __dirname) {
// logic code của module
}
Nhờ vậy, các biến cấp cao được giới hạn trong module mà không phải là toàn cục của dự án, các module khác không thể truy cập các biến, hàm, ... của module khác.
Node.js sử dụng hệ thống module để tổ chức mã nguồn. Mỗi file .ts
hoặc .js
được coi là một module riêng biệt.
Để chia sẻ chức năng giữa các module, chúng ta sử dụng export
và import
:
// utils.js
export function add(a,b) {
return a + b;
}
function subtract (a, b) {
return a - b;
}
module.exports = {
add,
subtract,
};
// main.js
// app.js
const { add } =require('./math');
console.log(add(2, 3)); // Output: 5
Node.js gọi hàm bao bọc module của chúng ta theo cách mà từ khóa “ this ” tham chiếu đến module.exports . Chúng ta có thể dễ dàng chứng minh rằng:
console.log(this === module.exports); // output: true
Những điều trên thường gây nhầm lẫn vì nếu bạn chạy Node.js trong bảng điều khiển, từ khóa “ this ” sẽ tham chiếu đến đối tượng toàn cục .
Tham số dòng lệnh
Node.js cung cấp process.argv
để truy cập các tham số dòng lệnh:
// args.js
console.log(process.argv);
Khi chạy node args.js hello world
, bạn sẽ nhận được:
[
'/path/to/node',
'/path/to/args.js',
'hello',
'world'
]
- Tham số thứ 0 là đường dẫn đến Node.js
- Tham số thứ 1 là đường dẫn đến script
- Các tham số tiếp theo là những gì bạn truyền vào dòng lệnh
Bắt đầu với Typescript
Hãy tạo một thư mục my-project và cài đặt các package cần thiết.
// bash
mkdir my-project
cd my-project
npm init -y
npm install -D typescript @types/node ts-node
Thiết lập file tsconfig.json
{
"compilerOptions": {
"sourceMap": true,
"target": "es2017",
"alwaysStrict": true,
"noImplicitAny": true,
},
"exclude": [
"node_modules"
]
}
Bạn có thể truy cập tài liệu của typescript để thực hành nhiều hơn.
Làm việc với File System
Node.js cung cấp module fs
để tương tác với hệ thống tập tin.
Đọc tập tin.
// file.helper.ts
import * as fs from 'fs';
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
Ghi tập tin
// file.helper.ts
...
fs.writeFile('example.txt', 'Hello, world!', (err) => {
if (err) throw err;
console.log('File has been saved!');
});
Tổng kết
Chúng ta đã tìm hiểu cách:
- Sử dụng module trong Node.js với TypeScript
- Xử lý tham số dòng lệnh
- Tương tác cơ bản với hệ thống tập tin
Những kiến thức này là nền tảng vững chắc để xây dựng các ứng dụng Node.js mạnh mẽ và hiệu quả.
Comments ()