網頁前端開發(基礎進階3--Vue)

Vue3

Vue是一款用于構建用戶界面的漸進式的JavaScript框架。

Vue由2部分組成:Vue核心包,Vue插件包

Vue核心包包含:聲明式渲染,組件系統。

Vue插件包:VueRouter(客戶端路由),Vuex/Pinia(狀態管理),Webpack/Vite(構建工具)

Vue的開發形式分為2種:基于核心包的局部開發,整站開發。

基于核心包的局部開發:只使用Vue核心包的局部開發。

整站開發:使用整個Vue生態進行開發。

框架:一套完整的項目解決方案,用于快速構建項目。

框架的優點:提升前端開發效率。

框架的缺點:需要記憶框架的使用規則。

1.Vue快速入門

(1)準備工作

1.引入Vue模塊

在html文件中

<body>

????????..........

? ? ? ? .........

????????<script type=‘module’>?

? ? ? ? ? ? ? ? import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

????????</script>

</body>

2.創建Vue程序的應用示例,控制視圖的元素

在html文件中

<body>

????????..........

? ? ? ? .........

????????<script type=‘module’>?

? ? ? ? ? ? ? ? import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

????????????????createApp({? });

????????</script>

</body>

3.準備元素(div),被Vue控制。

<body>

????????..........

? ? ? ? .........

????????<script type=‘module’>?

? ? ? ? ? ? ? ? import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

????????????????createApp({? }).mount('#app'); // 只針對與id為app的元素進行掛載

????????</script>

</body>

示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue入門</title>
</head>
<body><div id="app"><h1>{{ message }}</h1><h1>{{ count }}</h1></div><h1>{{ count }}</h1><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({ data() {return {message: 'Hello Vue!',count:100}}}).mount('#app'); // 只針對與id為app的元素進行掛載</script></body>
</html>

運行結果:

2.Vue常用指令

在html標簽上,不同指令實現不同功能。

1.v-for

用于列表渲染,遍歷容器中的元素/對象。

使用方法:

?<tr v-for="(item, index) in itemList"? :key="item.id">{{item}}</tr>

遍歷itemList數組

遍歷出來的元素是item

元素的索引是index

:key為遍歷出來的元素添加唯一標識

[ ]是數組

{ }是對象

示例

<table><!--  表頭  --><thead><!-- 定義一行 --><tr><th>序號</th><th>姓名</th><th>性別</th><th>頭像</th><th>職位</th><th>入職日期</th><th>最后操作時間</th><th>操作</th></tr></thead><tbody><tr v-for="(e, index) in empList" :key="e.id"><!-- index表示索引從0開始 序號表示從1開始 --><td>{{index+1}}</td>  <td>{{e.name}}</td><td>{{e.gender==1?'男':'女'}}</td><!-- 插值表達式,不能出現在標簽內部 --><td><img class='avatar'src="{{e.image}}" :alt='{{e.name}}'></td><td>{{e.position}}</td> //需要條件判斷 <td>{{e.entryDate}}</td><td>{{e.lastOpTime}}</td><td><button type="button">修改</button><button type="button">刪除</button></td></tr></tbody></table><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({ data() {return {searchFrome:{//封裝用戶輸入的查詢條件。name:'',gender:'',position:''},empList: [ //定義數組{"id":1,  //定義一個對象"name":"張三","gender": '1',"avatar": 'img/y2.png',"position": '1',"entryDate": '2020-01-01',"lastOpTime": '2025-01-01'},{"id":2,"name":"李四","gender": '2',"avatar": 'img/y2.png',"position": '2',"entryDate": '2020-01-01',"lastOpTime": '2025-01-01'},{"id":3,"name":"王五","gender": '1',"avatar": 'img/y2.png',"position": '3',"entryDate": '2020-01-01',"lastOpTime": '2025-01-01'}]} },// data后面添加方法methods:{search:function(){// 將搜索條件輸出到控制臺console.log(this.searchFrome);},clear:function(){// 清空搜索條件this.searchFrome={name:'',gender:'',position:''};}}}).mount('#all'); // 只針對與id為all的元素進行掛載</script>

