Tìm hiểu về Global Objects trong NodeJS
Trong bài này chúng ta sẽ tìm hiểu Global Objects trong NodeJS, đây là những object có phạm vi toàn cục và bạn có thể sử dụng bất cứ đâu trong dự án NodeJS của mình.
Chắc hẳn ai đã từng học lập trình cũng đã từng nghe qua khái niệm về phạm vi toàn cục (global scope), điển hình như khi ta viết Javascript chạy trên trình duyệt nó cung cấp cho ta một object toàn cục là window
. Chúng ta có thể gọi window
trong bất cứ đâu mà không cần khai báo.
Trong NodeJS cung cấp cho chúng ta một vài object toàn cục (global Objects) hữu ích trong quá trình làm việc với NodeJS.
1. Global Objects trong NodeJS là gì ?
Global Objects là các object mà NodeJS cung cấp sẵn cho chúng ta trong nhân của NodeJS và trong các module. Bạn không cần phải khai bái hay include nó từ các thư viện khác mà chỉ cần gọi trực tiếp nó trong dự án. Các objects này có thể là một module, một hàm, object, string,... Các global objects được sử dụng rất thường xuyên trong lập trình với NodeJS. Chúng ta thử in ra các giá trị của biến global :
Bài viết này được đăng tại [free tuts .net]
Bạn mở file global.js có nội dung như sau:
console.log(global)
Bây giờ mở command lên và chạy dòng lệnh
node global.js
Chúng ta sẽ thấy các global objects mà NodeJS hỗ trợ như hình:
Các bạn sẽ thấy khá nhiều và có lẽ chúng ta ít khi nào cần dùng hết chúng, vì vậy trong trong phạm vi bài viết này chúng mình sẽ tìm hiểu một cố global objects mà chúng ta hay dùng trong lập trình NodeJS như :
- __dirname
- __filename
- Process
- Console
- Timer Functions
2. Tìm hiểu về một số Global Objects hay dùng
Một số obejcts chúng ta có thể gọi ở tất cả các module, tổn tại trong pham vi của module và bị hiểu nhầm là globals object.
- __dirname
- __filename
- exports
- module
- require()
Biến __dirname trong NodeJS
Được dùng để trả về đường dẫn đến thư mục hiện tại, chúng ta thử tạo một file có tên là dirname.js
có nội dung như sau:
console.log(__dirname)
chạy file dirname.js
với dòng lệnh :
node dirname.js
Chúng ta sẽ nhận được đường dẫn của thư mục hiện tại chứ file dirname.js
Biến __filename trong NodeJS
Gần tương tự như __dirname, biến __filename trả về đường dẫn file đang chạy. Tạo file filename.js
và chay đoạn code sau để xem kết quả :
console.log(__filename)
chạy file filename.js
với dòng lệnh :
node filename.js
Chúng ta cũng sẽ nhận được đường dẫn đến file filename.js
/home/tri/Desktop/freetuts.net/dirname.js
Console Object trong NodeJS
Console là một global object khá quen thuộc với chúng ta, bởi mình cũng đưa ra ví dụ cụ thể và để cập đến nhiều. NodeJS cung cho chúng ta một vài phương thức trong object console như :
- console.log() : Nó dùng để hiển thị các thông báo trên console
- console.error() : HIển thị các thông báo lỗi trên console
- console.warn() : Hiển thị các cảnh báo
Buffer Object trong NodeJS
Buffer Class cũng là global objects được NodeJS hỗ trợ, nếu bạn chưa biết khái niệm Buffer là gì thì nó là vùng lưu trữ dữ liệu tạm thời được lưu trữ trong bộ nhớ Ram. NodeJS cung cấp cho chúng ta module Buffer cho phép ta có thể lưu trữ dữ liệu như một mảng các số nguyên tố. Moudle buffet được dùng thay vì lưu trữ bằng nhị phân bởi javascript thuần rất ít hỗ trợ nhị phân. Chúng ta có thể dùng module Buffer mà không cần khai báo.
Tạo một buffer ta có thể sử dụng đoạn code như
const buf = new Buffer('hello freetuts');
Thêm giá trị vào buffer
buf.write(string, [offset], [length], [encoding])
Chuyển buffer thành string
buf.toString([encoding], [start], [end])
Các bạn có thể đọc thêm tài liệu về buffer trong docs của Nodejs ở trang chủ để tìm hiểu kĩ hơn
Timers Functions trong NodeJS
Timers functions cũng thuộc các global objects trong Nodejs, những bạn nào đã xem qua seri lập trình javascript căn bản chắc cũng đã tìm hiểu qua các hàm timers như : setTimeout, setInterval, setImmediate,..
Set Timer function
- setImmediate() : chạy ngay lập tức (như cái tên của nó) =))
- setTimeout() : chạy trong một khoảng thời gian.
- setInterval(): lặp đi lặp lại trong khoảng thời gian
Clear timer functions
- clearImmediate() : dừng một setImmediate objects, tạo bởi hàm setImmediate()
- clearTimeout() : dừng một setTimeout objects, tạo bởi hàm setTimeout()
- clearInterval() : dừng một setInterval objects, tạo bởi hàm setInterval()
Vì các hàm lại khá quen thuộc nên mình cũng không cần ví dụ mình họa, các bạn tìm hiểu kĩ hơn có thẻ tham khảo bài viết về seri lập trình javascript căn bản.
Trong bài hôm nay chúng ta đã tìm hiểu về một số các global objects trong NojdeJS, ngoài các objects mà mình đề cập đến ở trên Nodejs còn cung cấp cho chúng ta các objects khác như : exports, global, module, process. Để tìm hiểu thêm về các global object khác thì bạn có thể đọc tài liệu tại trang chính thức của NodeJS. Cảm ơn bạn đã ghé thăm, mong rằng bài viết sẽ cung cấp cho bạn kiến thức bổ ích trong lập trình NodeJS.