DEV Community

Nguyen Thien Ly
Nguyen Thien Ly

Posted on

Import vs require

Mục lục

  1. Vấn đề
  2. Require là gì ?
  3. Import là gì?
  4. Sự khác nhau giữa require và import
  5. Kết bài

0. Vấn đề

Heyzo what's up

Xin chào tất cả mọi người, trước đây khi bắt đầu sử dụng import để thay thế require một package hay một module đã có để sử dụng.

Có một thắc mắc là tại sao lại sinh ra thằng import nhỉ trong khi require vẫn dùng tốt?

Sau khi tìm hiểu hôm nay mình sẽ trả lời thắc mắc đó theo suy nghĩ của mình, các bạn cùng đọc và cho ý kiến nhé

1. Require là gì?

Là hàm được xây dựng trong Nodejs theo chuẩn commonjs giúp việc khai báo sử dụng các module đã có sẵn rất dễ dàng, xem ví dụ dưới nhé

Tạo ra một module trong file

hello.js

module.exports = function () {
  console.log('Hello everybody!')
}

Giờ, require hello.js vào để sử dụng

main.js

var hello = require('./hello.js')

hello(); // Hello everybody

Rất dễ dàng phải không nào :v

2. Import là gì?

Là tính năng trong ES6 giúp việc khai báo sử dụng các module đã có sẵn rất dễ dàng, à hình như cũng khá là giống require nhỉ :v. Vậy chúng khác nhau cái gì đây, _- chả nhẻ chỉ đổi cách xưng hô, qua phần 3 sẽ rõ nhé. **Let's go*

3. Sự khác nhau giữa require và import

Giống nhau

Trước khi nói điểm khác thì mình xin nói điểm giống giữa hai thằng requireimport này nhé

  • Giúp việc khai báo sử dụng các module đã có sẵn rất dễ dàng, quản lí code theo module tốt hơn
  • Khi biên dịch thì import cũng trở về require để code có thể thực thi

Khác nhau

Thực chất là những thứ hay ho mà thằng import này có mà thằng có nhé (Lí do được sinh ra)

  • Theo mình cảm nhận thì khi dùng thằng import thì mọi người thấy code mình sáng hơn phải không nào đó là điều đầu tiền mà import mang lại nhé (Cảm quan thôi :v) => Giúp code dễ nhìn đẹp đẽ hơn

  • require trong Nodejs theo chuẩn commonjs, còn import mới có trong ES6

  • Trong một package, file có nhiều module thì việc mong muốn chỉ khai báo các module muốn sử dụng để khỏi lãng phí tài nguyên là mong muốn chính đáng phải không nào (Good good good). import cho phép bạn lấy ra từng phần mà bạn thực sự dùng (Không cần lấy ra cả package hay file như anh require nhé) => Giúp tiết kiệm bộ nhớ

  • Đối với require việc thực thi theo synchronous (Đồng bộ). Còn đối với import sẽ thực thi theo asynchronous (Bất đồng bộ), không quan tâm Chi Dân tới import thằng trên mình => Hiệu suất cải thiện hơn

var hello = require('./hello.js')
var hello1 = require('./hello1.js')
var hello2 = require('./hello2.js')

Lúc loading lên lần lượt là hello -> hello1 -> hello2
-----------------------------

import hello from './hello.js'
import hello1 from './hello1.js'
import hello2 from './hello2.js'

Lúc loading lên có thể là là hello2 -> hello -> hello1

4. Kết bài

Đến đây cũng đã hết bài viết rồi, cảm ơn mọi người đã theo dõi. Nếu có góp ý hay thắc mắc gì thì cứ để lại comment bên dưới mình sẽ trả lời. Xin chào mọi người.

Link tham khảo:

Top comments (2)

Collapse
 
namlq93 profile image
Nam

Nó đang dùng require mà mình thay từ require bằng từ import thì có được không b?

Collapse
 
him98 profile image
Nguyễn Văn Phóng

hoàn toàn được nhé version mới của nodejs hỗ trợ import phía server rồi thì phải