นี่เป็นข้อ จำกัด พิเศษที่เพิ่มโดยผู้พัฒนา create-react-app มันถูกนำมาใช้ในเพื่อให้แน่ใจว่าไฟล์ที่อาศัยอยู่ในModuleScopePlugin
src/
ปลั๊กอินนั้นรับรองว่าการนำเข้าสัมพัทธ์จากไดเรกทอรีต้นทางของแอพไม่สามารถเข้าถึงจากภายนอกได้
คุณสามารถปิดใช้งานฟีเจอร์นี้ได้ แต่หลังจากeject
การทำงานของโครงการ create-react-app
ฟีเจอร์และการอัพเดทส่วนใหญ่นั้นซ่อนอยู่ภายในระบบการสร้างแอปแบบตอบโต้ หากคุณทำให้eject
คุณไม่มีฟีเจอร์และการอัปเดตอีกต่อไป ดังนั้นหากคุณยังไม่พร้อมที่จะจัดการและกำหนดค่าแอพพลิเคชั่นที่รวมไว้เพื่อกำหนดค่า webpack และอื่น ๆ - อย่าeject
ดำเนินการ
เล่นตามกฎที่มีอยู่ (เลื่อนไปที่ src) แต่ตอนนี้คุณสามารถทราบวิธีการลบข้อ จำกัด : ทำeject
และลบModuleScopePlugin
จากการตั้งค่าไฟล์ webpack
ตั้งแต่สร้างปฏิกิริยาแอป v0.4.0NODE_PATH
ตัวแปรสภาพแวดล้อมจะช่วยให้การระบุเส้นทางสำหรับการนำเข้าแน่นอน และตั้งแต่v3.0.0 NODE_PATH
จะเลิกในความโปรดปรานของการตั้งค่าbaseUrl
ในหรือjsconfig.json
tsconfig.json
การนำเข้าแบบสัมบูรณ์อนุญาตให้ใช้import App from 'App'
แทนimport App from './App'
สัมพันธ์กับค่าที่ระบุใน URL พื้นฐาน
คุณสมบัตินี้มีประโยชน์อย่างยิ่งสำหรับการ monorepos หรือคำถามการกำหนดค่าอื่น ๆ แต่ไม่ใช่สำหรับการนำเข้ารูปภาพหรือสิ่งอื่นจากpublic
โฟลเดอร์
เนื้อหาของpublic
โฟลเดอร์จะถูกวางไว้ในbuild
โฟลเดอร์และให้บริการโดย url ที่เกี่ยวข้อง นอกจากนี้ทุกอย่างที่นำเข้าจะถูกประมวลผลโดย webpack และจะถูกวางไว้ในbuild
โฟลเดอร์
หากคุณนำเข้าบางสิ่งจากpublic
โฟลเดอร์อาจเป็นสิ่งที่ซ้ำกันในbuild
โฟลเดอร์และจะมี URL ที่แตกต่างกันสองแบบ (หรือด้วยวิธีการโหลดที่แตกต่างกัน) ซึ่งท้ายที่สุดแล้วขนาดแพคเกจการดาวน์โหลดจะแย่ลง
การนำเข้าจากโฟลเดอร์srcเป็นที่ต้องการและมีข้อดี ทุกอย่างจะได้รับการบรรจุโดย webpack ไปมัดกับชิ้นขนาดที่เหมาะสมและมีประสิทธิภาพในการโหลดที่ดีที่สุด
มีโซลูชั่นระดับกลางคือระบบrewireซึ่งช่วยให้คุณสามารถปรับเปลี่ยนการตั้งค่า webpack โดยทางโปรแกรม แต่เอาModuleScopePlugin
ปลั๊กอินไม่ได้เป็นดีแก้ปัญหา; src
มันจะดีกว่าที่จะเพิ่มการทำงานอย่างเต็มที่ไดเรกทอรีเพิ่มเติมที่คล้ายกับ
ขณะนี้create-react-app
ไม่รองรับไดเรกทอรีเพิ่มเติมนอกเหนือจากsrc
ในโฟลเดอร์ราก ซึ่งสามารถทำได้โดยใช้react-app-rewire-alias
../public/images/logo_2016.png
คุณเพิ่มขึ้นสองครั้งก่อนจากโฟลเดอร์คอมโพเนนต์จากนั้นออกจากโฟลเดอร์ src