????????頭像一欄顯示不正確。原因:插值表達式,不能出現在標簽內部。需要使用v-bind進行修飾。

? ? ? ? 職位一欄不能正確顯示,性別一欄(只有男或者女)可以使用三元運算符,但是職業有5種,無法使用三元運算符,應使用v-if/v-else-if/v-else或者v-show進行處理。

2.v-bind

? ? ? ? 動態為標簽屬性綁定值(插值表達式,不能在標簽內使用)

使用方法:

v-bind:屬性="變量" :屬性="變量"

<td><img class="avatar" ?v-bind:src="e.image" :alt="e.name"></td>

可保證圖片的正確顯示。

<!-- 表格主體內容 --><tbody><tr v-for="(e, index) in empList" :key="e.id"><td>{{index + 1}}</td><td>{{e.name}}</td><td>{{e.gender == 1?'男' : '女'}}</td><!-- 插值表達式是不能出現在標簽內部 --><td><img class="avatar"  v-bind:src="e.image" :alt="e.name"></td><td>{{e.entrydate}}</td><td>{{e.updatetime}}</td><td class="action-buttons"><button type="button">編輯</button><button type="button">刪除</button></td></tr></tbody></table>

3.v-if/v-else-if/v-else

????????用來控制元素的顯示與隱藏。

? ? ? ? 基于條件判斷,來控制創建或移除元素節點(條件渲染)

? ? ? ? 使用場景:網頁運行時進行處理,要么顯示要么不顯示。

示例:

<body><div id="container"><!-- 表格展示區 --><table><!-- 表頭 --><thead><tr><th>序號</th><th>姓名</th><th>性別</th><th>頭像</th><th>職位</th><th>入職日期</th><th>最后操作時間</th><th>操作</th></tr></thead><!-- 表格主體內容 --><tbody><tr v-for="(e, index) in empList" :key="e.id"><td>{{index + 1}}</td><td>{{e.name}}</td><td>{{e.gender == 1?'男' : '女'}}</td><!-- 插值表達式是不能出現在標簽內部 --><td><img class="avatar"  v-bind:src="e.image" :alt="e.name"></td><!-- v-if: 控制元素的顯示與隱藏 --><td><span v-if="e.job == 1">班主任</span><span v-else-if="e.job == 2">講師</span><span v-else-if="e.job == 3">學工主管</span><span v-else-if="e.job == 4">教研主管</span><span v-else-if="e.job == 5">咨詢師</span><span v-else>其他</span></td><td>{{e.entrydate}}</td><td>{{e.updatetime}}</td><td class="action-buttons"><button type="button">編輯</button><button type="button">刪除</button></td></tr></tbody></table>

v-else-if必須在v-if之后,可有多個v-else-if。

v-else必須在v-if/v-else-if之后。

4.v-show

????????用來控制元素的顯示與隱藏。與v-if/v-else-if/v-else有所區別。

v-if/v-else-if/v-else和v-show的區別:

? ? ? ? v-if網頁運行時處理,不滿足條件,直接不渲染此元素。

????????v-show通過css樣式,渲染v-show的所有元素,滿足條件顯示,不滿足條件隱藏。

? ? ? ? 基于css樣式的display來控制顯示與隱藏。

? ? ? ? 使用場景:頻繁切換顯示與隱藏兩種狀態;如:下拉框。

示例:

<body><div id="container"><!-- 表格展示區 --><table><!-- 表頭 --><thead><tr><th>序號</th><th>姓名</th><th>性別</th><th>頭像</th><th>職位</th><th>入職日期</th><th>最后操作時間</th><th>操作</th></tr></thead><!-- 表格主體內容 --><tbody><tr v-for="(e, index) in empList" :key="e.id"><td>{{index + 1}}</td><td>{{e.name}}</td><td>{{e.gender == 1?'男' : '女'}}</td><!-- 插值表達式是不能出現在標簽內部 --><td><img class="avatar"  v-bind:src="e.image" :alt="e.name"></td><!-- v-show: 控制元素的顯示與隱藏 --><td><span v-show="e.job == 1">班主任</span><span v-show="e.job == 2">講師</span><span v-show="e.job == 3">學工主管</span><span v-show="e.job == 4">教研主管</span><span v-show="e.job == 5">咨詢師</span></td> <td>{{e.entrydate}}</td><td>{{e.updatetime}}</td><td class="action-buttons"><button type="button">編輯</button><button type="button">刪除</button></td></tr></tbody></table></div>
</body>

5.v-model

????????v-model用于獲取表單項數據。

????????v-on用于事件綁定。

? ? ? ? 通常v-model和v-on配合起來使用。?

v-model中綁定的變量必須在data中定義

v-model使用方法:

<body>? ? ?

?<script type="module">

? ? import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';

? ?

