ตราสัญลักษณ์
- ตรวจสอบ && รูปแบบ
- webpack1-ie8
- webpack3-react
- webpack3-vue
- webpack4-react
- webpack4-vue
อัปเดตคำแนะนำ
- โฟลเดอร์ที่อยู่ใน
webpack4-vue
และ webpack3-vue
เหมือนกันทุกประการ โปรดคัดลอกด้วยตนเองหากจำเป็น - โฟลเดอร์ที่รวมอยู่ใน
webpack4-react
และ webpack3-react
จะเหมือนกันทุกประการ โปรดคัดลอกด้วยตนเองหากจำเป็น - ความแตกต่างระหว่าง webpack 2 และ 3 นั้นน้อยมาก โดยพื้นฐานแล้วการแทนที่ 2 ด้วย 3 โดยตรงนั้นไม่มีปัญหา เฉพาะเวอร์ชัน 1/3/4 เท่านั้นที่จะกล่าวถึงในเอกสารการย้ายข้อมูลอย่างเป็นทางการ
- สภาพแวดล้อมการพัฒนาได้รับการโหลดซ้ำอย่างรวดเร็ว หากคุณต้องการให้สภาพแวดล้อมการพัฒนาเข้ากันได้กับ ie11 หรือต่ำกว่า โปรดล้างการโหลดซ้ำแบบร้อน
- ลบ
react-hot-loader/babel
ออกจากไฟล์ plugins
.babelrc
- ลบ
react-hot-loader
ออกจาก devDependencies
ใน package.json
-
devServer.inline
ใน config/opt.dev.js
ต้องเป็นเท็จ (vue จำเป็นต้องแก้ไขจุดนี้เท่านั้น) - ลบ
react-hot-loader
ออกจากโค้ด
- สภาพแวดล้อมการพัฒนารองรับ front-end
mock api
ซึ่งจะอ่านไฟล์ภายใต้ src/mock
โดยอัตโนมัติและดำเนินการอัปเดตยอดนิยม ตรรกะของโค้ดอยู่ใน config/mock.js
ซึ่งมี example
- เวอร์ชันของ
vue
และ vue-template-compiler
ต้องสอดคล้องกันโดยสมบูรณ์ มิฉะนั้นจะเกิดข้อผิดพลาดที่ไม่คาดคิด - การกำหนดค่าของ
webapck134,react,vue
ในไดเร็กทอรี config
ได้รับการรวม opt.self.js
หนึ่งเดียว - มีการละเว้นในคำอธิบาย
readme
โปรดย้ายไปยังไฟล์เพื่ออ่านความคิดเห็นของโค้ด ประเด็นสำคัญคือไฟล์ในไดเร็กทอรี config
มีความคิดเห็นและที่อยู่เอกสารอ้างอิงอย่างเป็นทางการ -
devDependencies
ใช้เพื่อวางการขึ้นต่อกันของเวอร์ชันที่ถูกล็อก dependencies
ขึ้นต่อกันล่าสุด Baidu สำหรับรายละเอียดเฉพาะ ค้นหาเอกสาร - เนื่องจาก
DllPlugin
และ CommonsChunkPlugin或splitChunks
มีฟังก์ชันที่ซ้ำกัน และแบบแรกจำเป็นต้องดำเนินการคำสั่ง webpack ล่วงหน้า จึงสามารถแทนที่ด้วย externals
ได้อย่างง่ายดาย DllPlugin
ต่อไปนี้จะไม่ถูกใช้อีกต่อไป
การเตรียมสิ่งแวดล้อม
- ตั้ง
npm config set registry https://registry.npm.taobao.org
- รัน
npm i -g npminstall
ในฐานะผู้ดูแลระบบ - ป้อนไดเร็กทอรีปัจจุบันด้วยบรรทัดคำสั่งและรัน
npminstall -c
- หากเกิดข้อผิดพลาด วิธีแก้ไขทั่วไปมีดังนี้:
- เรียกใช้
npm cache clean -f
และ npm cache verify -f
ในฐานะผู้ดูแลระบบ - ลบไดเร็กทอรี
node_modules
- รัน
npminstall -c
อีกครั้ง - สุดท้ายให้เปลี่ยนเป็นเครือข่ายที่ดีขึ้นและอัปเกรด
node
และ npm
- หมายเหตุเกี่ยวกับการใช้งาน:
- การติดตั้ง
npminstall -c
และ npm install
เข้ากันไม่ได้ แบบแรกเร็วกว่าแบบหลังมาก แต่ไม่สามารถใช้ร่วมกันได้ - การสลับไปใช้จำเป็นต้องลบโฟลเดอร์
node_modules
- หากมีปัญหากับ
node-v12.0.0
โปรดอย่าอัปเกรด node-v12
เวอร์ชันล่าสุดไม่มีปัญหา - ในบางครั้ง เกิดข้อผิดพลาดในการบรรจุภัณฑ์ที่อธิบายไม่ได้หรือข้อผิดพลาดในการเข้ารหัสเกิดขึ้น ลบ
node_modules
แล้วลองอีกครั้ง
การเริ่มต้นสภาพแวดล้อมการพัฒนา
-
npm start
- กรุณาใช้มันเมื่อคุณต้องการการสนับสนุนเช่น
-
npm run env -- FOR_IE=1 npm start
- เปิด http://localhost:8888 ในเบราว์เซอร์
การปรับใช้สภาพแวดล้อมการผลิต
-
npm run app
- กรุณาใช้มันเมื่อคุณต้องการการสนับสนุนเช่น
-
npm run env -- FOR_IE=1 npm run app
- เพียงคัดลอกเนื้อหาของโฟลเดอร์ dist ไปยังเซิร์ฟเวอร์
เพิ่มคุณสมบัติอื่น ๆ
-
npm run report
เพื่อดูองค์ประกอบมัดแพ็กเกจที่ใช้งานจริง- กรุณาใช้มันเมื่อคุณต้องการการสนับสนุนเช่น
-
npm run env -- FOR_IE=1 npm run report
-
npm run debug
เพิ่มการเริ่มต้นการดีบักเบรกพอยต์ พอร์ต 7777- กรุณาใช้มันเมื่อคุณต้องการการสนับสนุนเช่น
-
npm run env -- FOR_IE=1 npm run debug
อัพเดต package.json
- ติดตั้ง
npm i -g npm-check-updates
- ดำเนินการ
ncu
(ดู) ncu -u
(อัพเดต) ในไดเร็กทอรี package.json
ใช้การรีโหลดแบบร้อนแบบ react-hot-loader
เอกสารอย่างเป็นทางการ
- เพิ่ม
react-hot-loader
ให้กับ devDependencies
ใน package.json
-
devServer.inline
ของ webpack.cfg.dev.js
จะต้องเป็น true
- เพิ่ม
react-hot-loader/babel
ให้กับ plugins
ของ .babelrc
- เพิ่ม
--hot
ในคำสั่งเริ่มต้น ห้ามใช้ HotModuleReplacementPlugin
ในเวลาเดียวกัน - ส่วนประกอบรูท
export
รับการแก้ไขและเปิดตัว react-hot-loader
ก่อน react
import { hot } from 'react-hot-loader' ;
export default hot ( module ) ( App ) ;
หมายเหตุ: เฉพาะ 4.3.12 เท่านั้นที่รองรับ ie8+react@0
และต้องการการเปลี่ยนแปลงเล็กน้อย ซึ่งได้ดำเนินการเสร็จสิ้นแล้วในสคริปต์
การประมวลผลภาพ
- รูปภาพธรรมดา => https://tinypng.com
图片压缩
=> url-loader
(ต่ำกว่า 4kb) - รูปภาพ svg => https://github.com/svg/svgo
svg压缩
=> svg-url-loader
// 建议4kb以下使用,较大文件建议用file-loader
const src = require ( "!svg-url-loader?noquotes!./x.svg" ) ;
webpack 3 4 รองรับการวิจัย ie8
- รหัสที่บรรจุโดย DllPlugin ยังไม่ได้รับการแปลง และมีแนวโน้มว่าจะมีปัญหาเรื่องความไม่เข้ากัน ดังนั้น ความเร็วของการบรรจุจึงไม่สามารถปรับปรุงได้อย่างมาก
- หลักการของ hot reload คือ Object.defineProperty ซึ่ง ie8 ไม่รองรับ
- ไม่สามารถใช้ react/antd ล่าสุดได้ [email protected]/[email protected] รองรับ ie8 เท่านั้น vue ไม่รองรับ ie8 โดยตรง
- ณ จุดนี้ ข้อดีเกือบทั้งหมดของ webpack 3 4 ยังไม่ได้รับการพิจารณาในขณะนี้ และความเข้ากันได้ของเวอร์ชันออนไลน์ยังไม่ดีนัก
- หากคุณต้องการใช้ webpack 3 4 เพื่อให้เข้ากันได้กับ ie8 จริงๆ สิ่งต่อไปนี้มีไว้เพื่อใช้อ้างอิง แต่ยังไม่ได้รับการทดสอบ (ควรมีปัญหาทั้งหมด)
- https://github.com/ediblecode/webpack4-ie8
- https://github.com/natural-fe/natural-cli/blob/master/ie8-mvvm.md
การอ้างอิงข้อกำหนดรหัส
- http://eslint.cn/docs/rules
eslint规则文档
- https://github.com/yuche/javascript
js规范中文版
- https://github.com/airbnb/javascript
js规范es5,es6,react
- https://github.com/JasonBoy/javascript/tree/master/react
react规范中文版
- https://github.com/sivan/javascript-style-guide/tree/master/es5
es5规范中文版
- การกำหนดค่า
esling
ที่ใช้กันทั่วไป eslint-config-egg
eslint-config-react-app
eslint-config-ali
นิสัยการเขียนโค้ดส่วนบุคคล (แตกต่างกันไปในแต่ละบุคคล เลือกสิ่งที่คุณคิดว่าถูกต้อง เพื่อการอ้างอิงเท่านั้น)
เกี่ยวกับการเว้นบรรทัดว่างไว้ท้ายไฟล์
- แต่ละคนปฏิบัติตามนิสัยของตนเอง และการพัฒนาทีมก็รวมเป็นหนึ่งเดียวผ่าน
eslint --fix
อัตโนมัติ
เกี่ยวกับการเยื้องโค้ด
- แต่ละคนปฏิบัติตามนิสัยของตนเอง และการพัฒนาทีมก็รวมเป็นหนึ่งเดียวผ่าน
eslint --fix
อัตโนมัติ - มีการถกเถียงกันอย่างไม่มีที่สิ้นสุดระหว่างแท็บและช่องว่าง: หากคุณไม่ดำเนินการจัดแนวตัวแบ่งบรรทัด attr ของ html และการจัดตำแหน่งโคลอนของ css ก็ไม่มีอะไรผิดปกติกับแท็บ หากคุณต้องการจัดตำแหน่งใหม่ ควรใช้ช่องว่าง
เกี่ยวกับเครื่องหมายคำพูด
- js รวมเครื่องหมายคำพูดคู่, เครื่องหมายคำพูดคู่ภายในสตริงจะรวมเป็นหนึ่งเดียว
"
, เครื่องหมายคำพูดเดี่ยว x27
, เครื่องหมายคำพูดคู่ x22
เพื่อให้เครื่องหมายคำพูดคู่เป็นอันหนึ่งอันเดียวกัน - CSS รวมเครื่องหมายคำพูดคู่เข้าด้วยกัน และเนื้อหาเนื้อหาจะต้องถูกยกเว้นเพื่อป้องกันอักขระที่อ่านไม่ออก
- css/less/scss สามารถใช้เครื่องหมายคำพูดคู่แทนเครื่องหมายคำพูดเดี่ยวได้ในหลายกรณี และในบางกรณี เครื่องหมายคำพูดเดี่ยวอาจทำให้เกิดปัญหาเมื่อคอมไพล์ นอกจากนี้ แท็ก html ยังใช้เครื่องหมายคำพูดคู่ซึ่งจะรวมเป็นหนึ่งเดียว
ไม่ว่าจะเพิ่มลูกน้ำ
- หากไม่มีข้อผิดพลาดทางไวยากรณ์ ให้เพิ่มเข้าไป จะมีการเปลี่ยนแปลงความแตกต่างน้อยลง
ไม่ว่าจะเพิ่มอัฒภาคหรือไม่
- หากไม่มีข้อผิดพลาดทางไวยากรณ์ ให้เพิ่มเข้าไป จะมีการเปลี่ยนแปลงความแตกต่างน้อยลง
เกี่ยวกับการกำหนดตัวแปร
- หากมีการกำหนดแยกกัน จะมีหนึ่งตัวแปรต่อบรรทัด ลำดับความสำคัญจะถูกกำหนดให้กับ const และปล่อยให้ถูกใช้แทน var
- หากเป็นไปได้ ให้ใช้การทำลายโครงสร้างของออบเจ็กต์หรืออาร์เรย์สำหรับงานที่ได้รับมอบหมาย
เกี่ยวกับคำสั่งนำเข้า
- ลำดับความสำคัญสูงสุดคือการแนะนำ polyfill ตามด้วย React/Vue
- ประการที่สอง ในไดเร็กทอรีโมดูล (node_modules) ความลึกพาธของโมดูลจะถูกเรียงลำดับก่อน และลำดับจะถูกจัดประเภทและเรียงลำดับตาม (ส่วนประกอบ>ฟังก์ชัน>ค่าคงที่)
- จากนั้นจะถูกโหลดผ่านสื่อตัวโหลด เช่น Promise-loader
- จากนั้นจะมีไดเร็กทอรีการพัฒนา (dev_dir) ซึ่งจัดประเภทและเรียงลำดับตาม (component>function>constant)
- แนะนำไฟล์สไตล์ จำแนกและเรียงลำดับตาม (node_modules>dev_dir)
- นำเข้าไฟล์รูปภาพ จำแนกและจัดเรียงตาม (node_modules>dev_dir)