Saya menggunakan Vue dan baru-baru ini mendapat masalah.

Jika saya memiliki dua file, fileA dan fileB dan di fileB saya menulis console.log('file B test')

Ketika saya melakukannya

console.log('file A test') 
import B from '@/app/fileB'

-> the devTool shows file B's console.log first  

Jadi apa yang mungkin menjadi masalah di sini? pemesanan impor? apakah itu dijamin untuk mengimpor dan mengeksekusi dari atas ke bawah? Jika seseorang mengetahui sesuatu tentang impor atau eksekusi pemesanan, terima kasih dulu!!

1
benson 13 Mei 2021, 06:26

1 menjawab

Jawaban Terbaik

Pernyataan impor selalu diangkat ke bagian paling atas modul. Modul yang berisi

// some non-import code
import foo from 'foo';
// some more non-import code 2
import bar from 'bar';
// some more non-import code 3

Akan berjalan seolah-olah semua impor berada di bagian paling atas:

import foo from 'foo';
import bar from 'bar';

// some non-import code
// some more non-import code 2
// some more non-import code 3

Untuk apa yang tampaknya ingin Anda lakukan, Anda dapat meminta B memiliki metode init atau sesuatu yang Anda panggil untuk membuatnya melakukan tugasnya:

import B from '@/app/fileB'
console.log('file A test')
B.init();

Opsi lain yang saya sukai adalah selalu mengimpor dan mengekspor fungsi - Anda dapat memiliki modul makeB alih-alih B, lalu memanggilnya di A:

// b
export const makeB = () => {
  const b = {};
  console.log('creating B now');
  // other stuff
  return b;
};
// a
import { makeB } from './makeB';
console.log('file A test');
const b = makeB();
// do stuff with b
0
CertainPerformance 13 Mei 2021, 03:30