Có bất kỳ lợi ích hiệu suất để sử dụng cái này hơn cái kia không?
Câu trả lời hiện tại là không, bởi vì không có công cụ trình duyệt hiện tại nào thực hiện import/export
từ tiêu chuẩn ES6.
Một số biểu đồ so sánh http: // Khangax.github.io/compat-table/es6/ không tính đến điều này, vì vậy khi bạn thấy hầu hết các màu xanh lục cho Chrome, hãy cẩn thận. import
từ khóa từ ES6 chưa được đưa vào tài khoản.
Nói cách khác, các công cụ trình duyệt hiện tại bao gồm V8 không thể nhập tệp JavaScript mới từ tệp JavaScript chính thông qua bất kỳ chỉ thị JavaScript nào.
(Chúng tôi có thể vẫn chỉ là một vài lỗi hoặc cách đó vài năm cho đến khi V8 thực hiện theo thông số kỹ thuật ES6.)
Tài liệu này là những gì chúng ta cần, và tài liệu này là những gì chúng ta phải tuân theo.
Và tiêu chuẩn ES6 nói rằng các phụ thuộc mô-đun nên có trước khi chúng ta đọc mô-đun như trong ngôn ngữ lập trình C, nơi chúng ta có .h
các tệp (tiêu đề) .
Đây là một cấu trúc tốt và được thử nghiệm tốt, và tôi chắc chắn rằng các chuyên gia tạo ra tiêu chuẩn ES6 đã nghĩ đến điều đó.
Đây là những gì cho phép Webpack hoặc các gói gói khác tối ưu hóa gói trong một số trường hợp đặc biệt và giảm một số phụ thuộc từ gói không cần thiết. Nhưng trong trường hợp chúng ta có sự phụ thuộc hoàn hảo thì điều này sẽ không bao giờ xảy ra.
Nó sẽ cần một thời gian cho đến khi import/export
hỗ trợ bản địa đi vào hoạt động và require
từ khóa sẽ không đi đến đâu trong một thời gian dài.
Là require
gì
Đây là node.js
cách để tải các mô-đun. ( https://github.com/nodejs/node )
Nút sử dụng các phương thức cấp hệ thống để đọc tệp. Bạn cơ bản dựa vào đó khi sử dụng require
. require
sẽ kết thúc trong một số cuộc gọi hệ thống như uv_fs_open
(phụ thuộc vào hệ thống cuối, Linux, Mac, Windows) để tải tệp / mô-đun JavaScript.
Để kiểm tra xem điều này có đúng không, hãy thử sử dụng Babel.js và bạn sẽ thấy import
từ khóa sẽ được chuyển đổi thành require
.
node --experimental-modules index.mjs
cho phép bạn sử dụngimport
mà không cần Babel và hoạt động trong Node 8.5.0+. Bạn cũng có thể (và nên) xuất bản các gói npm của mình dưới dạng ESModule gốc , với khả năng tương thích ngược chorequire
cách cũ .