Xin chào tất cả các bạn, mình là Quân, như tiêu đề thì bài hôm nay mình sẽ hướng dẫn các bạn sử dụng ES Modules cụ thể hơn là cú pháp import – export trong NodeJS nhé.
“Bài này nằm trong loạt bài Lập Trình NodeJS từ cơ bản đến nâng cao trên trang blog chính thức trungquandev.com“
Những nội dung có trong bài:
- Giải thích & triển khai bài viết nhanh chóng – dễ hiểu
Giải thích & triển khai bài viết nhanh chóng – dễ hiểu
Nếu các bạn làm việc nhiều hoặc đọc nhiều tutorials liên quan đến Javascript như NodeJS, ReactJS…vv thì chắc hẳn các bạn đều từng gặp cú pháp của ES Modules là import ABC from 'ABC'
thay vì cú pháp const ABC = require('ABC')
của CommonJS.
Thông thường nếu không để ý thì các bạn sẽ thường gặp phải trường hợp lỗi như thế này khi chạy code:
Lỗi Unexpected identifier...
ở trên là do NodeJS đợt trước chưa có hỗ trợ cú pháp import/export của ECMAScript modules (ES Modules)
Cách giải quyết khá phổ biến mà mọi người hay dùng là sử dụng thư viện Babel để compile code về CommonJS. Chính mình cũng đã từng dùng Babel cho khóa học lập trình Nodejs MongoDB Messenger.
Nhưng bắt đầu từ phiên bản v12.0.0 trở lên, NodeJS đã support ES Modules đầy đủ import/export, nên các bạn chỉ cần cập nhật phiên bản NodeJS lên là có thể sử dụng được thoải mái.
Mình cũng có một bài viết hướng dẫn cách upgrade/downgrade phiên bản NodeJS dễ dàng trên mọi hệ điều hành {MacOS, Linux, Window} ở đây, các bạn tham khảo nhé:
Có một chút lưu ý ở đây đó là ngoài việc cài đặt phiên bản NodeJS mới nhất, thì trong file package.json
các bạn cũng cần phải thêm dòng khai báo "type": "module"
kiểu như thế này:
Ngoài ra nếu như không muốn khai báo trong package.json
như trên thì các bạn có thể đổi tên file code về đuôi mở rộng .mjs
, ví dụ app.js
thành app.mjs
Tất cả thông tin trên cũng đã đều có sẵn trên Documentation chính thức của NodeJS, các bạn cũng có thể nghiên cứu thêm ở đây:
https://nodejs.org/api/esm.html
(Ngoài lề quen thuộc: Cảnh báo này dành cho mấy bạn admin của mấy trang TopDev, TechBlog… chuyên đi copy rồi xào bài, hoặc bất kể trang nào khác mà đã đi copy bài không phải của các bạn thì hãy tôn trọng người viết bài chân chính, tuyệt đối không được xào nấu, chỉnh sửa linh tinh bài viết của mình, cấm xóa những liên kết (link) trong bài của mình cũng như tự ý xóa các câu thoại của mình trong toàn bộ bài viết rồi post lại lên trang của các bạn như kiểu đây là bài của các bạn vậy, mình sẽ thường xuyên dùng tool để check, và nếu phát hiện ra thì cứ đơn giản là chắc chắn sẽ ăn report DMCA nhé.)
Hết rồi đó, bài hôm nay chỉ ngắn gọn vậy thôi, về cú pháp require() thì nó dần dần sẽ không còn được sử dụng nữa, nên mình khuyến khích các bạn nên cập nhật lên phiên bản mới nhất của NodeJS để dử dụng những tính năng mới tuyệt vời khác nhé.
Cảm ơn các bạn đã dành thời gian đọc bài viết.
Xin chào và hẹn gặp lại các bạn ở những bài viết tiếp theo.
Best Regards – Trung Quân – Green Cat
Tham khảo kiến thức:
https://nodejs.org/api/esm.html
https://flaviocopes.com/how-to-enable-es-modules-nodejs/
“Thanks for awesome knowledges.”