客戶端轉(zhuǎn)小程序之入門二

3.四件套

3.1 js

3.1.1 基本結(jié)構(gòu)

3.1.1.1 引用文件與全局變量

????????前端開和客戶端開發(fā)有一點差別颓遏,客戶端想要使用某一個類的對象需要先import某個對象叁幢,然后new(),這樣就可以拿著這個對象的引用對這個對象進(jìn)行操作了窒百;而前端開發(fā)不同篙梢,它其實并沒有import的概念渤滞,想要引用某個類的對象,通常都是定義一個全局變量(var或者const)录肯,通過require方法給它賦值即可论咏。

3.1.1.2 私有變量和私有方法

????????私有變量和私有方法和客戶端開發(fā)相同蠢护,都是先定義葵硕,再使用懈凹,具體的只是語法不同悄谐。

3.1.2 系統(tǒng)方法

3.1.2.1 生命周期

? ? ? ? ? ?以下iOS们陆、Android情屹、小程序的頁面生命周期基本上保持一一對應(yīng)

3.1.2.2 分享

????????分享回調(diào)函數(shù)onShareAppMessage(res)在兩種情況下會被觸發(fā):

????????????????a.點擊微信導(dǎo)航上自帶的轉(zhuǎn)發(fā)按鈕椅文,res.from = "menu"

????????????????b.點擊自定義分享按鈕(open-type="share"),res.from = "button"

????????分享回調(diào)函數(shù)支持返回一個map對象,常用的格式為:

????????return{

????????????????title:"展示給分享對象用戶的標(biāo)題",

????????????????path:"分享對象用戶點擊分享對話框時跳轉(zhuǎn)的目標(biāo)頁面",

????????????????imageUrl:"展示給目標(biāo)用戶的對話框中的圖片雾袱,默認(rèn)為當(dāng)前頁面的上半部分截圖芹橡,尺寸固定:從頂部開始煎殷,高度為 80% 屏幕寬度的圖像作為轉(zhuǎn)發(fā)圖片",

????????????????success(res){

????????????????????????console.log("之前分享成功之后會回調(diào)至這個閉包中腿箩,現(xiàn)在微信把接口關(guān)閉了")

????????????????},

????????????????fail(res){

????????????????????????console.log("同上")

????????????????}

????????}

3.1.2.3 上拉下拉刷新

????????onPullDownRefresh:監(jiān)聽用戶下拉動作

????????onReachBottom:頁面上拉觸底事件的處理函數(shù)

3.1.3 頁面跳轉(zhuǎn)/路由

????????小程序開發(fā)中除了邏輯處理以外豪直,就是常見的頁面跳轉(zhuǎn)了,大概有五種珠移,和客戶端開發(fā)差異性不大弓乙。

3.1.3.1 push

????????從當(dāng)前頁面進(jìn)入下一級頁面,當(dāng)前頁面仍然活著

????????wx.navigateTo({

? ? ? ???????? url: '../login/login'

? ? ? ? })

3.1.3.2 pop

????????從當(dāng)前頁面返回上級頁面钧惧,當(dāng)前頁面被刪除暇韧,以下方法通常和getCurrentPages()配合使用

?????????wx.navigateBack({

????????????????delta:n //返回到上n級頁面

????????})

3.1.3.3 redirect

????????將當(dāng)前頁面替換為某頁面,當(dāng)前頁面被刪除

????????wx.redirectTo({

????????????????url: '../login/login'

????????})

3.1.3.4 reLaunch

????????關(guān)閉所有頁面浓瞪,將某個頁面設(shè)置為root頁面懈玻,所有頁面都被關(guān)閉

????????wx.reLaunch({

????????????????url: '../login/login'

????????})

3.1.3.5 switchTab

????????關(guān)閉所有頁面涂乌,將某個頁面設(shè)置為root頁面历涝,所有頁面都被關(guān)閉

????????wx.switchTab({

????????????????url: '../login/login'

????????})

3.2 json

3.2.1 頁面配置