? ? createApp({

? ? ? data() {

? ? ? ? return {

? ? ? ? ? searchFrome:{//封裝用戶輸入的查詢條件。

? ? ? ? ? ? name:'',

? ? ? ? ? ? gender:'',

? ? ? ? ? ? position:''

? ? ? ? ? }

? ? ? }

? ? }).mount('#all'); // 只針對與id為all的元素進行掛載

?</script>

</body>

name<-->姓名

gender<-->性別

position<-->職位

具體代碼:

<body>
<div id="all"><!-- 顯示采集到的數據 --><!-- {{searchFrome}} --><form class="search-from" action="/search" method="post"><label for="name">姓名:</label><input type="text" name="name" id="name" v-model="searchFrome.name" placeholder="請輸入姓名"><label for="gender">性別:</label><select name="gender" id="genser" v-model="searchFrome.gender"><option value=""></option><option value="1">男</option><option value="2">女</option></select><label for="position">職位:</label><select name="position" id="position" v-model="searchFrome.position"><option value=""></option><option value="1">班主任</option><option value="2">講師</option><option value="3">學工主管</option><option value="4">教研主管</option><option value="5">咨詢師</option></select><button type="button" v-on:click="search">查詢</button><button type="button" @click="clear">清空</button></form><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({ data() {return {searchFrome:{//封裝用戶輸入的查詢條件。name:'',gender:'',position:''}} }}).mount('#all'); // 只針對與id為all的元素進行掛載</script>
</body>

?在標簽中使用:

<input type="text" name="name" id="name" v-model="searchFrome.name" placeholder="請輸入姓名">

將姓名文本欄中輸入數據導入data中的searchFrome.name

?在標簽中使用:

<select name="gender" id="genser" v-model="searchFrome.gender">

將性別文本欄中輸入數據導入data中的searchFrome.gender

??在標簽中使用:

<select name="position" id="position" v-model="searchFrome.position">

將職業文本欄中輸入數據導入data中的searchFrome.position

效果如下:

6.v-on

使用方法:
v-on:click="函數名"? 或

@click="函數名"

為html標簽綁定事件(添加事件監聽)。

通常與v-model配合使用。

 <button type="button" v-on:click="search">查詢</button><button type="button" @click="clear">清空</button>

將查詢與清空按鈕綁定事件監聽。

整體代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>員工管理</title><style>#all{width: 80%;margin: 0 auto;}.navbar{background-color: rgb(170, 170, 170);display: flex;/*彈性布局*/justify-content: space-between;/*左右對齊*/align-items: center;/*垂直居中*/padding: 5px;}.navbar h1{margin: 0;/*去掉h1標簽的默認間距*/font-weight: bold;/*加粗*/color: white;/*白色文字*/font-family: "楷體";}.navbar a{color: white;font-weight: bold;/*加粗*/text-decoration: none;/*取消下劃線*/align-items: center;/*垂直居中*/}.search-from{display: flex;flex-wrap: nowrap;/*換行*/align-items: center;/*垂直居中*/gap: 10px;/*間距*/margin-top: 10px;margin-bottom: 10px;}.search-from input,select{padding: 5px;width: 220px;}table{width: 100%;border-collapse: collapse;}th,td{border: 1px solid rgb(0, 0, 0);/*邊框*/padding: 5px;text-align: center;}.footer{background-color: #b5b3b3;color: white;text-align: center;padding: 10px 0;margin-top: 30px;}</style>
</head>
<body>
<div id="all"><div class="navbar"><h1>tlias 智能學習輔助系統</h1><a href="">退出登錄</a></div><!-- 顯示采集到的數據 --><!-- {{searchFrome}} --><form class="search-from" action="/search" method="post"><label for="name">姓名:</label><input type="text" name="name" id="name" v-model="searchFrome.name" placeholder="請輸入姓名"><label for="gender">性別:</label><select name="gender" id="genser" v-model="searchFrome.gender"><option value=""></option><option value="1">男</option><option value="2">女</option></select><label for="position">職位:</label><select name="position" id="position" v-model="searchFrome.position"><option value=""></option><option value="1">班主任</option><option value="2">講師</option><option value="3">學工主管</option><option value="4">教研主管</option><option value="5">咨詢師</option></select><button type="button" v-on:click="search">查詢</button><button type="button" @click="clear">清空</button></form><table><!--  表頭  --><thead><!-- 定義一行 --><tr><th>序號</th><th>姓名</th><th>性別</th><th>頭像</th><th>職位</th><th>入職日期</th><th>最后操作時間</th><th>操作</th></tr></thead><tbody><tr v-for="(e, index) in empList" :key="e.id"><!-- index表示索引從0開始 序號表示從1開始 --><td>{{index+1}}</td>  <td>{{e.name}}</td><td>{{e.gender==1?'男':'女'}}</td><!-- 插值表達式,不能出現在標簽內部 --><td><img class='avatar' v-bind:src="e.avatar" :alt='e.name'></td><!-- <td>{{e.position}}</td> //需要條件判斷 --><td><span v-if="e.position==1">班主任</span><span v-else-if="e.position==2">講師</span><span v-else-if="e.position==3">學工主管</span><span v-else-if="e.position==4">教研主管</span><span v-else-if="e.position==5">咨詢師</span><span v-else>其他</span></td><td>{{e.entryDate}}</td><td>{{e.lastOpTime}}</td><td><button type="button">修改</button><button type="button">刪除</button></td></tr></tbody></table><footer class="footer"><p>cyy有限公司</p><p>版權,時間2025.5.9</p></footer>
</div><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({ data() {return {searchFrome:{//封裝用戶輸入的查詢條件。name:'',gender:'',position:''},empList: [ //定義數組{"id":1,  //定義一個對象"name":"張三","gender": '1',"avatar": 'img/y2.png',"position": '1',"entryDate": '2020-01-01',"lastOpTime": '2025-01-01'},{"id":2,"name":"李四","gender": '2',"avatar": 'img/y2.png',"position": '2',"entryDate": '2020-01-01',"lastOpTime": '2025-01-01'},{"id":3,"name":"王五","gender": '1',"avatar": 'img/y2.png',"position": '3',"entryDate": '2020-01-01',"lastOpTime": '2025-01-01'}]} },// data后面添加方法methods:{search:function(){// 將搜索條件輸出到控制臺console.log(this.searchFrome);},clear:function(){// 清空搜索條件this.searchFrome={name:'',gender:'',position:''};}}}).mount('#all'); // 只針對與id為all的元素進行掛載</script></body>
</html>

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

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

相關文章

大模型相關技術綜述

多模態大模型&大模型訓練語料持續迭代 已經開始整理多模態-視覺部分&#xff1a; 主要分為一下幾塊 多模態信息壓縮模型&#xff08;clip、vit、swiT&#xff09; 生成模型&#xff08;vae、gan、flow、ddpm、sde…) 其它多模態大模型&#xff08;語音、視頻、slam、3…

Vue3中Ant-design-vue的使用-附完整代碼

前言 首先介紹一下什么是Ant-design-vue Ant Design Vue 是基于 Vue 3 的企業級 UI 組件庫&#xff08;同時兼容 Vue 2&#xff09;&#xff0c;是螞蟻金服開源項目 Ant Design 的 Vue 實現版本。它遵循 Ant Design 的設計規范&#xff0c;提供豐富的組件和高質量的設計體系&…

建造者模式:優雅構建復雜對象

引言 在軟件開發中&#xff0c;有時我們需要創建一個由多個部分組成的復雜對象&#xff0c;這些部分可能有不同的變體或配置。如果直接在一個構造函數中設置所有參數&#xff0c;代碼會變得難以閱讀和維護。當對象構建過程復雜&#xff0c;且需要多個步驟時&#xff0c;我們可…

如何通過akshare庫,獲取股票數據,并生成TabPFN這個模型 可以識別、處理的格式(并進行了訓練、推理)

計劃讓AI幫助編程使用TabPFN模型進行股價推理 原計劃提問的prompt 如何通過akshare庫&#xff0c;獲取股票數據&#xff0c;并生成TabPFN這個模型 可以識別、處理的格式 本意是想讓AI分步執行&#xff0c;先處理股票數據&#xff0c;然后再進行模型訓練&#xff0c;結果豆包超…

[藍橋杯]最大化股票交易的利潤

最大化股票交易的利潤 題目描述 實現一個算法尋找最大化股票交易利潤的策略。介紹如下&#xff1a; 股票價格每天都在變化&#xff0c;以數組的索引表示交易日&#xff0c;以數組的元素表示每天的股票價格。可以通過買入和賣出獲得利潤。一天只能進行一次買入或賣出操作&…

URL 結構說明+路由(接口)的認識

一、URL 結構說明 以這個為例&#xff1a;http://127.0.0.1:5000/zhouleifeng 1.組成部分: http://&#xff1a;協議 127.0.0.1&#xff1a;主機&#xff08;本地地址&#xff09; :5000&#xff1a;端口號&#xff08;Flask 默認 5000&#xff09; /zhouleifeng&#xff1a…

微服務商城-用戶微服務

數據表 用戶表 CREATE DATABASE user; USE user;CREATE TABLE user (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 用戶ID,username varchar(50) NOT NULL DEFAULT COMMENT 用戶名,password varchar(50) NOT NULL DEFAULT COMMENT 用戶密碼&#xff0c;MD5加密…

Java面試題及答案整理( 2025年最新版,持續更新...)

最近發現網上很多Java面試題都沒有答案&#xff0c;所以花了很長時間搜集整理出來了這套Java面試題大全&#xff0c;希望大家能夠喜歡&#xff01; 注&#xff1a;篇幅有限&#xff0c;資料已整理成文檔&#xff0c;后臺si我666&#xff0c;我一個個發&#xff01; 這套面試文…

[論文閱讀]PPT: Backdoor Attacks on Pre-trained Models via Poisoned Prompt Tuning

PPT: Backdoor Attacks on Pre-trained Models via Poisoned Prompt Tuning PPT: Backdoor Attacks on Pre-trained Models via Poisoned Prompt Tuning | IJCAI IJCAI-22 發表于2022年的論文&#xff0c;當時大家還都在做小模型NLP的相關工作&#xff08;BERT&#xff0c;Ro…

Redis最佳實踐——性能優化技巧之集群與分片

Redis集群與分片在電商應用中的性能優化技巧 一、Redis集群架構模式解析 1. 主流集群方案對比 方案核心原理適用場景電商應用案例主從復制讀寫分離數據冗余中小規模讀多寫少商品詳情緩存Redis Sentinel自動故障轉移監控高可用需求場景訂單狀態緩存Redis Cluster原生分布式分片…

Vue 生命周期全解析:從創建到銷毀的完整旅程

Vue 生命周期是每個 Vue 開發者必須深入理解的核心概念之一。它定義了組件從創建、掛載、更新、銷毀的整個過程&#xff0c;以及在這個過程中各個階段提供的鉤子函數。掌握生命周期不僅能幫助你理解 Vue 的工作原理&#xff0c;還能讓你在合適的時機執行特定的操作&#xff0c;…

【Rust 高級trait】Rust trait的一些高級用法解密

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

聯想電腦護眼衛士與系統顏色配置(X-Rite)沖突 | 顯示設置頻繁變換色階 - 解決方案

聯想電腦護眼衛士與系統顏色配置X-Rite沖突 | 顯示設置頻繁變換色階 - 解決方案 前言方案1&#xff1a;解決聯想護眼衛士方案2&#xff1a;解決系統顏色配置(X-Rite) 前言 自帶X-Rite軟件的聯想電腦&#xff08;以拯救者Y9000P&#xff0c;Win11系統為例&#xff09;&#xff…

MySQL中SELECT查詢的執行順序

MySQL中SELECT查詢的執行順序 在日常的數據庫開發中&#xff0c;我們經常會寫各種復雜的SELECT查詢語句。然而&#xff0c;很多開發者對于MySQL實際執行這些查詢的順序并不完全了解。理解查詢的執行順序不僅有助于編寫更高效的SQL語句&#xff0c;還能幫助我們更好地優化查詢性…

es 的字段類型(text和keyword)

Text 當一個字段是要被全文檢索時&#xff0c;比如 Email 內容、產品描述&#xff0c;這些字段應該使用 text 類型。設置 text 類型以后&#xff0c;字段內容會被分析&#xff0c;在生成倒排索引之前&#xff0c;字符串會被分析器分詞。text類型的字段不用于排序&#xff0c;很…

MySQL安裝及啟用詳細教程(Windows版)

MySQL安裝及啟用詳細教程&#xff08;Windows版&#xff09; &#x1f4cb; 概述 本文檔將詳細介紹MySQL數據庫在Windows系統下的下載、安裝、配置和啟用過程。 &#x1f4e5; MySQL下載 官方下載地址 官方網站: https://dev.mysql.com/downloads/社區版本: https://dev.my…

Linux下使用nmcli連接網絡

Linux下使用nmcli連接網絡 介紹 在使用ubuntu系統的時候&#xff0c;有時候不方便使用桌面&#xff0c;使用ssh遠程連接&#xff0c;可能需要使用nmcli命令來連接網絡。本文將介紹如何使用nmcli命令連接網絡。nmcli 是 NetworkManager 的命令行工具&#xff0c;用于管理網絡連…

Python----循環神經網絡(BiLSTM:雙向長短時記憶網絡)

一、LSTM 與 BiLSTM對比 1.1、LSTM LSTM&#xff08;長短期記憶網絡&#xff09; 是一種改進的循環神經網絡&#xff08;RNN&#xff09;&#xff0c;專門解決傳統RNN難以學習長期依賴的問題。它通過遺忘門、輸入門和輸出門來控制信息的流動&#xff0c;保留重要信息并丟棄無關…

U盤掛載Linux

在 只能使用 Telnet 的情況下&#xff0c;如果希望通過 U盤 傳輸文件到 Linux 系統&#xff0c;可以按照以下步驟操作&#xff1a; &#x1f4cc; 前提條件 U盤已插入 Linux 主機的 USB 接口。Linux 主機支持自動掛載 U盤&#xff08;大多數現代發行版默認支持&#xff09;。T…

QuickBASIC QB64 支持 64 位系統和跨平臺Linux/MAC OS

QuickBASIC 的現代繼任者 QB64 已發展成為一個功能強大的開源項目&#xff0c;支持 64 位系統和跨平臺開發。以下是詳細介紹&#xff1a; 項目首頁 - QB64pe:The QB64 Phoenix Edition Repository - GitCode https://gitcode.com/gh_mirrors/qb/QB64pe 1. QB64 概述 官網&am…