Hướng dẫn how to link 2 javascript files - cách liên kết 2 tập tin javascript

Các phiên bản cũ của JavaScript không có nhập khẩu, bao gồm hoặc yêu cầu, vì vậy nhiều cách tiếp cận khác nhau đối với vấn đề này đã được phát triển.

Nhưng kể từ năm 2015 (ES6), JavaScript đã có tiêu chuẩn mô -đun ES6 để nhập các mô -đun vào Node.js, cũng được hỗ trợ bởi hầu hết các trình duyệt hiện đại.

Để tương thích với các trình duyệt cũ hơn, các công cụ xây dựng như webpack và rollup và/hoặc các công cụ chuyển đổi như Babel có thể được sử dụng.

Mô -đun ES6

Các mô -đun ECMAScript (ES6) đã được hỗ trợ trong Node.js kể từ v8.5, với cờ

export function hello() {
  return "Hello";
}
7 và vì ít nhất là Node.js v13.8.0 mà không có cờ. Để kích hoạt "ESM" (so với hệ thống mô-đun theo kiểu CommonJS trước đây của Node.js ["CJS"]) bạn sử dụng
export function hello() {
  return "Hello";
}
8 trong
export function hello() {
  return "Hello";
}
9 hoặc cung cấp cho các tệp tiện ích mở rộng
import { hello } from './module.js';
let val = hello();  // val is "Hello";
0. (Tương tự, các mô -đun được viết bằng mô -đun CJS trước đây của Node.js có thể được đặt tên
import { hello } from './module.js';
let val = hello();  // val is "Hello";
1 nếu mặc định của bạn là ESM.)

Sử dụng

export function hello() {
  return "Hello";
}
9:

{
    "type": "module"
}

Sau đó

import { hello } from './module.js';
let val = hello();  // val is "Hello";
3:

export function hello() {
  return "Hello";
}

Sau đó

import { hello } from './module.js';
let val = hello();  // val is "Hello";
4:

import { hello } from './module.js';
let val = hello();  // val is "Hello";

Sử dụng

import { hello } from './module.js';
let val = hello();  // val is "Hello";
0, bạn sẽ có
import { hello } from './module.js';
let val = hello();  // val is "Hello";
6:

export function hello() {
  return "Hello";
}

Sau đó

import { hello } from './module.js';
let val = hello();  // val is "Hello";
7:

import { hello } from './module.mjs';
let val = hello();  // val is "Hello";

Mô -đun Ecmascript trong trình duyệt

Các trình duyệt đã hỗ trợ trực tiếp cho việc tải các mô -đun Ecmascript (không cần công cụ như webpack) kể từ Safari 10.1, Chrome 61, Firefox 60 và Edge 16. Kiểm tra hỗ trợ hiện tại tại Caniuse. Không cần phải sử dụng tiện ích mở rộng

import { hello } from './module.js';
let val = hello();  // val is "Hello";
0 của Node.js; Các trình duyệt hoàn toàn bỏ qua các phần mở rộng tệp trên các mô -đun/tập lệnh.


// hello.mjs -- or the extension could be just `.js`
export function hello(text) {
  const div = document.createElement('div');
  div.textContent = `Hello ${text}`;
  document.body.appendChild(div);
}

Đọc thêm tại https://jakearchibald.com/2017/es-modules-in-binder/

Nhập khẩu động trong trình duyệt

Nhập khẩu động cho phép tập lệnh tải các tập lệnh khác khi cần:


Đọc thêm tại https://developers.google.com/web/updates/2017/11/dynamic-import

Node.js yêu cầu

Kiểu mô -đun CJS cũ hơn, vẫn được sử dụng rộng rãi trong Node.js, là hệ thống ________ 29/________ 30.

// mymodule.js
module.exports = {
   hello: function() {
      return "Hello";
   }
}
// server.js
const myModule = require('./mymodule');
let val = myModule.hello(); // val is "Hello"   

Có nhiều cách khác để JavaScript bao gồm nội dung JavaScript bên ngoài trong các trình duyệt không yêu cầu tiền xử lý.

Tải ajax

Bạn có thể tải một tập lệnh bổ sung với cuộc gọi AJAX và sau đó sử dụng

export function hello() {
  return "Hello";
}
1 để chạy nó. Đây là cách đơn giản nhất, nhưng nó được giới hạn trong miền của bạn vì mô hình bảo mật hộp cát JavaScript. Sử dụng
export function hello() {
  return "Hello";
}
1 cũng mở ra cánh cửa cho các vấn đề về lỗi, hack và bảo mật.

Tìm nạp tải

Giống như nhập Dynamic, bạn có thể tải một hoặc nhiều tập lệnh với cuộc gọi

export function hello() {
  return "Hello";
}
3 bằng cách sử dụng lời hứa để kiểm soát thứ tự thực thi cho các phụ thuộc tập lệnh bằng thư viện tiêm tìm nạp:

export function hello() {
  return "Hello";
}
0

tải jquery

Thư viện JQuery cung cấp chức năng tải trong một dòng:

export function hello() {
  return "Hello";
}
1