????????{

????????????????navigationBarBackgroundColor:? "#000000", //導(dǎo)航欄背景顏色

????????????????navigationBarTextStyle:"white", //導(dǎo)航欄標(biāo)題顏色赵刑,僅支持?black?/?white

????????????????navigationBarTitleText:"", //導(dǎo)航欄標(biāo)題文字內(nèi)容

????????????????backgroundColor:"#ffffff", //窗口的背景色

????????????????backgroundTextStyle:"dark", //下拉 loading 的樣式铐懊,僅支持?dark?/?light

????????????????enablePullDownRefresh:"false", //是否全局開啟下拉刷新茅茂。

????????????????onReachBottomDistance:"50", //頁面上拉觸底事件觸發(fā)時距頁面底部距離碴倾,單位為px

????????????????disableScroll:"false" //設(shè)置為?true?則頁面整體不能上下滾動矫户;只在頁面配置中有效耻台,無法在?app.json?中設(shè)置該項

????????}

3.2.2 自定義組件調(diào)用相關(guān)

?????????此處略過(usingComponents)摄杂,在后面的章節(jié)中會單獨提到秧饮。

3.3 wxml

?????????這里主要介紹幾種常用的標(biāo)簽類型帽撑,以及該標(biāo)簽下常用的幾種屬性专筷。

3.3.1 view

????????<view class="first-view" id="id-view" style="background:white;" bindtap="onclick" hidden="false">測試文字</view>

3.3.2 text

????????<text class="first-text" id="id-text" style="color:white;" bindtap="onclick">測試文字</text>

3.3.3 button

????????<button class="first-button" id="id-button" style="color:white;" bindtap="onclick" open-type="share/getUserInfo">測試文字</button>

3.3.4 input

????????<input class="first-input" bindinput="bindKeyInput" type="number" maxlength="13" placeholder="請輸入13位數(shù)字"></input>

3.3.5 image

????????<image class="first-image" src="../../assets/login/bg.jpeg"></image>

3.3.6 列表渲染

3.3.6.1 單節(jié)點列表

????????<view wx:for="{[1,2,3,4]}" wx:for-index="index" wx:for-item="item">{{index}}: {{item}}</view>

3.3.6.2 多節(jié)點列表

????????page.js文件

????????????????Page({

????????????????????? data: {

????????????????????????????testList:[1,2,3,4]

????????????????????????? },

????????????????????onLoad: function (options) {}

? ? ? ? ? ? ? ? ? ?})

????????page.wxml文件

? ? ? ? <block wx:for="{{testList}}">

? ???????????? <view> {{index}}: </view>

? ???????????? <view> {{item}} </view>

????????</block>

3.3.7 canvas

后面會有單獨的章節(jié)來介紹分享的具體技術(shù)點和實現(xiàn)方式。

3.4 wxss

3.4.1 屏幕適配單位

????????rpx:所有的屏幕寬度均為750rpx,高度=(750 * 屏幕分辨率的高/寬)rpx

3.4.2 class和id的區(qū)別

3.4.2.1 意義上的區(qū)別

????????從面向?qū)ο蟮慕嵌瘸霭l(fā)辱姨,class就是常說的類替久,id就等于class的一個實例變量醇份,也就是支持多繼承

3.4.2.2 寫法的區(qū)別

????????a.使用class進(jìn)行的wxss:.first-view{/*具體的css樣式 */}

????????b.使用id進(jìn)行的wxss:#id-view{/*具體的css樣式 */}

????????c.在小程序中id和class均可以使用多次,來進(jìn)行wxss樣式描述哮肚,但是H5開發(fā)中的css中id只能使用一次

3.4.3 position屬性

????????absolute:

????????????????生成絕對定位的元素潮剪,相對于 static 定位以外的第一個父元素進(jìn)行定位捍壤。

????????????????元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定鹃觉。

????????fixed:

????????????????生成絕對定位的元素,相對于瀏覽器窗口進(jìn)行定位沉填。

????????????????元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定蜀备。

? ? ? ? relative:

? ? ? ? ? ? ? ? 生成相對定位的元素脂凶,相對于其正常位置進(jìn)行定位。

? ? ? ? ? ? ? ? 元素位置通過margin-left,margin-top,margin-right,margin-bottom屬性進(jìn)行規(guī)定襟士。

????????static:

????????????????默認(rèn)值盗飒。沒有定位,忽略 top, bottom, left, right 或者 z-index 聲明陋桂。

????????inherit:

