【微信小程序每日學(xué)習(xí)記錄01】小程序簡介

一、小程序簡介

1.1 小程序代碼的構(gòu)成

1.1.1 項目結(jié)構(gòu)

1. 基本組成結(jié)構(gòu)


pages:用來存放所有小程序的頁面

utils:用來存放工具性質(zhì)的模塊(例如:格式化時間的自定義模塊)

app.js:小程序項目的入口文件

app.json:小程序項目的全局配置文件

app.wxss:小程序項目的全局樣式文件

project.config.json:項目的配置文件

sitemap.json:用來配置小程序及其頁面是否允許被微信索引

2. 頁面的組成部分

小程序官方建議把所有小程序的頁面浊猾,都存放在 pages 目錄中森瘪,以單獨的文件夾存在,如圖所示:


每個頁面由4個基本文件組成:

.js文件:頁面的腳本文件凉敲,存放頁面的數(shù)據(jù)戒职、事件處理函數(shù)等

.json文件:當(dāng)前頁面的配置文件域蜗,配置窗口的外觀、表現(xiàn)等

.wxml文件:頁面的模板結(jié)構(gòu)文件

.wxss文件:當(dāng)前頁面的樣式表文件

1.1.2 JSON 配置文件

1. JSON 配置文件的作用

JSON 是一種數(shù)據(jù)格式凛剥,在實際開發(fā)中侠仇,JSON 總是以配置文件的形式出現(xiàn),通過不同的 .json 配置文件犁珠,可以對小程序項目進行不同級別的配置逻炊。

小程序項目中有4中 json 配置文件:

項目根目錄中的 app.json 配置文件

項目根目錄中的 project.config.json 配置文件

項目根目錄中的 sitemap.json 配置文件

每個頁面文件夾中的 .json 配置文件

2. app.json 文件

app.json是當(dāng)前小程序的全局配置,包括了小程序的所有頁面路徑犁享、窗口外觀余素、界面表現(xiàn)、底部tab等炊昆。

一個新建成的項目里的 app.json 配置內(nèi)容如下:

{

"pages": [

"pages/index/index",

"pages/logs/logs"

? ],

"window": {

"backgroundTextStyle":"light",

"navigationBarBackgroundColor":"#fff",

"navigationBarTitleText":"Weixin",

"navigationBarTextStyle":"black"

? },

"style":"v2",

"sitemapLocation":"sitemap.json",

"lazyCodeLoading":"requiredComponents"

}

pages:用來記錄當(dāng)前小程序所有頁面的路徑

window:全局定義小程序所有頁面的背景色桨吊、文字顏色等

style:全局定義小程序組件所使用的的樣式版本

sitemapLocation:用來指明 sitemap.json 的位置

3. project.config.json 文件

project.config.json 是項目配置文件,用來記錄我們對小程序開發(fā)工具所做的個性化配置


setting:保存了編譯相關(guān)的配置

projectname:項目名稱

appid:小程序的賬號 ID

4. sitemap.json 文件

sitemap.json 文件用來配置小程序頁面是否允許微信索引

當(dāng)開發(fā)者允許微信索引時凤巨,微信會通過爬蟲的形式视乐,為小程序的頁面內(nèi)容建立索引。當(dāng)用戶的搜索關(guān)鍵字和頁面的索引匹配成功的時候磅甩,小程序的頁面將可能展示在搜索結(jié)果中


sitemap 的索引提示是默認(rèn)開啟的炊林,如需要關(guān)閉 sitemap 的索引提示,可在小程序項目配置文件 project.config.json 的 setting 中配置字段 checkSiteMap 為 false

5. 頁面的 .json 配置文件

小程序中的每一個頁面卷要,可以使用 .json 文件來對本頁面的窗口外觀進行配置渣聚,頁面中的配置項會覆蓋app.json 的 window 中相同的配置項

如:在 index.json 中更改了 navigationBarBackgroundColor 頂部配置的背景顏色,會覆蓋 app.json 中配置的顏色


6. 新建小程序頁面

只需要在 app.json -> pages 中新增頁面的存放路徑僧叉,小程序開發(fā)者工具即可幫我們自動創(chuàng)建對應(yīng)的頁面文件


7. 修改項目首頁

只需要調(diào)整 app.json -> pages 數(shù)組中頁面路徑的前后順序奕枝,即可修改項目的首頁。小程序會把排在第一位的頁面瓶堕,當(dāng)作項目首頁進行渲染隘道。


1.1.3 WXML 模板

1. WXML

WXML(WeiXin Markup Language)是小程序框架設(shè)計的一套標(biāo)簽語言,用來構(gòu)建小程序頁面的結(jié)構(gòu)郎笆,其作用類似于網(wǎng)頁開發(fā)中的 HTML