Tải tập lệnh động

Bạn có thể thêm một thẻ tập lệnh với URL tập lệnh vào HTML. Để tránh chi phí của jQuery, đây là một giải pháp lý tưởng.

Kịch bản thậm chí có thể nằm trên một máy chủ khác. Hơn nữa, trình duyệt đánh giá mã. Thẻ

export function hello() {
  return "Hello";
}
4 có thể được đưa vào trang web
export function hello() {
  return "Hello";
}
5 hoặc được chèn ngay trước khi đóng thẻ
export function hello() {
  return "Hello";
}
6.

Đây là một ví dụ về cách thức này có thể hoạt động:

export function hello() {
  return "Hello";
}
2

Hàm này sẽ thêm thẻ

export function hello() {
  return "Hello";
}
4 mới vào phần cuối của phần đầu của trang, trong đó thuộc tính
export function hello() {
  return "Hello";
}
8 được đặt thành URL được trao cho hàm là tham số đầu tiên.

Cả hai giải pháp này đều được thảo luận và minh họa trong JavaScript Madness: tải tập lệnh động.

Phát hiện khi tập lệnh đã được thực thi

Bây giờ, có một vấn đề lớn mà bạn phải biết. Làm điều đó ngụ ý rằng bạn tải mã từ xa. Các trình duyệt web hiện đại sẽ tải tệp và tiếp tục thực hiện tập lệnh hiện tại của bạn vì chúng tải mọi thứ không đồng bộ để cải thiện hiệu suất. (Điều này áp dụng cho cả phương thức jQuery và phương thức tải tập lệnh động thủ công.)

Điều đó có nghĩa là nếu bạn sử dụng các thủ thuật này trực tiếp, bạn sẽ không thể sử dụng mã mới được tải của mình theo dòng tiếp theo sau khi bạn yêu cầu nó được tải, bởi vì nó sẽ vẫn đang tải.

Ví dụ:

export function hello() {
  return "Hello";
}
9 chứa
import { hello } from './module.mjs';
let val = hello();  // val is "Hello";
0:

export function hello() {
  return "Hello";
}
3

Sau đó, bạn tải lại trang nhấn F5. Và nó hoạt động! Gây nhầm lẫn...

Vậy giờ làm gì với nó ?

Chà, bạn có thể sử dụng bản hack mà tác giả đề xuất trong liên kết tôi đã cung cấp cho bạn. Tóm lại, đối với những người vội vàng, anh ta sử dụng một sự kiện để chạy chức năng gọi lại khi tập lệnh được tải. Vì vậy, bạn có thể đặt tất cả các mã bằng thư viện từ xa trong hàm gọi lại. Ví dụ:

export function hello() {
  return "Hello";
}
4

Sau đó, bạn viết mã bạn muốn sử dụng sau khi tập lệnh được tải trong hàm Lambda:

export function hello() {
  return "Hello";
}
5

Sau đó, bạn chạy tất cả những thứ đó:

export function hello() {
  return "Hello";
}
6

Lưu ý rằng tập lệnh có thể thực thi sau khi DOM đã tải, hoặc trước đó, tùy thuộc vào trình duyệt và liệu bạn có bao gồm dòng

import { hello } from './module.mjs';
let val = hello();  // val is "Hello";
1 hay không. Có một bài viết tuyệt vời về tải JavaScript nói chung thảo luận về điều này.

Mã nguồn hợp nhất/tiền xử lý

Như đã đề cập ở đầu câu trả lời này, nhiều nhà phát triển sử dụng (các) công cụ Build/Transpilation như Bưu kiện, Webpack hoặc Babel trong các dự án của họ, cho phép họ sử dụng cú pháp JavaScript sắp tới, cung cấp khả năng tương thích ngược cho trình duyệt cũ hơn, kết hợp các tệp, Minify, Thực hiện phân tách mã, v.v.

Bạn có thể có hai tệp JavaScript không?

Bạn có thể viết JS của mình bằng các tệp riêng biệt, nhưng khi triển khai, sẽ hiệu quả hơn để thu nhỏ tất cả chúng thành một tệp.Đối với mỗi tập lệnh bạn tải trong trình duyệt của mình, bạn thực hiện một chuyến đi khứ hồi đến máy chủ, vì vậy thật hợp lý khi giảm thiểu chúng., but when it comes to deploying, it's more efficient to minify them all into a single file. For each script you load in your browser, you make a round-trip to the server, so it makes sense to minimize those.

Tôi có thể gọi hai tệp JavaScript trong một tệp HTML không?

Có, bạn có thể sử dụng nhiều tệp JS trong một tệp HTML.Đảm bảo tên chức năng trong mỗi tệp JS nên duy nhất để tránh sự mơ hồ.you can use multiple js file in one HTML file. make sure function name in each js file should unique so it avoid ambiguity.

Làm thế nào để bạn liên kết các tài liệu trong JavaScript?

Để liên kết một tệp JavaScript với tài liệu HTML, hãy sử dụng thẻ.Bạn cũng có thể sử dụng thẻ này để nhúng mã JavaScript trong tài liệu HTML.use the