????????????????規(guī)定應(yīng)該從父元素繼承 position 屬性的值逆趣。

3.4.4 display:flex

? ? ? ? ?采用flex布局的元素,稱為flex容器嗜历,也就是使用彈性布局的容器宣渗,一般小程序里的容器都采用這種布局。

????????使用flex布局的容器有以下幾個屬性:

3.4.4.1 flex-direction:

  容器內(nèi)元素的排列方向(默認(rèn)橫向排列)

????????主要有column? column-reverse row row-reverse

3.4.4.2 flex-wrap:

  容器內(nèi)元素?fù)Q行方式梨州,當(dāng)有多元素的時候生效

????????主要有wrap nowrap wrap-reverse

3.4.4.3 flex-flow:

  以上兩個屬性的簡寫方式

3.4.4.4 justify-content:

  元素在主軸上的對齊方式痕囱,使用justify-content布局的容器有以下幾個屬性:

????????flex-start:在主軸上由左或者上開始排列

????????flex-end:在主軸上由右或者下開始排列

????????center:在主軸上居中排列

????????space-between:在主軸上左右兩端或者上下兩端開始排列

????????space-around:每個元素兩側(cè)的間隔相等。所以暴匠,元素之間的間隔比元素與邊框的間隔大一倍鞍恢。

3.4.4.5 align-items

  元素在交叉軸上如何對齊,使用align-items布局的容器有以下幾個屬性:

????????flex-start:在交叉軸上由左或者上開始排列

????????flex-end:在交叉軸上由右或者下開始排列

????????center:在交叉軸上居中排列

????????stretch:填滿交叉軸

????????baseline:在主軸上的坐標(biāo)值相同

看圖說話:

3.4.4.6 align-content

  定義了多根軸線的對齊方式。如果元素只有一根軸線帮掉,即只有一行或者一列弦悉,該屬性不起作用。

????????flex-start:在主軸上由左或者上開始排列

????????flex-end:在主軸上由右或者下開始排列

????????center:在主軸上居中排列

????????stretch:填滿交叉軸

????????space-between:在主軸上左右兩端或者上下兩端開始排列

????????space-around:每個項目兩側(cè)的間隔相等旭寿。所以警绩,項目之間的間隔比項目與邊框的間隔大一倍

????????看圖說話:


3.4.4.7 text-align

????????這種樣式本身不屬于flex樣式崇败,但是因為和上面的幾種樣式有點兒相似盅称,所以單獨拎出來和flex的樣式一起說。

????????這種樣式針對的是多排文字后室,并且必須設(shè)置當(dāng)前元素為display:inline-block時才能生效缩膝。

????????有以下幾個屬性:left,center,right

? ? ? ? 代碼如下:

????????????wxml文件:

????????????????????<text class = "third-text">測試文本7測試文本7測試文本7測試文本7測試文本7測試文本7測試文本7</text>

????????????wxss文件:

????????????????????.third-text{

? ???????????????????? display:inline-block;

? ???????????????????? text-align: center;

????????????????????}

3.4.4 幾種基本屬性

3.4.4.1 width/height

????????支持兩種方式岸霹,一種是rpx,一種是%,如下

????????????????.test-view{

????????????????????????width:50%;

????????????????????????height:100rpx;

????????????????}

3.4.4.2 z-index

????????做背景圖時很有用的一個參數(shù)案站,默認(rèn)值是0

3.4.4.3 border-radius

????????切圓角的參數(shù)搜立,如下:

????????.test-view{

????????????????border-radius:10rpx;

? ? ? ? ? ?}

3.4.4.4 border

????????描邊的參數(shù),如下

????????.test-view{

????????????????border:1rpx solid #bebebe;

? ? ? ? ? ?}

????????1rpx 指的是描邊的線的寬度

????????solid 指的是實線效果刮吧,其實還有 outset 指的外凸效果 湖饱,或者inset 指的是內(nèi)嵌效果,不過做客戶端開發(fā)杀捻,絕大部分時候使用的都是solid井厌,必填項

????????#bebebe 指的是線條的顏色

3.4.4.5 font-size

????????描述文字大小的參數(shù),如下

????????.test-text{

????????????????font-size:26rpx;

????????????}

3.4.4.6 font-weight

????????描述文字粗細(xì)的參數(shù)致讥,