2. WXML 與 HTML 的區(qū)別

標(biāo)簽名不同

HTML(div, span, img, a)

WXML(view, text, image, navigator)

屬性節(jié)點不同

<a href="#">超鏈接</a>

<navigator url="/pages/home/home"></navigator>

提供了類似于 Vue 中的模板語法

數(shù)據(jù)綁定

列表渲染

條件渲染

1.1.4 WXSS 樣式

1. WXSS

WXSS (WeiXin Style Sheets)是一套樣式語言谭梗,用于描述 WXML 的組件樣式,類似于網(wǎng)頁開發(fā)中的 CSS

2. WXSS 與 CSS 的區(qū)別

新增了 rpx 尺寸單位

CSS 中需要手動進行像素單位換算宛蚓,例如 rem

WXSS 在底層支持新的尺寸單位 rpx激捏,在不同大小的屏幕上小程序會自動進行換算

提供了全局的樣式和局部樣式

項目根目錄中的 app.wxss 會作用于所有小程序頁面

局部頁面的 .wxss 樣式僅對當(dāng)前頁面生效

WXSS 僅支持部分 CSS 選擇器

.class 和 #id

element

并集選擇器、后代選擇器

::after 和 ::before 等偽類選擇器

1.1.5 JS 邏輯交互

1. 小程序中的 .js 文件

通過 .js 文件來處理用戶的操作凄吏。例如:響應(yīng)用戶的點擊远舅、獲取用戶的位置等等

2. .js 文件的分類

app.js:整個小程序項目的入口文件,通過調(diào)用 App() 函數(shù)來啟動整個小程序

頁面的 .js 文件:頁面的入口文件序六,通過調(diào)用 Page() 函數(shù)來創(chuàng)建并運行頁面

普通的 .js 文件:普通的功能模塊文件蚤吹,用來封裝公共的函數(shù)或?qū)傩怨╉撁媸褂?/p>

1.2 小程序的宿主環(huán)境

1.2.1 簡介

1. 宿主環(huán)境

宿主環(huán)境(host environment)指的是程序運行所必須的依賴環(huán)境例诀。例如:

Android 系統(tǒng)和 iOS 系統(tǒng)是兩個不同的宿主環(huán)境。安卓版的微信 App 是不能在 iOS 環(huán)境下運行的余佃,所以跨算,Android 是安卓軟件的宿主環(huán)境,脫離了宿主環(huán)境的軟件是沒有任何意義的椭懊!

2. 小程序的宿主環(huán)境

手機微信是小程序的宿主環(huán)境


小程序借助宿主環(huán)境提供的能力诸蚕,可以完成許多普通網(wǎng)頁無法完成的功能背犯,例如:

微信掃碼盅抚、微信支付妄均、微信登錄、地理定位禁熏、etc…

3. 小程序宿主環(huán)境包含的內(nèi)容

通信模型

運行機制

組件

API

1.2.2 通信模型

1. 通信主體


小程序中通信的主體是 渲染層 和 邏輯層

WXML 模板和 WXSS 樣式工作在渲染層

JS 腳本工作在邏輯層

2. 小程序的通信模型

小程序中的通信模型分為兩部分:

渲染層和邏輯層之間的通信:由微信客戶端進行轉(zhuǎn)發(fā)

邏輯層和第三方服務(wù)器之間的通信:由微信客戶端進行轉(zhuǎn)發(fā)


1.2.3 運行機制

1. 啟動過程

把小程序的代碼包下載到本地

解析 app.json 全局配置文件

執(zhí)行 app.js 小程序入口文件瞧毙,調(diào)用 App() 創(chuàng)建小程序?qū)嵗?/p>

渲染小程序首頁

小程序啟動完成

2. 頁面渲染的過程

加載解析頁面的 .json 配置文件

加載頁面的 .wxml 模板和 .wxss 樣式

執(zhí)行頁面的 .js 文件宙彪,調(diào)用 Page() 創(chuàng)建頁面實例

頁面渲染完成

1.2.4 組件

1. 組件的分類

小程序中的組件也是由宿主環(huán)境提供的有巧,開發(fā)者可以基于組件快速搭建出漂亮的頁面結(jié)構(gòu)剪决。官方把小程序的組件分為了 9 大類檀训,分別是:

視圖容器

基礎(chǔ)內(nèi)容

表單組件

導(dǎo)航組件

媒體組件

map 地圖組件

canvas 畫布組件

開放能力

無障礙訪問

2.? 常用的視圖容器類組件

view

普通視圖區(qū)域

類似于 HTML 中的 div享言,是一個塊級元素

