【b站計算機拓荒者】【2025】微信小程序開發教程 - chapter2 小程序核心

1 尺寸單位和樣式

1.1 創建小程序項目-純凈環境

// 該刪的刪掉。

1.2 尺寸單位

# 小程序內 手機屏幕大小可能不一樣,使用px像素就會出現樣式問題 --> 小程序統一了整個寬度,即750rpx,屏幕一半則是375rpx -->因此不管什么手機都可以等比例縮放# 寬高尺寸都用rpx代替# 高度沒有固定值,因為屏幕可以下滑# 注意 不推薦樣式寫在標簽里,推薦寫在.wxss文件中

在這里插入圖片描述

1.3 樣式

1.3.1 全局樣式 app.wxss

# 1 在app.wxss里寫css樣式# 2 整個小程序都生效

示例,my-view會全局生效,在index和my使用都會生效。

.my-view {width: 100rpx;height: 300rpx;background-color: #9312e2;
}

index頁
在這里插入圖片描述
my頁
在這里插入圖片描述

1.3.2 局部樣式 頁面.wxss

# 1 在此處寫css樣式,只在當前頁面生效

可以自行嘗試。

2 首頁案例

# text span
# image img
# view div
# button
# swiper

2.1 button

https://developers.weixin.qq.com/miniprogram/dev/component/button.html
在這里插入圖片描述
注意:一個boolean類型的屬性,只要出現就是true。
在這里插入圖片描述

2.2 swiper&swiper-item

輪播圖,參考官方文檔實現。

2.3 首頁提示板塊

輪播圖部分+歡迎語+圖標tips,簡單頁面實現,跳過。

2.4 flex布局

跳過。

2.5 通知布局

簡單頁面實現,跳過。

2.6 底部布局

簡單頁面實現,跳過。

3 小程序引入矢量圖

# 使用 阿里 矢量庫圖標
# 1 打開https://www.iconfont.cn/-注冊# 2 搜索想要的圖標-加入購物車-在購物車中添加至項目# 3 我的項目-項目設置-打開base64# 4 選擇font class - 生成代碼 - 點擊鏈接地址打開# 5 鏈接打開的內容復制到項目中-static\css\font.wxss# 6 在app.wxss引入
@import "/static/css/font.css"# 7 在要用圖標的位置,使用text組件
<text class="iconfont icon-tips"></text>

3.1 阿里矢量圖庫

https://www.iconfont.cn/
1 找到合適的圖標,添加購物車
在這里插入圖片描述

2 打開購物車,添加至項目
在這里插入圖片描述
3 項目設置,選擇base64,保存
如果不選擇base64,則步驟4生成的代碼里的src是遠端地址。

4 生成代碼
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

打開鏈接
在這里插入圖片描述
如果項目設置未勾選base64,則生成的鏈接如下。
在這里插入圖片描述

3.2 使用圖標

補充-引入css文件

1 步驟1 新建文件 static-css-font.wxss
注意:微信小程序不識別css文件。
static\css\font.wxss

