微信小程序的基礎 (一)

微信小程序介紹- 鏈接

微信小程序,簡稱小程序,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用

1. 為什么是微信小程序?

  1. 微信有海量用戶,而且粘性很高,在微信里開發產品更容易觸達用戶。
  2. 推廣app 或公眾號的成本太高。
  3. 開發適配成本低。
  4. 容易小規模試錯,然后快速迭代。
  5. 跨平臺。

2. 微信小程序歷史

  • 2016年1月11日,微信之父張小龍時隔多年的公開亮相,解讀了微信的四大價值觀。張小龍指出,越來越多產品通過公眾號來做,因為這里開發、獲取用戶和傳播成本更低。拆分出來的服務號并沒有提供更好的服務,所以微信內部正在研究新的形態,叫**「微信小程序」** 需要注意的是,之前是叫做 應用號
  • 2016年9月21日,微信小程序正式開啟內測。在微信生態下,觸手可及、用完即走的微信小程序引起廣泛關注。騰訊云正式上線微信小程序解決方案,提供小程序在云端服務器的技術方案。
  • 2017年1月9日,微信推出的“小程序”正式上線。“小程序”是一種無需安裝,即可使用的手機“應用”。不需要像往常一樣下載App,用戶在微信中“用完即走”。

3. 瘋狂的微信小程序

  1. 微信月活已經達到10.82億。其中55歲以上的用戶也達到6300萬
  2. 信息傳達數達到450億
  3. 小程序覆蓋超過200+行業,交易額增長超過6倍,服務1000億+人次,創造出了5000億+的商業價值

4. 還有其他的小程序

  1. 支付寶小程序22
  2. 百度小程序
  3. QQ小程序
  4. 今日頭條 + 抖音小程序

5.官方微信小程序體驗

小程序示例源碼
在這里插入圖片描述

2準備

1. 注冊賬號

  • 建議使用全新的郵箱,沒有注冊過其他小程序或者公眾號的。

  • 訪問注冊頁面,耐心完成注冊即可。

2. 獲取APPID

  • 由于后期調用微信小程序的接口等功能,需要索取開發者的小程序中的APPID,所以在注冊成功后,可登錄,然后獲取APPID。

  • 登錄,成功后 開發 => 開發設置 => 獲取 AppID

3. 開發工具

  • 下載地址

  • 微信小程序自帶開發者工具,集 開發 預覽 調試 發布 于一身的 完整環境。
    在這里插入圖片描述

第一個微信小程序

####1. 打開微信開發者工具

  • 注意 第一次登錄的時候 需要掃碼登錄

在這里插入圖片描述

2. 新建小程序項目

在這里插入圖片描述

3. 填寫項目信息

在這里插入圖片描述

微信開發者工具介紹

在這里插入圖片描述

小程序結構目錄

1. 小程序文件結構和傳統web對比

結構傳統web微信小程序
結構HTMLWXML
樣式CSSWXSS
邏輯JavascriptJavascript
配置JSON
  • 通過以上對比得出,傳統web 是三層結構。而微信小程序 是四層結構,多了一層 配置.json

####2. 基本的項目目錄

在這里插入圖片描述

小程序配置文件

  • 一個小程序應用程序會包括最基本的兩種配置文件。一種是全局的 app.json 和 頁面自己的 page.json

  • 注意:配置文件中不能出現注釋

1. 全局配置 app.json

  • app.json配置

  • app.json 是當前小程序的全局配置,包括了小程序的所有頁面路徑、界面表現、網絡超時時間、底部 tab 等。

