มีค่าใช้จ่ายด้านประสิทธิภาพหรือไม่หากใช้การนำเข้าหลายรายการแทนการนำเข้าที่มีชื่อเดียว

ฉันสงสัยว่าจะมีค่าใช้จ่าย ประสิทธิภาพ หรือไม่ หากเราทำ การนำเข้าหลายรายการ เช่น:

import { wrapper } from './components/wrapper';
import { error } from './components/error';
import { products } from './components/products';

ในแต่ละโฟลเดอร์ส่วนประกอบ ฉันมี index.js และส่งออกตามชื่อ เช่น:

export { default as wrapper } from '.wrapper';

เปรียบเทียบกับ:

นำเข้าไฟล์ทั้งหมดเป็นการนำเข้าที่มีชื่อจากแหล่งเดียวกัน เช่น:

import {
   wrapper,
   error,
   products,
 } from './components';

ในโฟลเดอร์ components ฉันมีดัชนีที่ฉันรวบรวมและส่งออกไฟล์ทั้งหมด เช่น:

export { wrapper } from '...';
export { error } from '...';
export { products } from '...';

person Theo Itzaris    schedule 06.03.2020    source แหล่งที่มา
comment
ฉันไม่ทราบเกี่ยวกับประสิทธิภาพ แต่ฉันจะทำเมื่อต้องนำเข้าไฟล์หลายไฟล์ซ้ำ ง่ายต่อการเปลี่ยนที่เดียวแทนที่จะเป็น 10+   -  person epascarello    schedule 06.03.2020
comment
ขึ้นอยู่กับว่าคุณกำลังรวมกลุ่มหรือไม่ เช่น. Webpack ฯลฯ หรือคุณใช้ import ของเบราว์เซอร์ หากคุณใช้เบราว์เซอร์ import การใช้ไฟล์อื่นชื่อ ./components จะเป็นอีกการดึงข้อมูลไปยังเซิร์ฟเวอร์ ดังนั้นตามทฤษฎีแล้วอาจช้าลง ฉันพูดตามทฤษฎีเพราะการใช้ http2/spdy ก็สามารถลบล้างผลกระทบนั้นได้เช่นกัน   -  person Keith    schedule 06.03.2020
comment
ทำไมคุณถึงสนใจเรื่องประสิทธิภาพด้วยล่ะ?   -  person Jonas Wilms    schedule 06.03.2020
comment
@JonasWilms ทุกคนควรใส่ใจเกี่ยวกับประสิทธิภาพ แต่ฉันไม่แน่ใจว่านั่นคือสิ่งที่คุณหมายถึง แต่อย่าปรับให้เหมาะสมล่วงหน้า   -  person Keith    schedule 06.03.2020


คำตอบ (2)


ตามข้อกำหนด ES262 คำสั่ง import และ export ให้ข้อมูลเกี่ยวกับการพึ่งพาระหว่างโมดูลกับเอ็นจิ้น วิธีการ โมดูลถูกโหลดจริง ๆ ในตอนท้ายนั้น ขึ้นอยู่กับเครื่องยนต์ (แม้ว่าจะมีข้อจำกัดบางประการ) ดังนั้นจริงๆ แล้วมีความแตกต่างระหว่างการนำเข้าจากแหล่งที่มากับการนำเข้าการส่งออกซ้ำหรือไม่นั้นขึ้นอยู่กับสภาพแวดล้อม

อย่างไรก็ตามความแตกต่างอาจไม่เกี่ยวข้องกัน เลือกสิ่งที่ดีที่สุดสำหรับคุณ

person Jonas Wilms    schedule 06.03.2020

ฉันเป็นแฟนตัวยงของแนวทางนั้น ฉันชอบแบ่งส่วนประกอบบางส่วนออกเป็นโฟลเดอร์และเปิดเผยเฉพาะสิ่งที่ฉันต้องการไปยังส่วนที่เหลือของแอปพลิเคชันของฉัน ฉันไม่คิดว่ามันจะส่งผลกระทบต่อประสิทธิภาพในการพัฒนา (เห็นได้ชัดว่าไม่มีความแตกต่างอย่างแน่นอนในการผลิตเนื่องจากโปรเจ็กต์ทั้งหมดรวมอยู่ในไฟล์เดียว)

person Kevin Gilbert    schedule 06.03.2020