vue3-初步接觸/指令和條件渲染
vue環(huán)境的配置
在終端進(jìn)入項(xiàng)目目錄并進(jìn)行如下操作
請(qǐng)確保已經(jīng)安裝node.js
npm init vue@latest
初步學(xué)習(xí)不需要開(kāi)啟額外的功能 選擇no 否則會(huì)進(jìn)入ts的啟動(dòng)
cd <your-project-name>
npm install?
npm run dev
框架構(gòu)建完成

初步認(rèn)識(shí)vue文件結(jié)構(gòu)
部分設(shè)置沒(méi)有啟用? 圖片展示的是最基本的vue框架

assets:是用于存放著各種靜態(tài)文件,比如圖片,css等。
components:用于存放自定義的公共組件,即非路由組件,區(qū)別views包下的page組件。router:vue-router路由文件。index.js中引入views包下的.vue。store:是vuex的文件,主要用于項(xiàng)目里邊的一些狀態(tài)保存。比如state、mutations、actions、getters、modules。
views:用于存放我們寫(xiě)好的各種頁(yè)面,即路由組件,比如Login.vue,Home.vue。
App.vue:是主vue模塊,主要是使用router-link引入其他模塊,App.vue是項(xiàng)目的主組件,所有的頁(yè)面都是在App.vue下切換的。
main.js:程序入口文件,主要作用是初始化vue實(shí)例,同時(shí)可以在此文件中引用某些組件庫(kù)或者全局掛載一些變量。


使用npm run dev 可以打開(kāi)html的服務(wù)

指令和條件渲染
展示相關(guān)文件

vue主模塊
<script setup>
import Start from "@/components/start.vue";
import ModelInsert from "@/components/model-insert.vue";
import ConditionalRender from "@/components/Conditional-Render.vue";
</script>
<template>
?<main>
? ?<start />
? ?<ModelInsert />
? ?<ConditionalRender />
?</main>
</template>
<style scoped>
main{
}
</style>

子組件1
<template id="app">
?<!--緊跟著的并列元素 可以通過(guò)v-if/v-else-if/v-else來(lái)實(shí)現(xiàn)條件渲染-->
?<div class="top" v-if="number>50">
? ?<p v-if="number>200">渲染:大于200</p>
? ?<p v-else-if="50<number<200">渲染:50-200</p>
? ?<p v-else>渲染:小于50</p>
?</div>
?<div v-else>不渲染</div>
?<!-- ? 通常更推薦template來(lái)代替包裝 因?yàn)槭褂胐iv包裝會(huì)渲染div標(biāo)簽自身 而template不會(huì)-->
?<template v-if="show">
? ?<p>靜夜思</p>
? ?<p>李白</p>
? ?<p>床前明月光</p>
?</template>
?<!-- ? ?v-show是通過(guò)css樣式不展示來(lái)實(shí)現(xiàn)條件渲染 當(dāng)條件為假時(shí) v-show元素依然會(huì)存在DOM結(jié)構(gòu)中-->
?<!-- ? ?在實(shí)際的條件渲染中,v-if在頻繁切換時(shí)的性能消耗更高 若組件渲染條件頻繁切換建議使用v-show -->
?<div v-show="number>200">
? ?v-show渲染
?</div>
</template>
<script>
export default {
?name: "Conditional-Render",
?data(){
? ?return{
? ? ?number:100,
? ? ?show:true,
? ?}
?}
}
</script>
<style scoped>
@import "@/assets/Conditional-Render.css";
</style>

子組件2
<template id="app">
?<h1>開(kāi)始Vue的旅程</h1>
?<!-- 使用v-bind來(lái)實(shí)現(xiàn)來(lái)動(dòng)態(tài)綁定便簽的樣式表 嘗試修改:-->
?<!-- <h1 v-bind:id="id_1">hello</h1>-->
?<p>模板數(shù)字: {{number}}</p>
?<!-- {{}}在插值時(shí)還可以直接使用js的表達(dá)式 嘗試修改:-->
?<!-- <p>模板數(shù)字: {{number ** 2}}</p>-->
?<p>模板結(jié)果: {{result}}</p>
?<!-- ?如果使用v-once指令那么一旦渲染則不再變化 ?嘗試修改:-->
?<!-- ?<p v-once>模板結(jié)果: {{result}}</p> ?-->
?<!-- ?對(duì)于html代碼的插值則需要使用v-html ?-->
?<p>html插值文字: <span v-html="insert_html_code"></span></p>
?<!-- ?v-if是條件渲染 只有其為布爾值true時(shí)才會(huì)被渲染-->
?<p v-if="true">這是一段會(huì)被渲染的文字</p>
?<p v-if="false">這是一段不會(huì)被渲染的文字</p>
?<!-- ?在參數(shù)后面還可以增加修飾符 修飾符會(huì)為vue增加額外的功能 以下指令修飾符可以去除輸入框首尾的空格-->
?<input v-model.trim="content" placeholder="請(qǐng)輸入備注!">
?<br>
?<button class="btn-1" v-on:click="clickButton">換算</button>
?<p class="text-1">對(duì)于v-bind可以省略 直接使用:來(lái)綁定 對(duì)于v-on可以把v-on:縮寫(xiě)成@</p>
?<p>本節(jié)小結(jié):初步接觸一些模板指令 v-on/v-if/v-html/v-bind/v-once</p>
</template>
<script>
export default {
?name: "modelInsert",
?data(){
? ?return{
? ? ?number:0,
? ? ?result:0,
? ? ?insert_html_code:"<span style=\"font-family: 楷體, sans-serif; color: #a261e8\">理論化學(xué)</span>",
? ? ?id_1:'top_hello'
? ?}
?},
?methods:{
? ?clickButton() {
? ? ?this.number = this.number + 1
? ? ?this.result = this.number ** 2
? ?}
?}
}
</script>
<style scoped>
?@import "@/assets/model-insert.css";
</style>

子組件3
<template>
?<button class="btn" @click="count++">第 {{count}} 次點(diǎn)擊</button>
</template>
<script>
export default {
?name: "start",
?data(){
? ?return{
? ? ?count:0,
? ?}
?}
}
</script>
<!--實(shí)現(xiàn)對(duì)組件css的引用-->
<style scoped>
?@import "@/assets/start.css";
</style>

css1
*{
? ?margin: 0;
}
.top{
? ?margin-top: 20px;
}
p{
? ?color: #41c557;
}

css2
*{
? ?margin: 0;
}
h1{
? ?color: #2a9fde;
? ?font-family: 楷體, sans-serif;
? ?letter-spacing: 2px;
? ?font-size: 20px;
}
p{
? ?height: 20px;
? ?color: #5bc8ea;
? ?font-family: 楷體, sans-serif;
}
.btn-1{
? ?margin-top: 5px;
? ?margin-left: 50px;
? ?background-color: #e2d1f3;
? ?color: #128625;
? ?border: 2px solid #5bc8ea;
}
.text-1{
? ?text-indent: 2em;
? ?margin-top: 10px;
}
input{
? ?margin-top: 10px;
? ?width: 200px;
? ?text-align: center;
}

css3
.btn{? ?font-family: 楷體, sans-serif;
? ?color: #dc1919;
? ?background-color: #e2d1f3;
? ?border: 2px solid #bfcfd9;
}

啟動(dòng)html服務(wù)