@font-face {font-family: "iconfont"; /* Project id 4930561 */src: url('//at.alicdn.com/t/c/font_4930561_6h4rwrdvx8h.woff2?t=1748010365635') format('woff2'),url('//at.alicdn.com/t/c/font_4930561_6h4rwrdvx8h.woff?t=1748010365635') format('woff'),url('//at.alicdn.com/t/c/font_4930561_6h4rwrdvx8h.ttf?t=1748010365635') format('truetype');}.iconfont {font-family: "iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}.icon-tips:before {content: "\e600";}.icon-icon_tips_alarm:before {content: "\e65d";}

base64

@font-face {font-family: "iconfont"; /* Project id 4930561 */src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAANoAAsAAAAAB1wAAAMZAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACDBgqCLII5ATYCJAMMCwgABCAFhGcHQBufBhHVmyPIvsBxnrQs3bORbaUkMDEaFWghGL+CtWACEgAAAAAggufXaPP+yplJFo13QBKVRiKSxEohJBKpEMUyef///dz9U43ioYpId2urYkDaew0NRazuN9TipFGJXjnwfLKxd/wLABvrtELHqrNaukWr1mIJOgNgaU3PFki4FPSTLPDGCkg9Jg+cy8hVSLO/P5WTTvwiz0p1WjbHxA8WLxUD2jE2lbBXD5BXQXYRf/SiXhGot8qJchB8fFHr/ZJUakNDqEFaGvdbsa9G2S+Xs6laoURX5uKNgvQqveJ1+P34Z71YJEWG7HOifhWpz08/L1Av1YXsG58isKMTCmRY3JgxLrbbT0Pi+CKq+jp5c7mlXEiThv6rUGoqyy3/8RJRIsWNYJZNJH5yBQQ/L7whgQyUqMFF4BPL6czMZe1dHZ5jod0XhP/68h8//vufUS9vo/iCopXrEuHLHI3PM4by4yN8snKMDlPjQ3RMEM/P+AhetHXgN+bQ6fgMX6ycZzif3PVT3yIxmZCxu+kJoyh564iCrGn0jjxQ7tBy7V/xW19VrJbQXvu0k6VcWdZtHyVha2Crf9rQWonvPpceT9G6wx2+uH8y+PFnwGjc3Xhdtdkie+PXEQWDq6uG/bcU77hkZyN9Rz8aq/Y93ACq9/nIE1B9zVV2fw0zrnV794XR+n/t0uD7ScN66KveN+BGtedsD36E4jyIzc0AWV4ndRsEMhuZLAn1NESFuNu9DVd2wMWEWh0pJDUGIFNrnMg581BosA6lWptQb0FgfYMObYjIJ0xbYyC0OoKk2RfItHogcs4SCt3eodTqD+qdJAa7NZguJTwx+oIRBH+QhnVFjkpCuk8YfxU+V0XekHXKhsA2rGLqBivkMebo79gRISCuS7gWz8OiqKHhOsNQjESkWZom1X3ECOtSnRh9wQiCP0jDuiIfL/nfe8L4q/AZJN7irFOWPtiGBRA38grquZF99HfsiBAQM8kSrmUrFka8hqZ+WIahGMmAaLM0KY5QubG8sny5fTAjCxJDpVo/Txs9OneZG2td/3lspVIAAAA=') format('woff2'),url('//at.alicdn.com/t/c/font_4930561_o6yk2374pk.woff?t=1748010258077') format('woff'),url('//at.alicdn.com/t/c/font_4930561_o6yk2374pk.ttf?t=1748010258077') format('truetype');}.iconfont {font-family: "iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}.icon-tips:before {content: "\e600";}.icon-icon_tips_alarm:before {content: "\e65d";}

2 在app.wxss里引入
app.wxss

@import "/static/css/font.css"

使用圖標

class1
在這里插入圖片描述
class2
在這里插入圖片描述
pages\index\index.wxml

<text class="iconfont icon-tips"></text>

tips

注意,以下寫法圖標需去遠端下載,
在這里插入圖片描述
控制臺會報錯(錯誤2)
在這里插入圖片描述

因此轉用base64方式,見3.1
如此控制臺不再報錯,下圖。
在這里插入圖片描述

4 事件

4.1 綁定

# 1 按鈕或某些組件,點擊-觸發事件執行-打印xx-請求接口...# 2 綁定事件## 1 pages\my\my.wxml-<button bind:tap="handleConsole"></button>## 綁定tap點擊事件## handleConsole在.js文件實現## 2 pages\my\my.js// pages/my/my.jsPage({handleConsole() {console.log('打印xx')},})
# 3 bind:tap="handleConsole" 簡寫→ bindtap="handleConsole-省略了冒號

實現
在這里插入圖片描述
解釋

// pages/my/my.jsPage({handleConsole() {console.log('打印xx')},})

由于es6的語法,

var name='tutu';
var obj={name
}

因此函數寫法如下

var name='tutu';
var obj={name,handleConsole:function() {}
}
// 簡寫為
var obj={name,handleConsole() {},
}
// 此時key值是handleConsole,value值是handleConsole()
// 對象里是這樣的寫法,因此函數末尾分隔使用逗號,

4.2 事件冒泡

# 1 父組件引用子組件-子組件綁定事件-父組件綁定事件-點擊子組件 --> 子組件事件觸發 -->父組件事件也會觸發-例子:div里有個button,各綁定一個事件,點擊div(非button區域)不會觸發button事件,而點擊button事件會觸發div事件和button事件-問題:點擊button不希望觸發div事件-解決思路:阻止事件冒泡# 2 阻止事件冒泡# 使用catch阻止事件冒泡## wxml-<button catch:tap="handleConsole"></button>

4.3 事件對象&傳參

# 1 綁定事件后,函數都可以接受一個事件對象的參數,通常命名為event-有很多信息
# 2 傳參-跳過

vue綁定事件傳參可通過@click="demo($event)"實現。微信小程序的實現跳過。

5 頁面跳轉

5.1 組件跳轉(聲明式導航)

# 1 naviagtor組件實現跳轉-將要跳轉的入口用navigator組件包起來# 2 基本跳轉
<navigator url="/pages/login/login"><button type="primary" plain>去登錄</button>
</navigator># 3 更多跳轉方式-open-type:跳轉方式-navigate(default):保留當前頁面(跳轉后頁面左上角有返回按鈕),跳轉到應用內某個頁面,但不能跳轉tabbar頁面-redirect:關閉當前頁面,跳轉到應用內某個頁面,不保留當前頁面,但不能跳轉tabbar頁面-switchTab:,跳轉tabbar頁面,并關閉其他所有非tabbar頁面-reLaunch:關閉所有頁面,打開應用內某個頁面-navigateBack:關閉當前頁面,返回上一頁面或多級頁面,結合屬性delta使用,delta是要跳轉x級頁面# 4 跳轉攜帶參數-在url后加參數,格式:<navigator url="/pages/login/login?name=tutu&age=1"><button type="primary" plain>去登錄</button></navigator>-目標頁面獲取## pages\login\login.jsonLoad(options) {console.log(options);},

1 新建一個登錄頁面

// app.json
{"pages": ["pages/index/index","pages/my/my","pages/login/login"],
}

2 我的頁面增加navigator組件
注意navigator的url是要跳轉的頁面地址,/開頭

<!-- pages\my\my.wxml -->
<navigator url="/pages/login/login"><button type="primary" plain>去登錄</button>
</navigator>

open-type方式比較

相同點不同點
navigate1 跳轉到應用內某個頁面 2 不能跳轉tabbar頁面保留當前頁面
redirect同navigate關閉當前頁面
switchTab關閉其他所有 {xx} 頁面,打開 {yyy} 頁面xx: 非tabbar,yy: !xx,即只能打開tabbar頁面
reLaunch關閉其他所有 {zz} 頁面,打開 {zz} 頁面zz: 任意

跳轉攜帶參數

<navigator url="/pages/login/login?name=tutu&age=1"><button type="primary" plain>去登錄</button>
</navigator>

查看參數
在這里插入圖片描述
js打印
在這里插入圖片描述

5.2 js跳轉(編程式導航)

# 1 使用js控制跳轉# 2 5個方法,與navigate組件的open-type是對應的-wx.navigateTo({url})-wx.refdirectTo({url})-wx.switchTab({url})-wx.reLaunch({url})-wx.navigateTo()# 3 跳轉攜帶參數-在方法的url參數里加入要攜帶的參數# 4 回退-wx.navigateBack()  # 回退上一頁-wx.navigateBack({delta: 2})  # 回退上n頁

6 wxml語法

6.1 模板語法

# {{  }} 不能寫js語句或js方法

6.2 列表渲染

跳過。

6.3 條件渲染

跳過。

7 發送網絡請求

# 在微信小程序端發送網絡請求獲取數據,顯示在小程序中

7.1 微信發送網絡請求

# 1 注意:發送網絡請求的域名,必須在微信公眾平臺進行設置-本地環境去除,只適用于開發版和體驗版,不能真正上線-真正上線需要有域名,域名需要工信部備案】# 2 發送請求-django后端:寫個接口,返回用戶信息-微信小程序端:發送請求,獲取數據,顯示在小程序端

域名設置
在這里插入圖片描述

可配置多個域名
在這里插入圖片描述

開發階段可以不需要設置域名,勾選下述復選框,開發者和體驗者可體驗小程序,無需設置域名
在這里插入圖片描述

2 發送請求
不想寫接口。
前端,wx.request().

wx.request({url: 'http://127.0.0.1:8000/index/',method: 'get',data: {}, // 非必填header:{}, // 非必填success: (res)=>{// 獲取res的數據}, fail: (error)=>{console.log(error);	},complete:()=>{}
})// data屬性,如果是get請求,則data內容拼接在url后,用?隔開
// 如果是post請求,則data是請求體的數據// 箭頭函數的理解// 請求成功執行success函數success: function(res) {}, // 簡寫為箭頭函數success: ()=>{ }

7.2 顯示loading提示框

# 1 發送請求前,打開loading -->wx.showLoading()
wx.showLoading({title: '加載中...',mask: true,// 是否顯示透明蒙層
})# 2 數據加載完畢,無論接口成功還是失敗,都要手動關閉loading --> wx.hideLoading()
wx.showLoading({title: '加載中...',mask: true,// 是否顯示透明蒙層,設置后加載框后的按鈕都不可點擊
})
wx.request({url: 'http://127.0.0.1:8000/index/',method: 'get',data: {}, // 非必填header:{}, // 非必填success: (res)=>{// 獲取res的數據}, fail: (error)=>{console.log(error);	},complete:()=>{wx.hideLoading(); // 關閉loading}
})

8 對話框

沒看到內容。

8.1 模態對話框

沒看到內容。

8.2 消息對話框

沒看到內容。

9 存儲

沒看到內容。

10 上拉加載更多和下拉刷新

沒看到內容。

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

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

相關文章

攻防世界逆向刷題筆記(新手模式9-1?)

bad_python 看樣子是pyc文件損壞了。利用工具打開&#xff0c;發現是MAGIC壞了。搜下也沒有頭緒。 攻防世界-難度1- bad_python - _rainyday - 博客園 python Magic Number對照表以及pyc修復方法 - iPlayForSG - 博客園 看WP才知道36已經提示了pyc版本了。參考第二個文章&am…

mysql ACID 原理

序言&#xff1a;ACID 是一組數據庫設計原則&#xff0c;他是業務數據和關鍵業務程序的可靠性保障。 1、atomicity&#xff08;原子性&#xff09; 依賴如下能力 autocommit commit rollback2、一致性 2.1 double write buffer 1、定義&#xff1a;double write buffer 是…

WebStorm 高效快捷方式全解析

作為前端開發的黃金搭檔&#xff0c;WebStorm 憑借強大的功能和高度可定制的快捷鍵體系&#xff0c;成為眾多開發者提升編碼效率的利器。本文基于 IntelliJ IDEA 的快捷鍵體系&#xff08;WebStorm 作為 JetBrains 家族成員&#xff0c;快捷鍵邏輯高度一致&#xff09;&#xf…

基于 STM32 的農村污水處理控制系統設計與實現

摘要 針對農村污水處理自動化程度低、運維成本高的問題,本文設計了一種基于 STM32 單片機的污水處理控制系統。系統通過多傳感器實時監測水質參數,結合 PID 控制算法實現污水處理全流程自動化,并集成遠程監控功能,滿足農村地區低成本、易維護的需求。 一、硬件系統設計 …

自動生成md文件以及config.mjs文件-vitepress

效果&#xff1a; config.mjs文件 import {defineConfig} from vitepress import hljs from highlight.js/lib/core import javascript from highlight.js/lib/languages/javascript import xml from highlight.js/lib/languages/xml import {ref} from "./cache/deps/vue…

Tailwind css實戰,基于Kooboo構建AI對話框頁面(二)

基于上篇內容&#xff0c;添加交互邏輯&#xff0c;實現一個偽聊天功能的對話框效果&#xff1a; Tailwind css實戰&#xff0c;基于Kooboo構建AI對話框頁面&#xff08;一&#xff09;-CSDN博客 在前期文章中&#xff0c;我們完成了 AI 對話框的靜態頁面搭建。本文將聚焦交互…

Conda:環境移植及更新1--使用conda-pack

更多內容&#xff1a;XiaoJ的知識星球 目錄 一、使用conda-pack1.安裝 conda-pack2.移植整個 Anaconda 環境3.移植單個虛擬環境4.驗證是否生效 在相同Linux設備上移植Miniconda3&#xff08;Anaconda3同理&#xff09;常用方法有。 使用conda-pack&#xff1a;使用conda-pack工…

樹莓派超全系列教程文檔--(50)如何查找樹莓派的IP地址

如何查找樹莓派的IP地址 找到您的Raspberry Pi的IP地址桌面命令行引導輸出網絡管理器使用mDNS解析 raspberrypi.local檢查路由器的設備列表使用 nmap 查找設備使用智能手機應用程序查找設備 文章來源&#xff1a; http://raspberry.dns8844.cn/documentation 原文網址 找到您…

如何優化 MySQL 存儲過程的性能?

文章目錄 1. 優化 SQL 語句避免全表掃描減少子查詢&#xff0c;改用 JOIN避免 SELECT 2. 合理使用索引3. 優化存儲過程結構減少循環和臨時變量避免重復計算 4. 使用臨時表和緩存5. 優化事務處理6. 分析和監控性能7. 優化數據庫配置8. 避免用戶自定義函數&#xff08;UDF&#…

尚硅谷redis7 47-48 redis事務之理論簡介

47 redis事務之理論簡介 什么是事務 可以一次執行多個命令,本質是一組命令的集合。一個事務中的所有命令都會序列化,按順序地串行化執行而不會被其它命令插入 能干什么&#xff1f; 一個隊列中&#xff0c;一次性、順序性、排他性的執行一系列操作 redis事務vs數據庫事務 …

Nginx 在四大核心場景中的應用實踐與優化

一、Nginx 核心應用場景深度解析 1. HTTP 服務器&#xff1a;靜態資源的高性能承載者 Nginx 作為 HTTP 服務器時&#xff0c;憑借輕量級架構和高效的事件驅動模型&#xff0c;成為靜態資源服務的首選方案。 核心能力與場景 靜態文件高效處理&#xff1a;直接響應 HTML、CSS…

亞當·斯密思想精髓的數學建模與形式化表征

亞當斯密思想精髓的數學建模與形式化表征 摘要&#xff1a;本文運用數學建模方法對亞當斯密的經濟與倫理思想進行形式化表征。通過分工的規模經濟模型和市場均衡條件展現《國富論》中"看不見的手"原理&#xff1b;采用擴展效用函數與合作博弈均衡解釋《道德情操論》…

FastDFS集群部署與性能優化實戰

目錄 一、介紹 二、FastDFS原理 三、FastDFS部署 1.資源清單 2.修改主機名 3.安裝libfastcommon&#xff08;tracker01、tracker02、storage1、storage2&#xff09; 4.安裝編譯FastDFS&#xff08;tracker01、tracker02、storage1、storage2&#xff09; 5.配置tracker…

學習心得(14--16)

模板&#xff1a; 前端的頁面單獨存在模板當中 jinja2 &#xff1a;模板語法 保持前端頁面不變的情況下&#xff0c;返回內容給前端做法&#xff1a; 寫一個data&#xff0c;并在return中的render_template中&#xff0c;寫上datadata 使用時&#xff0c;要將templa…

stm與51單片機哪個更適合新手學

一句話總結 51單片機&#xff1a;像學騎自行車&#xff0c;簡單便宜&#xff0c;但只能在小路上騎。 STM32&#xff1a;像學開汽車&#xff0c;復雜但功能強&#xff0c;能上高速公路&#xff0c;還能拉貨載人&#xff08;做復雜項目&#xff09;。 1. 為啥有人說“先學51單片…

Web安全測試-文件上傳繞過-DVWA

Web安全測試-文件上傳繞過-DVWA 很多網站都有上傳資源(圖片或者文件)的功能&#xff0c;資源上傳后一般會存儲在服務器的一個文件夾里面&#xff0c;如果攻擊者繞過了上傳時候的文件類型驗證&#xff0c;傳了木馬或者其他可執行的代碼上去&#xff0c;那服務器就危險了。 我用…

ant-design-vue中的分頁組件自定義

ant-design-vue中的分頁組件自定義 實現效果 實現代碼 需要自己創建一個分頁組件的代碼然后導入進去。 <template><div style"display: flex; justify-content: space-between; margin-bottom: 10px"><div><a-select v-model:value"pageS…

LabVIEW軟件開發過程中如何保證軟件的質量?

一、需求與架構設計階段 明確功能邊界與技術指標 在測試系統設計初期&#xff0c;圍繞比例閥性能測試核心需求&#xff08;如壓力 / 流量信號采集、特性曲線繪制、數據對比分析&#xff09;&#xff0c;定義軟件功能模塊&#xff08;數據采集、邏輯控制、界面顯示&#xff09;&…

Linux 527 重定向 2>1 rsync定時同步(未完)

rsync定時同步 配環境 關閉防火墻、selinux systemctl stop firewalld systemctl disable firewalld setenforce0 vim /etc/SELINUX/config SELINUXdisable515 設置主機名 systemctl set-hostname code systemctl set-hostname backup 配靜態ip rsync 需要穩定的路由表和端…

Vue 3.0 中狀態管理Vuex 與 Pinia 的區別

在 Vue.js 應用開發中&#xff0c;狀態管理是構建復雜應用的關鍵環節。隨著 Vue 3 的普及和 Composition API 的引入&#xff0c;開發者面臨著狀態管理庫的選擇問題&#xff1a;是繼續使用經典的 Vuex&#xff0c;還是轉向新興的 Pinia&#xff1f;本文將從設計理念、API 設計、…