
วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: ความเป็นมาของการเรียนรู้
บทความนี้มาจากการสัมภาษณ์ ฉันถูกถาม ว่าส่วนประกอบ vue และ react จำเป็นต้องทำงานร่วมกันและนำกลับมาใช้ใหม่ได้อย่างไร
ยกเว้นว่านักพัฒนาจะโอนรหัสด้วยตนเอง ปัจจุบัน ฉันคิดได้เพียงสองโซลูชันเท่านั้น
โซลูชันที่ 1: แปลงโค้ด vue และโค้ดตอบกลับ (การซิงโครไนซ์ไลบรารีส่วนประกอบ)
โซลูชันที่ 2: ปล่อยให้คอมโพเนนต์ vue ทำงานโดยตรงในโปรเจ็กต์ React และในทางกลับกัน
มาดูการนำไปใช้งานกันก่อน

คอมโพเนนต์ vue ถูกเรนเดอร์ตามปกติ และฉันก็ คลิกปุ่ม 3 ครั้ง การตอบสนองและการเรนเดอร์ของ vue ก็เป็นเรื่องปกติเช่น
หลักการนำไปใช้งานคือ
การแนะนำ vue เวอร์ชันเต็ม (หากคุณพิจารณาถึงประสิทธิภาพ คุณสามารถแนะนำได้ตามความต้องการ)
รอจนกระทั่งสเตจ ComponentDidMount เมานต์ <div id="vueApp" /> จากนั้น
new Vue(..).$mount('#vueApp')
import Vue จาก 'vue/dist/vue.min.js' //แนะนำเวอร์ชันที่สมบูรณ์ มิฉะนั้น ไวยากรณ์อ็อบเจ็กต์ส่วนประกอบของ vue จะไม่สามารถแยกวิเคราะห์ได้ ส่งออกคลาสเริ่มต้น App ขยาย Component {
ตัวสร้าง (อุปกรณ์ประกอบฉาก) {
ซุปเปอร์(อุปกรณ์ประกอบฉาก)
-
ส่วนประกอบDidMount() {
const ฟู = {
แม่แบบ: `
<div>
<h1>ฉันคือวิว: {{aaa}}</h1>
<h1>ฉันคือวิว: {{aaa}}</h1>
<h1>ฉันคือวิว: {{aaa}}</h1>
<button @click="aaa++">ปุ่ม</button>
</div>
-
ข้อมูล () {
กลับ {
อ๋อ: 2222
-
-
-
นิววิว({
แสดงผล: h => h(Foo),
}).$เมานท์('#vueApp')
-
แสดงผล() {
กลับ (
<div>
<h1>ขณะนี้อยู่ในโครงการตอบโต้</h1>
<h1>ขณะนี้อยู่ในโครงการตอบโต้</h1>
ต่อไปนี้จะแสดงผลคอมโพเนนต์ vue <div id="vueApp" />
</div>
-
-
} หมายเหตุ:
หากคุณต้องการสนับสนุนออบเจ็กต์ตัวเลือกคอมโพเนนต์ของ vue เท่านั้น คุณไม่จำเป็นต้องกำหนดค่า webpack
อ็อบเจ็กต์ตัวเลือกคอมโพเนนต์ของ Vue อ้างถึง:
const Foo = {
แม่แบบ: `
<div>
<h1>ฉันคือวิว: {{aaa}}</h1>
<h1>ฉันคือวิว: {{aaa}}</h1>
<h1>ฉันคือวิว: {{aaa}}</h1>
<button @click="aaa++">ปุ่ม</button>
</div>
-
ข้อมูล () {
กลับ {
อ๋อ: 2222
-
-
} เวอร์ชันขั้นสูงในที่นี้อ้างถึง: จำเป็นต้องรองรับไฟล์/ส่วนประกอบ .vue (การสาธิตด้านบนเป็นออบเจ็กต์ตัวเลือกส่วนประกอบโดยตรง ไม่มีไฟล์ .vue)
ตัวอย่างเช่น: (ใช้การสาธิตด้านบนต่อไปและเปลี่ยน a ไม่กี่บรรทัด)
import Foo from "./Foo.vue";นำเข้า Vue จาก 'vue/dist/vue.min.js' // แนะนำเวอร์ชันเต็ม มิฉะนั้น ไวยากรณ์อ็อบเจ็กต์ส่วนประกอบของ vue ไม่สามารถแยกวิเคราะห์การนำเข้าได้ ฟูจาก "./ Foo.vue";
แอปคลาสเริ่มต้นส่งออกขยายส่วนประกอบ {
-
ส่วนประกอบDidMount() {
นิววิว({
แสดงผล: h => h(Foo),
}).$เมานท์('#vueApp')
-
-
} เพื่อให้สิ่งนี้มีผล คุณต้องกำหนดค่า
// ใน webpack.config.js const { VueLoaderPlugin } = need ('vue -ตัวโหลด')
โมดูล.ส่งออก = {
โหมด: 'การพัฒนา'
โมดูล: {
กฎ: [
-
ทดสอบ: /.vue$/,
ตัวโหลด: 'vue-loader'
-
-
-
ปลั๊กอิน: [
// อย่าลืมรวมปลั๊กอินสำหรับเวทย์มนตร์ด้วย
ใหม่ VueLoaderPlugin()
-
} หมายเหตุ:
ขอแนะนำว่าเมื่อทำการทดสอบ อย่าใช้โปรเจ็กต์ react scaffolding แต่ให้ใช้โปรเจ็กต์ react ที่กำหนดค่า webpack.config.js ตั้งแต่เริ่มต้น
เมื่อฉันใช้ scaffolding เวอร์ชันล่าสุด หลังจากรัน eject แล้ว ให้ไปที่ webpack.config การเขียนในนั้นจะรายงานข้อผิดพลาดเนื่องจาก VueLoaderPlugin เข้ากันไม่ได้กับไวยากรณ์ oneOf
หากคุณไม่ต้องการแยกวิเคราะห์ไฟล์ .vue และใช้ไวยากรณ์อ็อบเจ็กต์อ็อบเจ็กต์คอมโพเนนต์ของ vue โดยตรง ก็ไม่จำเป็นต้องกำหนดค่า vue-loader เพิ่มเติม
ขอแนะนำว่าคุณอย่าใช้การตอบสนองเมื่อทำการทดสอบ สำหรับโปรเจ็กต์แบบนั่งร้าน ให้ใช้โปรเจ็กต์การตอบสนองที่กำหนดค่า webpack.config.js ตั้งแต่เริ่มต้น
หากคุณไม่ต้องการแยกวิเคราะห์ไฟล์ .vue และใช้ vue โดยตรง ไวยากรณ์อ็อบเจ็กต์คอมโพเนนต์ของตัวเลือก ดังนั้นจึงไม่จำเป็นต้องกำหนดค่าเพิ่มเติมของ vue-loader
สุดท้ายนี้ สำหรับการเปรียบเทียบ คอมโพเนนต์ vue project React จะถูกใช้ในโปรเจ็กต์ react และคอมโพเนนต์ vue จะถูกใช้ในโปรเจ็กต์ react
| ฉันจำเป็นต้องกำหนดค่าตัวโหลดของ webpack.config.js หรือไม่ | |
|---|---|
| ใช้ | ส่วนประกอบ |
| react ในโปรเจ็กต์ vue | yes คุณต้องกำหนดค่า babel-loader และ คอมไพล์ไฟล์ .jsx คุณต้องให้ความสนใจเป็นพิเศษกับตัวเลือกในการกำหนดค่า babel-loader |
| หากคุณไม่ต้องการแยกวิเคราะห์ไฟล์ .vue ให้ใช้ vue โดยตรง หากใช้ไวยากรณ์ อ็อบเจ็กต์คอมโพเนนต์ ไม่จำเป็นต้องกำหนดค่า vue-loader เพิ่มเติม หากคุณต้องการ รองรับไฟล์ .vue คุณต้องกำหนดค่า vue-loader |
บทความนี้ทำซ้ำจาก: https://juejin.cn/post/7083303446161391623
ผู้แต่ง: bigtree