????????lighter仅仆,normal,bold垢袱,bolder為默認(rèn)值

????????或者是100~900墓拜,只能是100的整數(shù)倍

????????其中400等于normal,700等于bold请契,注意這里不帶rpx單位

????????如下:

????????.text-text{

????????????????font-weight:400;

????????????????/* font-weight:bold; */

????????}

3.5 wxml與js數(shù)據(jù)通信

3.5.1 MVVM中的viewmodel進(jìn)行數(shù)據(jù)通信

????????js中的viewmodel:

????????data:{

????????????????text2:"測試文本2"

? ? ? ? ?}

????????js中的綁定事件:

????????onclick2:function(){

? ? ? ? ???????? this.setData({

? ? ? ? ? ? ? ? ? text2:"呵呵噠"

? ? ? ????????? })

? ???????? }

????????wxml:

????????????????<text bindtap='onclick2'>{{text2}}</text>

????????可以看到咳榜,最初頁面顯示的文字為“測試文本2”,點擊“哈哈哈”之后姚糊,變成了“呵呵噠”贿衍。

? ? ? ? ?和客戶端中的mvvm開發(fā)不同的是,前端開發(fā)自帶mvvm基因救恨,不需要客戶端那樣繁瑣的把數(shù)據(jù)和組件進(jìn)行一一綁定贸辈。

3.5.2 將wxml中的信息通過點擊事件傳遞給js文件

????????wxml文件:

????????????????<text class="first-text" bindtap='onclick3' id="3" data-text="測試文本3" data-name="測試的text">測試文本3</text>

????????js文件:

????????????onclick3:function(e){

? ????????? let id = e.currentTarget.id

? ????????? let text = e.currentTarget.dataset.text

? ????????? let name = e.currentTarget.dataset.name

? ????????? console.log("id =,",id,"text =",text,"name =",name)

? ? ? ? ? ? ?}

????????可以看到,打印結(jié)果是:

????????id = 3

????????text = 測試文本3

????????name = 測試的text

部分技術(shù)點引用自阮一峰的《阮一峰的網(wǎng)絡(luò)日志》:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市擎淤,隨后出現(xiàn)的幾起案子奢啥,更是在濱河造成了極大的恐慌,老刑警劉巖嘴拢,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桩盲,死亡現(xiàn)場離奇詭異,居然都是意外死亡席吴,警方通過查閱死者的電腦和手機(jī)赌结,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孝冒,“玉大人柬姚,你說我怎么就攤上這事∽校” “怎么了量承?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長穴店。 經(jīng)常有香客問我撕捍,道長,這世上最難降的妖魔是什么泣洞? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任忧风,我火速辦了婚禮,結(jié)果婚禮上斜棚,老公的妹妹穿的比我還像新娘阀蒂。我一直安慰自己,他們只是感情好弟蚀,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布蚤霞。 她就那樣靜靜地躺著,像睡著了一般义钉。 火紅的嫁衣襯著肌膚如雪昧绣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天捶闸,我揣著相機(jī)與錄音夜畴,去河邊找鬼。 笑死删壮,一個胖子當(dāng)著我的面吹牛贪绘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播央碟,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼税灌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起菱涤,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤苞也,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粘秆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體如迟,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年攻走,在試婚紗的時候發(fā)現(xiàn)自己被綠了殷勘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡陋气,死狀恐怖劳吠,靈堂內(nèi)的尸體忽然破棺而出引润,到底是詐尸還是另有隱情巩趁,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布淳附,位于F島的核電站议慰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奴曙。R本人自食惡果不足惜别凹,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望洽糟。 院中可真熱鬧炉菲,春花似錦、人聲如沸坤溃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽薪介。三九已至祠饺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汁政,已是汗流浹背道偷。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留记劈,地道東北人勺鸦。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像目木,于是被迫代替她去往敵國和親换途。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

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

  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,496評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,472評論 0 6
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評論 1 92
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的怀跛,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體距贷。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,887評論 0 0
  • 今天要教大家的是比較基礎(chǔ)的技巧,多列合并吻谋。 如上圖這樣忠蝗,將A列+空格+B列,形成D列漓拾。 方法有仨: 1阁最、使用連接符...
    冷漠熱情閱讀 8,660評論 0 0