{"pages":["pages/index/index","pages/logs/logs"],"window":{"navigationBarBackgroundColor": "#f00", "navigationBarTextStyle" : "black",     "navigationBarTitleText": "小馬哥","navigationStyle" : "default","backgroundColor" : "#0f0","backgroundTextStyle" : "dark","enablePullDownRefresh" : false,"backgroundColorTop" : "#00f", // 窗口頂部背景  真機調試 僅ios "backgroundColorBottom" : "#f00", // 窗口底部背景 真機調試 僅ios "pageOrientation": "auto"}
}

字段的含義

  1. pages字段 —— 用于描述當前小程序所有頁面路徑,這是為了讓微信客戶端知道當前你的小程序頁面定義在哪個目錄。
  2. window字段 —— 定義小程序所有頁面的頂部背景顏色,文字顏色定義等。
  3. tabBar字段 – 詳見底部 tab 欄

####2. 頁面配置 page.json

  • page.json

  • 這里的 app.json 其實用來表示該小程序頁面相關的配置

  • 頁面的配置只能設置 app.json 中部分 window 配置項的內容, 頁面中配置會覆蓋 app.json 的 window 中相同的配置項

屬性類型默認值描述
navigationBarBackgroundColorHexColor#000000導航欄背景顏色,如 #000000
navigationBarTextStyleStringwhite導航欄標題顏色,僅支持 black / white
navigationBarTitleTextString導航欄標題文字內容
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStyleStringdark下拉 loading 的樣式,僅支持 dark / light
enablePullDownRefreshBooleanfalse是否全局開啟下拉刷新。 詳見 Page.onPullDownRefresh
onReachBottomDistanceNumber50頁面上拉觸底事件觸發時距頁面底部距離,單位為px。 詳見 Page.onReachBottom
disableScrollBooleanfalse設置為 true 則頁面整體不能上下滾動;只在頁面配置中有效,無法在 app.json 中設置該項 (備:類似overflow:hidden)

學小程序

  • 組件
  • api

常見組件

重點講解小程序中常用的布局組件

view,text,rich-text,button,image,navigator,icon,swiper,radio,checkbox。

1. view

  • 視圖容器 - 相當于之前的 div
  • 屬性 :
    • hover-class 指定按下去的樣式類
<view hover-class="h-class">點擊我試試
</view>

2. text

  • 文本標簽 - 相當于之前 span
  • 特殊用法 :
    • 長按文字可以復制 (只有該標簽有這個功能)
      • 設置true 才可以選擇, 手機預覽測試效果
    • 可以對空格 回車 進行編碼
屬性名類型默認值說明
selectableBooleanfalse文本是否可選
decodeBooleanfalse是否解碼
  • 代碼
//1.1 不可以選擇
<text>測試選擇</text>
//1.2 可以選擇 (手機測試)
<text selectable='{{ true }}'>測試選擇</text>//2.1 顯示空格失敗 : 結果 => 姓&nbsp;名
<text>&nbsp;</text>
//2.2 顯示空格成功 : 結果 => 姓 名
<text decode'>&nbsp;</text>//3 其他幾個格式 -- 看圖
<text decode>&ensp;正@</text>
<text decode>&emsp;</text>
<text decode>&nbsp;</text>
  • 使用場景
<view><text decode="{{ true }}">&emsp;</text>
</view>
<view><text>產品名</text>
</view>

在這里插入圖片描述

3. icon

  • 圖標組件
屬性類型默認值必填說明
typestringicon的類型,有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear
sizenumber/string23icon的大小
colorstringicon的顏色,同css的color
  • 代碼
  <icon type="success" size="40" color="red"/>

4. radio

  • 單選框

在這里插入圖片描述

  • 需要 搭配 radio-group 一起使用
<radio-group > <radio></radio><radio></radio>
</radio-group>

5. checkbox

  • 多選框
    在這里插入圖片描述

  • 需要 搭配 checkbox-group 一起使用

<checkbox-group><checkbox>前端</checkbox><checkbox>java</checkbox>
</checkbox-group>

6. image

  • 圖標標簽
    • image 組件默認寬高 320*240
  • 屬性
屬性名類型默認值說明
srcString圖片資源地址
modeString‘scaleToFill’圖片裁剪、縮放的模式
lazy-loadBooleanfalse圖片懶加載

mode 有效值:

說明
scaleToFill縮放模式,不保持縱橫比縮放圖片,使圖片的寬高完全拉伸至填滿 image 元素
aspectFit縮放模式,保持縱橫比縮放圖片,使圖片的長邊能完全顯示出來。也就是說,可以完整地將圖片顯示出來。
aspectFill縮放模式,保持縱橫比縮放圖片,只保證圖片的短邊能完全顯示出來。也就是說,圖片通常只在水平或垂直方向是完整的,另一個方向將會發生截取。

使用場景

  • scaleToFill : 盒子尺寸和圖片尺寸大小一樣, 使用該模式
  • aspectFit : 詳情頁頂部顯示圖片 (右)
  • aspectFill : 列表item 使用該模式 (左)
//鏈接
<view><image mode="aspectFit"  src="http://img2.imgtn.bdimg.com/it/u=1668465722,3535501153&fm=214&gp=0.jpg"></image>
</view>
<view><image mode="aspectFit"  src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1018718673,2637294948&fm=26&gp=0.jpg"></image>
</view>

在這里插入圖片描述

7. swiper

  • 輪播圖組件

  • 默認寬度 100% 高度 150px

屬性名類型默認值說明
indicator-dotsBooleanfalse是否顯示面板指示點
indicator-colorColorrgba(0, 0, 0, .3)指示點顏色
indicator-active-colorColor#000000當前選中的指示點顏色
autoplayBooleanfalse是否自動播放
intervalNumber5000自動切換時間間隔
circularBooleanfalse是否循環輪播
  • swiper

    • 滑塊視圖容器
  • swiper-item

    • 滑塊
  • 打開淘寶使用 : m.taobao.com

8. navigator

  • 導航組件 類似超鏈接標簽
屬性名類型默認值說明
targetStringself在哪個目標上發生跳轉,默認當前小程序,可選值self/miniProgram
urlString當前小程序內的跳轉鏈接
open-typeStringnavigate跳轉方式

open-type 有效值:

說明
navigate保留當前頁面,跳轉到應用內的某個頁面,但是不能跳到 tabbar 頁面
redirect關閉當前頁面,跳轉到應用內的某個頁面,但是不允許跳轉到 tabbar 頁面。
switchTab跳轉到 tabBar 頁面,并關閉其他所有非 tabBar 頁面
reLaunch關閉所有頁面,打開到應用內的某個頁面
navigateBack關閉當前頁面,返回上一頁面或多級頁面。可通過 getCurrentPages() 獲取當前的頁面棧,決定需要返回幾層
exit退出小程序,target="miniProgram"時生效

?

9. rich-text

  • 富文本標簽

    • 可以將html字符串解析成 對應標簽,類似 vue中 v-html功能
  • 通過nodes屬性來實現

    1. 接收標簽字符串
    2. 接收對象數組

nodes屬性

nodes屬性支持 字符串標簽節點數組

屬性說明類型必填備注
name標簽名string支持部分受信任的 HTML 節點
attrs屬性object支持部分受信任的屬性,遵循 Pascal 命名法
children子節點列表array結構和 nodes 一致

文本節點:type = 'text’

屬性說明類型必填備注
text文本string支持entities
  • 代碼
    // 標簽字符串str :'<div style="color:red;" >呵呵</div>',// 對象數組str1 : [{name:'div',attrs:{style:"color:red;"},children : [{type:'text',text:'哈哈'}]}]// 使用
<rich-text nodes='{{ str1 }}'></rich-text>

10. button

在這里插入圖片描述

<buttontype="default"size="{{defaultSize}}"loading="{{loading}}"plain="{{plain}}"
>default
</button>
屬性類型默認值必填說明
sizestringdefault按鈕的大小
typestringdefault按鈕的樣式類型
plainbooleanfalse按鈕是否鏤空,背景色透明
disabledbooleanfalse是否禁用
loadingbooleanfalse名稱前是否帶 loading 圖標
form-typestring用于form組件,點擊分別會觸發 form 組件的 submit/reset 事件
open-typestring微信開放能力

size 的合法值

說明
default默認大小
mini小尺寸

type 的合法值

說明
primary綠色
default白色
warn紅色

form-type 的合法值

說明
submit提交表單
reset重置表單
<form bindsubmit="handle"><input name='n1'></input><input name='n2'></input><button form-type="submit">重置</button><button form-type="reset">重置</button>
</form>

open-type 的合法值

說明
contact打開客服會話,需要在微信小程序的后臺配置 (演示不了)
share觸發用戶轉發,
getPhoneNumber獲取用戶手機號,不是企業的小程序賬號 沒有權限來獲取用戶的手機號碼 (演示不了)
getUserInfo獲取用戶信息,可以從bindgetuserinfo回調中獲取到用戶信息
launchApp打開APP 需要配合原生app (演示不了)
openSetting打開授權設置頁
feedback打開“意見反饋”頁面,需要真機調試

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

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

相關文章

看YYModel源碼的一些收獲

關于源碼學習自己的一些感悟第一層&#xff1a;熟練使用&#xff1b;第二層&#xff1a;讀懂代碼&#xff1b;第三層&#xff1a;通曉原理&#xff1b;第四層&#xff1a;如何設計&#xff1b;自己學到了什么&#xff0c;還留有什么問題&#xff1b;關于分享關于線下演講分享和…

IDEA提交項目到SVN

一.提交步驟 VCS--Enable...-->點擊項目右鍵-->subversion-->share directory-->commit 二.IDEA SVN 忽略文件的設置 1》share .使用idea在將項目提交到svn的過程中遇到這樣的問題 將項目share之后再設置ignore files &#xff0c;在commit的時候&#xff0c;不會將…

小程序基礎 (二)

小程序開發框架 小程序開發框架的目標是通過盡可能簡單、高效的方式讓開發者可以在微信中開發具有原生 APP 體驗的服務。 整個小程序框架系統分為兩部分&#xff1a;邏輯層&#xff08;App Service&#xff09;和 視圖層&#xff08;View&#xff09;。 小程序提供了自己的視…

項目ITP(五) spring4.0 整合 Quartz 實現任務調度

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主同意不得轉載。https://blog.csdn.net/u010378410/article/details/26016025 2014-05-16 22:51 by Jeff Li 前言 系列文章&#xff1a;[傳送門] 項目需求&#xff1a; 二維碼推送到一體機上&#xff0c;給學生簽到掃…

喜歡用Block的值得注意-Block的Retain Cycle的解決方法

本文不講block如何聲明及使用&#xff0c;只講block在使用過程中暫時遇到及帶來的隱性危險。 主要基于兩點進行演示&#xff1a; 1.block 的循環引用(retain cycle) 2.去除block產生的告警時&#xff0c;需注意問題。 有一次&#xff0c;朋友問我當一個對象中的block塊中的訪問…

小程序基礎 (三)

5. 使用 slot 使用單個slot // 頁面 <Test><view>自定義內容</view> </Test>// 組件 <view><view>前面的內容</view><slot></slot><view>后面的內容</view> </view>使用多個slot - 具名 // 頁面 &…

【PyQt5】QT designer + eclipse 集成開發

【寫在前面的話】 考慮將pyqt5的界面開發qt designer 集成在eclipse中&#xff0c;并且&#xff0c;不利用cmd命令行進行轉換。 【工具】 1、pyqt5 2、qt designer 3、eclipse pydy 【步驟】 1、首先配置Qt designer。 菜單 run-->external Tools-->External tools confi…

iOS UIlabel文字排版(改變字間距行間距)分類

在iOS開發中經常會用到UIlabel來展示一些文字性的內容&#xff0c;但是默認的文字排版會覺得有些擠&#xff0c;為了更美觀也更易于閱讀我們可以通過某些方法將UIlabel的行間距和字間距按照需要調節。 比如一個Label的默認間距效果是這樣&#xff1a; 然后用一個封裝起來的Cat…

MySQL查詢之聚合查詢

為了快速得到統計數據&#xff0c;提供了5個聚合函數&#xff1a; count(*)表示計算總行數&#xff0c;括號中寫星與列名&#xff0c;結果是相同的 查詢學生總數 select count(*) from students; max(列)表示求此列的最大值 查詢女生的編號最大值 select max(id) from students…

React基礎學習(第一天)

React 概述 : React 是一個用于 構建用戶界面 的 JavaScript 庫因為框架是有一整套解決方案的&#xff0c;React就是純粹寫UI組件的 沒有什么異步處理機制、模塊化、表單驗證這些。React和react-router, react-redux結合起來才叫框架&#xff0c;而React本身只是充當一個前端…

iOS 富文本風格NSMutableParagraphStyle、定制UITextView插入圖片和定制復制

問題一 開發過程中&#xff0c;經常會遇到動態計算行高的問題&#xff0c; - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullableNSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingC…

day24 01 初識繼承

day24 01 初識繼承 面向對象的三大特性&#xff1a;繼承&#xff0c;多態&#xff0c;封裝 一、繼承的概念 繼承&#xff1a;是一種創建新類的方式&#xff0c;新建的類可以繼承一個或者多個父類&#xff0c;父類又可稱基類或超類&#xff0c;新建的類稱為派生類或者子類 class…

React基礎學習(第二天)

虛擬DOM JSX 涉及到 虛擬DOM ,簡單聊一下 定時器渲染問題 // 方法 function render() {//2. 創建react對象let el (<div><h3>時間更新</h3><p>{ new Date().toLocaleTimeString()}</p></div>)//3. 渲染ReactDOM.render(el, document.g…

iOS 去除字符串中的空格或多余空格(適合英文單詞)

NSString -stringByTrimmingCharactersInSet: 是個你需要牢牢記住的方法。它經常會傳入 NSCharacterSet whitespaceCharacterSet 或 whitespaceAndNewlineCharacterSet 來刪除輸入字符串的頭尾的空白符號。 需要重點注意的是&#xff0c;這個方法 僅僅 去除了 開頭 和 結尾 的…

華為交換機在Telnet登錄下自動顯示接口信息

因為用console連接交換機&#xff0c;默認是自動顯示接口信息的&#xff0c;比如down掉一個接口后&#xff0c;會自動彈出接口被down掉的信息&#xff0c;但是在telnet連接下&#xff0c;默認是不顯示這些信息的&#xff0c;需要開啟后才可顯示。 1、首先開啟info-center(默認是…

React基礎學習(第三天)

條件渲染 1. if / else render () {if (this.state.isLoading) { // 正在加載中return <h1>Loading...</h1>}return <div>這就是我們想要的內容</div>} // 鉤子函數 五秒鐘之后 修改狀態值componentDidMount () { setTimeout(() > {this.setState(…

componentsJoinedByString 和 componentsSeparatedByString 的方法的區別

將string字符串轉換為array數組 NSArray *array [Str componentsSeparatedByString:","]; &#xff1d;&#xff1d;反向方法 將array數組轉換為string字符串 NSString *tempString [mutableArray componentsJoinedByString:","];--,是分隔符 可不加分隔…

java中的各種數據類型在內存中存儲的方式

轉載別人的附上鏈接&#xff1a;https://blog.csdn.net/zj15527620802/article/details/80622314 1.java是如何管理內存的 java的內存管理就是對象的分配和釋放問題。&#xff08;其中包括兩部分&#xff09; 分配&#xff1a;內存的分配是由程序完成的&#xff0c;程序員需要通…

vscode的 jsonp 配置文件

{ // 工具-字體大小 “editor.fontSize”: 15, // 工具-tab縮進 “editor.tabSize”: 2, // 工具-在視區寬度換行 “editor.wordWrap”: “on”, // 工具-縮放 “window.zoomLevel”: 1, // 工具-編寫tab識別語言格式 “emmet.includeLanguages”: { “vue-html”: “html”, “…

NSString拼接字符串和NSPredicate詳解

NSString* string; // 結果字符串 02 NSString* string1, string2; //已存在的字符串&#xff0c;需要將string1和string2連接起來 03 04 //方法1. 05 string [[NSString alloc]initWithFormat:"%,%", string1, string2 ]; 06 07 //方法2. 08 string [string1 …