常用來實現(xiàn)頁面的布局效果

scroll-view

可滾動的視圖區(qū)域

常用來實現(xiàn)滾動列表效果

swiper 和 swiper-item

輪播圖容器組件 和 輪播圖 item 組件

3. View 組件的基本使用

實現(xiàn)如圖的 flex 橫向布局效果

<!--pages/list/list.wxml-->

<viewclass="container1">

<view>A</view>

<view>B</view>

</view>

/* pages/list/list.wxss */

.container1view{

width:100px;

height:100px;

text-align:center;

line-height:100px;

}

.container1view:nth-child(1){

background-color:lightgreen;

}

.container1view:nth-child(2){

background-color:lightskyblue;

}

.container1{

display:flex;

justify-content:space-around;

}


4. scroll-view 組件的基本使用

<!--pages/list/list.wxml-->

<!-- scroll-y 屬性:允許縱向滾動 -->

<!-- scroll-x 屬性:允許橫向滾動 -->

<!-- 注意:使用豎向滾動時荧琼,必須給 scroll-view 一個固定高度 -->

<scroll-viewclass="container1"scroll-y>

<view>A</view>

<view>B</view>

</scroll-view>

.container1view{

width:100px;

height:100px;

text-align:center;

line-height:100px;

}

.container1view:nth-child(1){

background-color:lightgreen;

}

.container1view:nth-child(2){

background-color:lightskyblue;

}

.container1{

border:1pxsolidred;

/* 給 scroll-view 固定高度 */

height:120px;

width:100px;

}

5. swiper 和 swiper-item 組件的基本使用

<!--pages/list/list.wxml-->

<!-- 輪播圖區(qū)域 -->

<!-- indicator-dots 屬性:顯示面板指示點 -->

<swiperclass="swiper-container"indicator-dots="false"autoplay="true"circular="true">

<swiper-item>

<viewclass="item">A</view>

</swiper-item>

<swiper-item>

<viewclass="item">B</view>

</swiper-item>

<swiper-item>

<viewclass="item">C</view>

</swiper-item>

</swiper>

/* pages/list/list.wxss */

.swiper-container{

height:150px;

}

.item{

height:100%;

line-height:150px;

text-align:center;

}

swiper-item:nth-child(1).item{

background-color:lightskyblue;

}

swiper-item:nth-child(2).item{

background-color:lightgreen;

}

swiper-item:nth-child(3).item{

background-color:lightcoral;

}


swiper 組件的常用屬性

屬性類型默認(rèn)值說明

indicator-dotsbooleanfalse是否顯示面板指示點

indicator-colorcolorrgba(0,0,0,3)指示點顏色

indicator-active-colorcolor#000000當(dāng)前選中的指示點顏色

autoplaybooleanfalse是否自動切換

intervalnumber5000自動切換時間間隔

circularbooleanfalse是否采用銜接滑動

只有親自動手試了才能真正體會記住。

6. 常用的基礎(chǔ)內(nèi)容組件

text

文本組件

類似于 HTML 中的 span 標(biāo)簽脐恩,是一個行內(nèi)元素

rich-text

富文本組件

支持把 HTML 字符串渲染成 WXML 結(jié)構(gòu)

7. text 組件的基本使用

通過 text 組件的 selectable 屬性侦讨,實現(xiàn)長按選中文本內(nèi)容的效果:

<!--pages/list/list.wxml-->

<view>

?? 手機號支持長按選中效果:

<textselectable>12345678900</text>

</view>


8. rich-text 組件的基本使用

通過 rich-text 組件的 nodes 屬性節(jié)點韵卤,把 HTML 字符串渲染為對應(yīng)的 UI 結(jié)構(gòu):

<!--pages/list/list.wxml-->

<rich-textnodes="<h1 style='color:red'>標(biāo)題<h1>"></rich-text>


9. 其他常用組件

button

按鈕組件

功能比 HTML 中的 button 按鈕更豐富

通過 open-type 屬性可以調(diào)用微信提供的各種功能(客服沈条、轉(zhuǎn)發(fā)、獲取用戶授權(quán)屋厘、獲取用戶信息等)

image

圖片組件

image 組件默認(rèn)寬度約為 300px擅这、高度約為 240px

navigator

頁面導(dǎo)航組件

類似于 HTML 中的 a 鏈接

10. button 按鈕的基本使用

<!--pages/list/list.wxml-->

<view>------------- 通過 type 指定按鈕類型 -----------</view>

<button>默認(rèn)按鈕</button>

<buttontype="primary">主色調(diào)按鈕</button>

<buttontype="warn">警告按鈕</button>

<view>------------- size="mini" 小尺寸按鈕 -------------</view>

