Vue02-黑馬程序員學習筆記

一、今日學習目標

1.指令補充

  1. 指令修飾符
  2. v-bind對樣式增強的操作
  3. v-model應用于其他表單元素

2.computed計算屬性

  1. 基礎語法
  2. 計算屬性vs方法
  3. 計算屬性的完整寫法
  4. 成績案例

3.watch偵聽器

  1. 基礎寫法
  2. 完整寫法

4.綜合案例 (演示)

  1. 渲染 / 刪除 / 修改數量 / 全選 / 反選 / 統計總價 / 持久化

二、指令修飾符

1.什么是指令修飾符?

? 所謂指令修飾符就是通過“.”指明一些指令后綴 不同的后綴封裝了不同的處理操作 —> 簡化代碼

2.按鍵修飾符

  • @keyup.enter —>當點擊enter鍵的時候才觸發

代碼演示:

  <div id="app"><h3>@keyup.enter  →  監聽鍵盤回車事件</h3><input v-model="username" type="text"></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {username: ''},methods: {}})</script>

3.v-model修飾符

  • v-model.trim —>去除首位空格
  • v-model.number —>轉數字

4.事件修飾符

  • @事件名.stop —> 阻止冒泡
  • @事件名.prevent —>阻止默認行為
  • @事件名.stop.prevent —>可以連用 即阻止事件冒泡也阻止默認行為
 <style>.father {width: 200px;height: 200px;background-color: pink;margin-top: 20px;}.son {width: 100px;height: 100px;background-color: skyblue;}</style><div id="app"><h3>v-model修飾符 .trim .number</h3>姓名:<input v-model="username" type="text"><br>年紀:<input v-model="age" type="text"><br><h3>@事件名.stop     →  阻止冒泡</h3><div @click="fatherFn" class="father"><div @click="sonFn" class="son">兒子</div></div><h3>@事件名.prevent  →  阻止默認行為</h3><a @click href="http://www.baidu.com">阻止默認行為</a></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {username: '',age: '',},methods: {fatherFn () {alert('老父親被點擊了')},sonFn (e) {// e.stopPropagation()alert('兒子被點擊了')}}})</script>

三、v-bind對樣式控制的增強-操作class

為了方便開發者進行樣式控制, Vue 擴展了 v-bind 的語法,可以針對 class 類名style 行內樣式 進行控制 。

1.語法:

<div> :class = "對象/數組">這是一個div</div>

2.對象語法

當class動態綁定的是對象時,鍵就是類名,值就是布爾值,如果值是true,就有這個類,否則沒有這個類

<div class="box" :class="{ 類名1: 布爾值, 類名2: 布爾值 }"></div>

? 適用場景:一個類名,來回切換

3.數組語法

當class動態綁定的是數組時 → 數組中所有的類,都會添加到盒子上,本質就是一個 class 列表

<div class="box" :class="[ 類名1, 類名2, 類名3 ]"></div>

使用場景:批量添加或刪除類

4.代碼練習

 <style>.box {width: 200px;height: 200px;border: 3px solid #000;font-size: 30px;margin-top: 10px;}.pink {background-color: pink;}.big {width: 300px;height: 300px;}</style><div id="app"><!--綁定對象--><div class="box">黑馬程序員</div><!--綁定數組--><div class="box">黑馬程序員</div></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {}})</script>

四、京東秒殺-tab欄切換導航高亮

1.需求:

? 當我們點擊哪個tab頁簽時,哪個tab頁簽就高亮

2.準備代碼:

 <style>* {margin: 0;padding: 0;}ul {display: flex;border-bottom: 2px solid #e01222;padding: 0 10px;}li {width: 100px;height: 50px;line-height: 50px;list-style: none;text-align: center;}li a {display: block;text-decoration: none;font-weight: bold;color: #333333;}li a.active {background-color: #e01222;color: #fff;}</style><div id="app"><ul><li><a class="active" href="#">京東秒殺</a></li><li><a href="#">每日特價</a></li><li><a href="#">品類秒殺</a></li></ul></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {list: [{ id: 1, name: '京東秒殺' },{ id: 2, name: '每日特價' },{ id: 3, name: '品類秒殺' }]}})</script>

3.思路:

1.基于數據,動態渲染tab(v-for)

2.準備一個下標 記錄高亮的是哪一個 tab

3.基于下標動態切換class的類名

五、v-bind對有樣式控制的增強-操作style

1.語法

<div class="box" :style="{ CSS屬性名1: CSS屬性值, CSS屬性名2: CSS屬性值 }"></div>

2.代碼練習

<style>.box {width: 200px;height: 200px;background-color: rgb(187, 150, 156);}</style><div id="app"><div class="box"></div></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {}})</script>

3.進度條案例

 <style>.progress {height: 25px;width: 400px;border-radius: 15px;background-color: #272425;border: 3px solid #272425;box-sizing: border-box;margin-bottom: 30px;}.inner {width: 50%;height: 20px;border-radius: 10px;text-align: right;position: relative;background-color: #409eff;background-size: 20px 20px;box-sizing: border-box;transition: all 1s;}.inner span {position: absolute;right: -20px;bottom: -25px;}</style><div id="app"><div class="progress"><div class="inner"><span>50%</span></div></div><button>設置25%</button><button>設置50%</button><button>設置75%</button><button>設置100%</button></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {}})</script>

六、v-model在其他表單元素的使用

1.講解內容:

常見的表單元素都可以用 v-model 綁定關聯 → 快速 獲取設置 表單元素的值

它會根據 控件類型 自動選取 正確的方法 來更新元素

輸入框  input:text   ——> value
文本域  textarea	 ——> value
復選框  input:checkbox  ——> checked
單選框  input:radio   ——> checked
下拉菜單 select    ——> value
...

2.代碼準備

 <style>textarea {display: block;width: 240px;height: 100px;margin: 10px 0;}</style><div id="app"><h3>小黑學習網</h3>姓名:<input type="text"> <br><br>是否單身:<input type="checkbox"> <br><br><!-- 前置理解:1. name:  給單選框加上 name 屬性 可以分組 → 同一組互相會互斥2. value: 給單選框加上 value 屬性,用于提交給后臺的數據結合 Vue 使用 → v-model-->性別: <input type="radio"><input type="radio"><br><br><!-- 前置理解:1. option 需要設置 value 值,提交給后臺2. select 的 value 值,關聯了選中的 option 的 value 值結合 Vue 使用 → v-model-->所在城市:<select><option>北京</option><option>上海</option><option>成都</option><option>南京</option></select><br><br>自我描述:<textarea></textarea> <button>立即注冊</button></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {}})</script>

七、computed計算屬性

1.概念

基于現有的數據,計算出來的新屬性依賴的數據變化,自動重新計算。

2.語法

  1. 聲明在 computed 配置項中,一個計算屬性對應一個函數
  2. 使用起來和普通屬性一樣使用 {{ 計算屬性名}}

3.注意

  1. computed配置項和data配置項是同級
  2. computed中的計算屬性雖然是函數的寫法,但他依然是個屬性
  3. computed中的計算屬性不能和data中的屬性同名
  4. 使用computed中的計算屬性和使用data中的屬性是一樣的用法
  5. computed中計算屬性內部的this依然指向的是Vue實例

4.案例

比如我們可以使用計算屬性實現下面這個業務場景

請添加圖片描述

5.代碼準備

<style>table {border: 1px solid #000;text-align: center;width: 240px;}th,td {border: 1px solid #000;}h3 {position: relative;}</style><div id="app"><h3>小黑的禮物清單</h3><table><tr><th>名字</th><th>數量</th></tr><tr v-for="(item, index) in list" :key="item.id"><td>{{ item.name }}</td><td>{{ item.num }}個</td></tr></table><!-- 目標:統計求和,求得禮物總數 --><p>禮物總數:? 個</p></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {// 現有的數據list: [{ id: 1, name: '籃球', num: 1 },{ id: 2, name: '玩具', num: 2 },{ id: 3, name: '鉛筆', num: 5 },]}})</script>

八、computed計算屬性 VS methods方法

1.computed計算屬性

作用:封裝了一段對于數據的處理,求得一個結果

語法:

  1. 寫在computed配置項中
  2. 作為屬性,直接使用
    • js中使用計算屬性: this.計算屬性
    • 模板中使用計算屬性:{{計算屬性}}

2.methods計算屬性

作用:給Vue實例提供一個方法,調用以處理業務邏輯

語法:

  1. 寫在methods配置項中
  2. 作為方法調用
    • js中調用:this.方法名()
    • 模板中調用 {{方法名()}} 或者 @事件名=“方法名”

3.計算屬性的優勢

  1. 緩存特性(提升性能)

    計算屬性會對計算出來的結果緩存,再次使用直接讀取緩存,

    依賴項變化了,會自動重新計算 → 并再次緩存

  2. methods沒有緩存特性

  3. 通過代碼比較

<style>table {border: 1px solid #000;text-align: center;width: 300px;}th,td {border: 1px solid #000;}h3 {position: relative;}span {position: absolute;left: 145px;top: -4px;width: 16px;height: 16px;color: white;font-size: 12px;text-align: center;border-radius: 50%;background-color: #e63f32;}</style><div id="app"><h3>小黑的禮物清單🛒<span>?</span></h3><table><tr><th>名字</th><th>數量</th></tr><tr v-for="(item, index) in list" :key="item.id"><td>{{ item.name }}</td><td>{{ item.num }}個</td></tr></table><p>禮物總數:{{ totalCount }} 個</p></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {// 現有的數據list: [{ id: 1, name: '籃球', num: 3 },{ id: 2, name: '玩具', num: 2 },{ id: 3, name: '鉛筆', num: 5 },]},computed: {totalCount () {let total = this.list.reduce((sum, item) => sum + item.num, 0)return total}}})</script>

4.總結

1.computed有緩存特性,methods沒有緩存

2.當一個結果依賴其他多個值時,推薦使用計算屬性

3.當處理業務邏輯時,推薦使用methods方法,比如事件的處理函數

九、計算屬性的完整寫法

既然計算屬性也是屬性,能訪問,應該也能修改了?

  1. 計算屬性默認的簡寫,只能讀取訪問,不能 “修改”
  2. 如果要 “修改” → 需要寫計算屬性的完整寫法

請添加圖片描述

完整寫法代碼演示

 <div id="app">姓:<input type="text" v-model="firstName"> +名:<input type="text" v-model="lastName"> =<span></span><br><br> <button>改名卡</button></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {firstName: '劉',lastName: '備'},computed: {},methods: {}})</script>

十、綜合案例-成績案例

請添加圖片描述

功能描述:

1.渲染功能

2.刪除功能

3.添加功能

4.統計總分,求平均分

思路分析:

1.渲染功能 v-for :key v-bind:動態綁定class的樣式

2.刪除功能 v-on綁定事件, 阻止a標簽的默認行為

3.v-model的修飾符 .trim、 .number、 判斷數據是否為空后 再添加、添加后清空文本框的數據

4.使用計算屬性computed 計算總分和平均分的值

十一、watch偵聽器(監視器)

1.作用:

? 監視數據變化,執行一些業務邏輯或異步操作

2.語法:

  1. watch同樣聲明在跟data同級的配置項中

  2. 簡單寫法: 簡單類型數據直接監視

  3. 完整寫法:添加額外配置項

    data: { words: '蘋果',obj: {words: '蘋果'}
    },watch: {// 該方法會在數據變化時,觸發執行數據屬性名 (newValue, oldValue) {一些業務邏輯 或 異步操作。 },'對象.屬性名' (newValue, oldValue) {一些業務邏輯 或 異步操作。 }
    }
    

3.偵聽器代碼準備

 <style>* {margin: 0;padding: 0;box-sizing: border-box;font-size: 18px;}#app {padding: 10px 20px;}.query {margin: 10px 0;}.box {display: flex;}textarea {width: 300px;height: 160px;font-size: 18px;border: 1px solid #dedede;outline: none;resize: none;padding: 10px;}textarea:hover {border: 1px solid #1589f5;}.transbox {width: 300px;height: 160px;background-color: #f0f0f0;padding: 10px;border: none;}.tip-box {width: 300px;height: 25px;line-height: 25px;display: flex;}.tip-box span {flex: 1;text-align: center;}.query span {font-size: 18px;}.input-wrap {position: relative;}.input-wrap span {position: absolute;right: 15px;bottom: 15px;font-size: 12px;}.input-wrap i {font-size: 20px;font-style: normal;}</style><div id="app"><!-- 條件選擇框 --><div class="query"><span>翻譯成的語言:</span><select><option value="italy">意大利</option><option value="english">英語</option><option value="german">德語</option></select></div><!-- 翻譯框 --><div class="box"><div class="input-wrap"><textarea v-model="words"></textarea><span><i>??</i>文檔翻譯</span></div><div class="output-wrap"><div class="transbox">mela</div></div></div></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>// 接口地址:https://applet-base-api-t.itheima.net/api/translate// 請求方式:get// 請求參數:// (1)words:需要被翻譯的文本(必傳)// (2)lang: 需要被翻譯成的語言(可選)默認值-意大利// -----------------------------------------------const app = new Vue({el: '#app',data: {words: ''},// 具體講解:(1) watch語法 (2) 具體業務實現})</script>

十二、翻譯案例-代碼實現

  <script>// 接口地址:https://applet-base-api-t.itheima.net/api/translate// 請求方式:get// 請求參數:// (1)words:需要被翻譯的文本(必傳)// (2)lang: 需要被翻譯成的語言(可選)默認值-意大利// -----------------------------------------------const app = new Vue({el: '#app',data: {//words: ''obj: {words: ''},result: '', // 翻譯結果// timer: null // 延時器id},// 具體講解:(1) watch語法 (2) 具體業務實現watch: {// 該方法會在數據變化時調用執行// newValue新值, oldValue老值(一般不用)// words (newValue) {//   console.log('變化了', newValue)// }'obj.words' (newValue) {// console.log('變化了', newValue)// 防抖: 延遲執行 → 干啥事先等一等,延遲一會,一段時間內沒有再次觸發,才執行clearTimeout(this.timer)this.timer = setTimeout(async () => {const res = await axios({url: 'https://applet-base-api-t.itheima.net/api/translate',params: {words: newValue}})this.result = res.data.dataconsole.log(res.data.data)}, 300)}}})</script>

十三、watch偵聽器

1.語法

完整寫法 —>添加額外的配置項

  1. deep:true 對復雜類型進行深度監聽
  2. immdiate:true 初始化 立刻執行一次
data: {obj: {words: '蘋果',lang: 'italy'},
},watch: {// watch 完整寫法對象: {deep: true, // 深度監視immdiate:true,//立即執行handler函數handler (newValue) {console.log(newValue)}}
}

2.需求

請添加圖片描述

  • 當文本框輸入的時候 右側翻譯內容要時時變化
  • 當下拉框中的語言發生變化的時候 右側翻譯的內容依然要時時變化
  • 如果文本框中有默認值的話要立即翻譯

3.代碼實現

 <script> const app = new Vue({el: '#app',data: {obj: {words: '小黑',lang: 'italy'},result: '', // 翻譯結果},watch: {obj: {deep: true, // 深度監視immediate: true, // 立刻執行,一進入頁面handler就立刻執行一次handler (newValue) {clearTimeout(this.timer)this.timer = setTimeout(async () => {const res = await axios({url: 'https://applet-base-api-t.itheima.net/api/translate',params: newValue})this.result = res.data.dataconsole.log(res.data.data)}, 300)}} }})</script>

4.總結

watch偵聽器的寫法有幾種?

1.簡單寫法

watch: {數據屬性名 (newValue, oldValue) {一些業務邏輯 或 異步操作。 },'對象.屬性名' (newValue, oldValue) {一些業務邏輯 或 異步操作。 }
}

2.完整寫法

watch: {// watch 完整寫法數據屬性名: {deep: true, // 深度監視(針對復雜類型)immediate: true, // 是否立刻執行一次handlerhandler (newValue) {console.log(newValue)}}
}

十四、綜合案例

購物車案例

請添加圖片描述

需求說明:

  1. 渲染功能
  2. 刪除功能
  3. 修改個數
  4. 全選反選
  5. 統計 選中的 總價 和 總數量
  6. 持久化到本地

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13948.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13948.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一個簡約高級視差效果PR動態圖文開場視頻模板

這是一個高質量且易于定制的pr模板。具有模塊化結構&#xff0c;可以輕松更改內容。包括視頻教程&#xff0c;即使是新手小白也可以輕松套用模板制作視頻。 主要特點&#xff1a; 水平&#xff08;19201080&#xff09;和垂直&#xff08;10801920&#xff09;分辨率&#xff…

c語言:利用隨機函數產生20個[120, 834] 之間互不相等的隨機數, 并利用選擇排序法將其從小到大排序后輸出(每行輸出5個)

利用隨機函數產生20個[120, 834] 之間互不相等的隨機數&#xff0c; 并利用選擇排序法將其從小到大排序后輸出&#xff08;每行輸出5個&#xff09; 代碼如下&#xff1a; #include <stdio.h> #include <time.h> #include <stdlib.h> int shenchen(int a[…

三維模型相互轉換(obj文件轉inp文件)

三維模型文件根據其含義都是可以進行相互轉換的&#xff0c;這里主要介紹obj文件轉化為inp文件。 什么是inp文件&#xff1f; inp文件是以.inp為后綴的文本文件&#xff0c;它包括了模型的全部數據信息&#xff0c;ABAQUS求解器分析的對象是inp文件&#xff0c;軟件生成的.ca…

PHP身份證真偽驗證、身份證二、三要素核驗、身份證ocr接口

實名認證有利于網絡綠化&#xff0c;所以在互聯網發展迅速的今天&#xff0c;實名認證成了“剛需”。而OCR與實名認證兩種產品的結和更是擦出了美麗的火花。翔云人工智能開放平臺提供的實名認證OCR接口良好的展現出兩種功能結合的效果。以身份實名認證產品舉例來說&#xff0c;…

AI智能體|扣子Coze“圖像流”功能速覽

大家好&#xff0c;我是無界生長。 AI智能體&#xff5c;扣子Coze“圖像流”功能速覽Coze提供易上手的圖像處理工作流&#xff0c;包含智能生成、智能編輯和基礎編輯三類節點&#xff0c;旨在通過AI技術簡化圖像處理過程。本文對扣子Coze“圖像流”功能做了簡單介紹&#xff0…

【qt】初識模型和視圖

模型和視圖 一.模型和視圖的概念1.關系2.模型3.數據4.視圖5.特點 二.文件系統模型1.那種數據&#xff1f;2.界面拖放3.創建模型4.模型設置數據5.視圖設置模型6.模型索引7.模型操作數據①文件名②文件大小③文件類型④是否是目錄⑤文件路徑 三.字符串鏈表模型1.那種數據&#xf…

論Promise在前端江湖的地位及作用

系列文章&#xff1a; 先擼清楚&#xff1a;并發/并行、單線程/多線程、同步/異步 論Promise在前端江湖的地位及作用 前言 上篇文章闡述了并發/并行、單線程/多線程、同步/異步等概念&#xff0c;這篇將會分析Promise的江湖地位。 通過本篇文章&#xff0c;你將了解到&#x…

100base-tx、100base-fx的區別

100表示網線設計的頻率&#xff0c;單位MHz。值越大&#xff0c;網線的速度越快。baseBASEband的縮寫&#xff0c;基帶t物理介質是雙絞線纜f物理介質是光纖x同一個傳輸效率下的多種不同的標準 T表示雙絞線&#xff0c;base-tx是運行超五類雙絞線的快速以太網端口&#xff0c;全…

AI崛起,掌握它,開啟智能新生活!

AI崛起&#xff0c;掌握它&#xff0c;開啟智能新生活&#xff01; &#x1f604;生命不息&#xff0c;寫作不止 &#x1f525; 繼續踏上學習之路&#xff0c;學之分享筆記 &#x1f44a; 總有一天我也能像各位大佬一樣 &#x1f3c6; 博客首頁 怒放吧德德 To記錄領地 &…

Linux中vim的基本使用

目錄 vim中的三種模式以及基本操作命令模式(默認模式)插入模式底行模式 命令模式下的命令底行模式下的命令 vim是Linux和Unix環境下最基本的文本編輯器&#xff0c;類似于windows上的記事本 vim和Visual studio相比&#xff0c;vim并不集成&#xff0c;vim只能用來寫代碼 VS把寫…

Nginx限制IP訪問詳解

在Web服務器管理中&#xff0c;限制某些IP地址訪問網站是一個常見的需求。Nginx作為一款高性能的HTTP服務器和反向代理服務器&#xff0c;提供了靈活強大的配置選項來實現這一功能。本文將詳細講解如何在Nginx中限制IP訪問&#xff0c;并通過示例代碼展示具體操作。 一、Nginx…

使用 Python 簡單幾步去除 PDF 水印

推薦一個AI網站&#xff0c;免費使用豆包AI模型&#xff0c;快去白嫖&#x1f449;海鯨AI 在處理 PDF 文件時&#xff0c;水印有時會影響文件的可讀性或美觀性。幸運的是&#xff0c;Python 提供了多種庫來操作 PDF 文件&#xff0c;其中 PyMuPDF&#xff08;又名 fitz&#xf…

2024年5月24日 十二生肖 今日運勢

小運播報&#xff1a;2024年5月24日&#xff0c;星期五&#xff0c;農歷四月十七 &#xff08;甲辰年己巳月戊子日&#xff09;&#xff0c;法定工作日。 紅榜生肖&#xff1a;龍、牛、猴 需要注意&#xff1a;兔、羊、馬 喜神方位&#xff1a;東南方 財神方位&#xff1a;…

深度學習之基于Matlab的BP神經網絡交通標志識別

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與意義 隨著智能交通系統&#xff08;ITS&#xff09;的快速發展&#xff0c;交通標志識別&#xff0…

BUUCTF---misc---[MRCTF2020]ezmisc

1、附件下載后是一張圖片 2、查看屬性&#xff0c;winhex分析&#xff0c;沒發現什么 3、在kali中binwalk和foremost也沒找到什么信息 4、用stegsolve分析也沒發現什么 5、這里幾乎常見的misc方法都試過了&#xff0c;還是沒有發現什么 6、回歸到圖片本身&#xff0c;想到的…

Nginx性能調優:深入剖析配置與調優技巧

一、引言 Nginx作為一款高性能的HTTP和反向代理服務器&#xff0c;已經被廣泛應用于各種Web服務中。然而&#xff0c;要想充分發揮Nginx的性能優勢&#xff0c;僅僅安裝和配置默認設置是遠遠不夠的。本文將深入剖析Nginx的配置與調優技巧&#xff0c;幫助讀者打造更加高效、穩…

基于51單片機智能大棚澆花花盆澆水灌溉補光散熱設計

一.硬件方案 本設計通過光敏電阻檢測光照強度&#xff0c;然后A/D模塊PCF8591處理后&#xff0c;將光照強度值實時顯示在液晶上&#xff0c;并且可以按鍵控制光照的強度值&#xff0c;當光照低于設定的閾值&#xff0c;1顆白色高亮LED燈亮進行補光&#xff0c;光照高于設定的閾…

第六節 自動裝配源碼理解

tips&#xff1a;不同版本代碼實現有差異。 前面兩章了解的流程&#xff0c;就是 SpringBoot 自動轉配的核心。 一、自動裝配 1.1 什么是 SpringBoot 自動裝配? 自動裝配是 Spring 框架用來減少配置的顯式需求而引入的一個特性&#xff0c;該特性通過 Autowired或者Resource…

Redis數據庫知識點

Redis set get del keys redis中有哪些數據類型 string 最大512m key層級 redis的key允許有多個單詞形成層級結構&#xff0c;多個單詞之間用‘:’隔開 set get del keys hash 本身在redis中存儲方式就為key-value, 而hash數據結構中value又是一對key-value hset key …

【easyx】快速入門——彈球小游戲(第一代)

目錄 1.需求 2.運動的小球 3.碰到邊緣反彈 4.圓周撞擊或越過邊界反彈 5.繪制和移動擋板 6.小球碰到擋板反彈 7.游戲失敗時該如何處理 8.隨機初始條件 9.完整代碼 我們這一節將結合動畫和鍵盤交互的知識來做一個小游戲 1.需求 我們先看需求:小球在窗體內運動,撞到除…