<buttonsize="mini">默認(rèn)按鈕</button>

<buttontype="primary"size="mini">主色調(diào)按鈕</button>

<buttontype="warn"size="mini">警告按鈕</button>

<view>-------------- plain 鏤空按鈕 -------------------</view>

<buttonsize="mini"plain>默認(rèn)按鈕</button>

<buttontype="primary"size="mini"plain>主色調(diào)按鈕</button>

<buttontype="warn"size="mini"plain>警告按鈕</button>


11. image 組件的基本使用

<!--pages/list/list.wxml-->

<!-- 1. 空圖片 -->

<image></image>

<!-- 2. 用 src 指向圖片路徑 -->

<imagesrc="/pages/list/images/2.jpg"></image>

/* pages/list/list.wxss */

image{

/* 通過邊框說明 image 有默認(rèn)的寬高 */

border:1pxsolidred;

}


image 組件的 mode 屬性

image 組件的 mode 屬性用來指定圖片的裁剪和縮放模式,常用的 mode 屬性值如下:

mode 值說明

scaleToFill(默認(rèn)值)縮放模式铛漓,不保持縱橫比縮放圖片浓恶,使圖片的寬高完全拉伸至填滿 image 元素

aspectFit縮放模式,保持縱橫比縮放圖片湿镀,使圖片的長邊能完全顯示出來。也就是說赫模,可以完整地將圖片顯示出來

aspectFill縮放模式蒸矛,保持縱橫比縮放圖片雏掠,只保證圖片的短邊能完全顯示出來。也就是說乡话,圖片通常只在水平或垂直方向是完整的绑青,另一個方向?qū)l(fā)生截取。

widthFix縮放模式,寬度不變掠拳,高度自動變化纸肉,保持原圖寬高比不變

heightFix縮放模式柏肪,高度不變,寬度自動變化聂使,保持原圖寬高比不變

1.2.5 API

1. 小程序 API 概述

小程序中的 API 是由宿主環(huán)境提供的谬俄,通過這些豐富的小程序 API,開發(fā)者可以方便的調(diào)用微信提供的能力屎蜓,例如:獲取用戶信息炬转、本地存儲、支付功能等

2. 小程序 API 的 3 大分類

事件監(jiān)聽 API

特點:以 on 開頭驻啤,用來監(jiān)聽某些事件的觸發(fā)

舉例:wx.onWindowResize(function callback)? 監(jiān)聽窗口尺寸變化的時間

同步 API

特點1:以 Sync 結(jié)尾的 API 都是同步 API

特點2:同步 API 的執(zhí)行結(jié)果测僵,可以通過函數(shù)返回值直接獲取捍靠,若執(zhí)行出錯會拋出異常

舉例:wx.setStorageSync('key', 'value')? 向本地存儲中寫入內(nèi)容

異步 API

特點:類似于 JQuery 中的 $.ajax(optins) 函數(shù),需要通過 success磁携、fail良风、complete 接收調(diào)用的結(jié)果

舉例:wx.request() 發(fā)起網(wǎng)絡(luò)數(shù)據(jù)請求烟央,通過 success 回調(diào)函數(shù)接收數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疑俭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啄寡,更是在濱河造成了極大的恐慌哩照,老刑警劉巖飘弧,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蹋岩,居然都是意外死亡剪个,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門乎折,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骂澄,“玉大人惕虑,你說我怎么就攤上這事溃蔫。” “怎么了私痹?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵统刮,是天一觀的道長侥蒙。 經(jīng)常有香客問我,道長学搜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任饲齐,我火速辦了婚禮咧最,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滥搭。我一直安慰自己瑟匆,他們只是感情好栽惶,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著代承,像睡著了一般渐扮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膀估,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天玖像,我揣著相機與錄音齐饮,去河邊找鬼祖驱。 笑死,一個胖子當(dāng)著我的面吹牛乡洼,可吹牛的內(nèi)容都是我干的匕坯。 我是一名探鬼主播葛峻,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼术奖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了佣耐?” 一聲冷哼從身側(cè)響起唧龄,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎然走,沒想到半個月后戏挡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褐墅,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡妥凳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年逝钥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片持际。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜘欲,死狀恐怖晌柬,靈堂內(nèi)的尸體忽然破棺而出年碘,到底是詐尸還是另有隱情,我是刑警寧澤埃难,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布傲诵,位于F島的核電站箱硕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏栓拜。R本人自食惡果不足惜幕与,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望潮饱。 院中可真熱鬧诫给,春花似錦中狂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赐写。三九已至挺邀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泣矛,已是汗流浹背禾蚕。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工换淆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留倍试,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓涮母,卻偏偏與公主長得像叛本,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子跷叉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容