




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
三.一JSON配置文件微信小程序遼寧師范大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院孫芳第四章微信小程序組件一二三四Contents第三章微信小程序基礎(chǔ)知識第五章微信小程序API五六第二章第一個微信小程序云開發(fā)第六章云開發(fā)第一章概述第七章綜合項(xiàng)目案例七第三章微信小程序基礎(chǔ)知識ContentsWXML模板WXSWXSSJSON配置文件JS頁面邏輯文件三.二三.一三.四三.三三.五JSON配置文件三.一app.json三.一.一app.jsonapp.json是小程序配置文件,是對當(dāng)前整個小程序項(xiàng)目地全局配置。包括了小程序地所有頁面路徑,界面UI展示,網(wǎng)絡(luò)超時時間,設(shè)置底部tab等。表三-一app.json配置項(xiàng)列表屬類型必填描述最低版本pagesStringArray是設(shè)置頁面路徑
windowObject否設(shè)置默認(rèn)頁面地窗口表現(xiàn)
tabBarObject否設(shè)置底部tab地表現(xiàn)
workTimeoutObject否設(shè)置網(wǎng)絡(luò)超時時間
debugBoolean否設(shè)置是否開啟debug模式
functionalPagesBoolean否是否啟用插件功能頁,默認(rèn)關(guān)閉二.一.零subpackagesObject[]否分包結(jié)構(gòu)配置一.七.三workersstring否Worker代碼放置地目錄一.九.九零requiredBackgroudModesstring[]否需要在后臺使用地能力,如音樂播放
pluginsObject否使用到地插件一.九.六preloadRuleObject否分包預(yù)下載規(guī)則二.三.零resizableBoolean否iPad小程序是否支持屏幕旋轉(zhuǎn),默認(rèn)關(guān)閉二.三.零navigateToMiniProgramAppIdListstring[]否需要跳轉(zhuǎn)小程序列表,具體詳見API"小程序跳轉(zhuǎn)"章節(jié)二.四.零usingponentsObject否全局自定義組件配置
permissionObject否小程序接口權(quán)限有關(guān)設(shè)置七.零.零屬類型必填描述最低版本一.pages用來指定整個小程序由哪些頁面組成,第一項(xiàng)代表小程序地初始頁面。在小程序新增/減少頁面,都需在此對pages數(shù)組行修改。pages目錄配置二.window用于設(shè)置小程序地狀態(tài)欄,導(dǎo)航條,標(biāo)題,窗口背景色。屬類型默認(rèn)值描述最低版本navigationBarBackgroundColorHexColor#零零零零零零導(dǎo)航欄背景顏色,HexColor是(十六制顏色值)
navigationBarTextStyleStringwhite導(dǎo)航欄標(biāo)題顏色,僅支持black/white
navigationBarTitleTextString
導(dǎo)航欄標(biāo)題文字內(nèi)容
navigationStyleStringdefault導(dǎo)航欄樣式,僅支持default/custom。custom模式可自定義導(dǎo)航欄,只三保留右上角膠囊狀地按鈕微信版本六.六.零backgroundColorHexColor#ffffff窗口地背景色
backgroundTextStyleStringdark下拉loading地樣式,僅支持dark/lightbackgroundColorTopString#ffffff頂部窗口地背景色,僅iOS支持微信版本六.六.一六backgroundColorBottomString#ffffff底部窗口地背景色,僅iOS支持微信版本六.五.一六enablePullDownRefreshBooleanfalse是否開啟下拉刷新,具體詳見"頁面構(gòu)造器與生命周期"章節(jié)onReachBottomDistanceNumber五零頁面上拉觸底觸發(fā)時距頁面底部距離,單位為px,具體詳見"頁面構(gòu)造器與生命周期"章節(jié)
pageOrientationstringportrait屏幕旋轉(zhuǎn)設(shè)置,支持auto/portait/landscape二.四.零(auto)/二.五.零(landscape)表三-二window配置項(xiàng)列表屬類型默認(rèn)值描述最低版本window配置信息tabBar可以通過tabBar配置項(xiàng)指定tab欄地表現(xiàn)。屬類型必填默認(rèn)值描述最低版本colorHexColor是
tab上地文字默認(rèn)顏色
selectedColorHexColor是
tab上地文字選時地顏色
backgroundColorHexColor是
tab地背景色
borderStyleString否blacktabbar上邊框地顏色,僅支持black/white
listArray是
tab地列表,詳見下面表格list屬說明,最少二個,最多五個tab
positionString否botton可選值bottom,top,當(dāng)為top時,icon不會顯示
customBoolean否false自定義tabBar。詳情會在自定義組件章節(jié)介紹。二.五.零表三-三tab配置項(xiàng)列表其tab地列表屬如表三-四所示屬類型必填說明pagePathString是頁面路徑,需要在pages先定義textString是tab上按鈕文字iconPathString否圖片路徑,icon大小限制為四零kb,建議尺寸為八一px*八一px,當(dāng)postion為top時,不顯示iconselectedIconPathString否選時地圖片路徑,icon大小限制為四零kb,建議尺寸為八一px*八一px,當(dāng)postion為top時,不顯示icon。表三-四列表list屬微信小程序tabBar示意圖tabBar示意圖四.workTimeout用于在全局設(shè)置各種網(wǎng)絡(luò)請求地超時時間。表三-五workTimeout屬表屬類型必填說明requestNumber否wx.request地超時時間,單位毫秒,默認(rèn)為:六零零零零connectSocketNumber否wx.connectSocket地超時時間,單位毫秒,默認(rèn)為:六零零零零uploadFileNumber否wx.uploadFile地超時時間,單位毫秒,默認(rèn)為:六零零零零downloadFileNumber否wx.downloadFile地超時時間,單位毫秒,默認(rèn)為:六零零零零五.debug在開發(fā)工具打開debug模式,可以幫助開發(fā)者快速定位一些常見地問題。六.functionalPages用來啟用插件功能頁選項(xiàng),默認(rèn)為false。七.subpackagessubpackages就是用來聲明項(xiàng)目分包加載結(jié)構(gòu)。九.requiredBackgroundModes聲明需要后臺運(yùn)行地能力,常用地是后臺音樂播放功能。注:在此處聲明了后臺運(yùn)行地接口,開發(fā)版與體驗(yàn)版上可以直接生效,正式版還需要通過審核。處理多線程任務(wù)時,設(shè)置worker代碼放置目錄。如例所示打包時會將worker目錄下地文件打包成一個文件。八.workers九.requiredBackgroundModes一零.resizable一三.navigateToMiniProgramAppIdList在需要使用wx.navigateToMiniProgram接口實(shí)現(xiàn)跳轉(zhuǎn)其它小程序時配置小程序appId列表。最多允許填寫一零個。在iPad上運(yùn)行地小程序可以設(shè)置支持屏幕旋轉(zhuǎn)。一一.navigateToMiniProgramAppIdList一二.usingponents自定義組件在小程序使用頻度很高時可在此聲明,視為全局自定義組件。一五.permission小程序接口權(quán)限設(shè)置,如獲取地理位置有關(guān)接口時,如果沒有聲明位置有關(guān)權(quán)限,就會彈出左圖提示。一三.permissionproject.config.json三.一.二整個小程序項(xiàng)目地配置文件。表三-六project.config.json屬字段名類型說明miniprogramRootPathString指定小程序源碼地目錄(需為相對路徑)cloudfunctionRootPathString指定云開發(fā)源碼地目錄(需為相對路徑)qcloudRootPathString指定騰訊云項(xiàng)目地目錄(需為相對路徑)pluginRootPathString指定插件項(xiàng)目地目錄(需為相對路徑)pileTypeString編譯類型settingObject項(xiàng)目設(shè)置libVersionString基礎(chǔ)庫版本appidString項(xiàng)目地appid,只在新建項(xiàng)目時讀取projectnameString項(xiàng)目名字,只在新建項(xiàng)目時讀取packOptionsObject打包配置選項(xiàng)scriptsObject自定義預(yù)處理其表三-七pileType有效值名字說明miniprogram當(dāng)前為普通小程序項(xiàng)目plugin當(dāng)前為小程序插件項(xiàng)目setting可以指定以下設(shè)置
表三-八setting指定設(shè)置字段名類型說明es六Boolean是否啟用es五轉(zhuǎn)es六postcssBoolean上傳代碼時樣式是否自動補(bǔ)全minifiedBoolean上傳代碼時是否自動壓縮urlCheckBoolean是否檢查安全域名與TLS版本scripts指定自定義預(yù)處理地命令
表三-九scripts自定義預(yù)處理命令名字說明beforepile預(yù)覽前預(yù)處理命令beforePreview預(yù)覽前預(yù)處理命令beforeUpload上傳前預(yù)處理命令packOptions目前可以使用packOptions.ignore字段,來配置哪些文件或者文件夾不在打包預(yù)覽或者上傳地結(jié)果內(nèi)。表三-一零packOptions.ignore配置選項(xiàng)字段名類型說明valuestring路徑或取值typestring類型type類型分別為:folder(文件夾),file(文件), suffix(后綴),prefix(前綴)。配置文件夾與文件都需要有完整路徑,本例以小程序目錄mini_programs為根目錄。{"packOptions":{"ignore":[{ "type":"file","value":"mini_programs/pages/news/news.js},{ "type":"folder", "value":"mini_programs/pages/news"},{ "type":"suffix", "value":".webp"},{ "type":"prefix", "value":"test-"}]}}sitemap.json三.一.三開發(fā)者可以通過sitemap.json配置,來配置其小程序頁面是否允許微信索引。表三-一一sitemap.json配置列表屬類型默認(rèn)值描述rulesObject[]
索引規(guī)則列表,每項(xiàng)規(guī)則為一個JSON對象,屬如表三-一二所示。表三-一二rules配置項(xiàng)屬類型必填默認(rèn)值取值取值說明actionstring否allowallow,disallow命該規(guī)則地頁面是否能被索引pagestring是
"*",頁面地路徑*表示所有頁面,不能作為通配符使用paramsstring[]否[]
當(dāng)page字段指定地頁面在被本規(guī)則匹配時可能使用地頁面參數(shù)名稱地列表(不含參數(shù)值)matchingstring否inclusive參考取值說明表當(dāng)page字段指定地頁面在被本規(guī)則匹配時,此參數(shù)說明params匹配方式priorityNumber否
優(yōu)先級,值越大則規(guī)則越早被匹配,否則默認(rèn)從上到下匹配值說明exact當(dāng)小程序頁面地參數(shù)列表等于params時,規(guī)則命inclusive當(dāng)小程序頁面地參數(shù)列表包含params時,規(guī)則命exclusive當(dāng)小程序頁面地參數(shù)列表與params集為空時,規(guī)則命partial當(dāng)小程序頁面地參數(shù)列表與params集不為空時,規(guī)則命表三-一三matching取值說明表配置示例一:{"rules":[{"action":"allow","page":"*"}]}。示例一說明:默認(rèn)所有頁面都會被索引到。該配置是優(yōu)先級最低地配置。配置示例二:{"rules":[{"action":"allow","page":"path/to/page","params":["a","b"],"matching":"exact"},{"action":"disallow","page":"path/to/page"}]}示例二說明:(一)path/to/page?a=一&b=二=>優(yōu)先索引(二)path/to/page=>不被索引(三)path/to/page?a=一=>不被索引(四)path/to/page?b=一=>不被索引(五)path/to/page?a=一&b=二&c=三=>不被索引(六)其它頁面都會被索引示例三說明:(一)path/to/page?a=一&b=二=>優(yōu)先索引(二)path/to/page?a=一&b=二&c=三=>優(yōu)先索引(三)path/to/page=>不被索引(四)path/to/page?a=一=>不被索引(五)path/to/page?b=二=>不被索引(六)其它頁面都會被索引配置示例三:{"rules":[{"action":"allow","page":"path/to/page","params":["a","b"],"matching":"inclusive"},{"action":"disallow","page":"path/to/page"}]}示例四說明:(一)path/to/page=>優(yōu)先索引(二)path/to/page?c=三=>優(yōu)先索引(三)path/to/page?a=一=>不被索引(四)path/to/page?b=一=>不被索引(五)path/to/page?a=一&b=二=>不被索引(六)其它頁面都會被索引配置示例四:{"rules":[{"action":"allow","page":"path/to/page","params":["a","b"],"matching":"exclusive"},{"action":"disallow","page":"path/to/page"}]}說明:(一)path/to/page?a=一=>優(yōu)先索引(二)path/to/page?b=一=>優(yōu)先索引(三)path/to/page?a=一&b=二=>優(yōu)先索引(四)path/to/page=>不被索引(五)path/to/page?c=三=>不被索引(六)其它頁面都會被索引配置示例五:{"rules":[{"action":"allow","page":"path/to/page","params":["a","b"],"matching":"partial"},{"action":"disallow","page":"path/to/page"}]}page.json三.一.四頁面配置文件是在每個目錄下,只對當(dāng)前頁面窗口表現(xiàn)行配置,它只能對window有關(guān)地配置項(xiàng)行配置,會覆蓋app.json相同地選項(xiàng)。表三-一四page.json配置列表屬類型默認(rèn)值描述最低版本navigationBarBackgroundColorHexColor#零零零零零零導(dǎo)航欄背景顏色,如"#零零零零零零"
navigationBarTextStylestringwhite導(dǎo)航欄標(biāo)題顏色,僅支持black/white
navigationBarTitleTextstring
導(dǎo)航欄標(biāo)題文字內(nèi)容
navigationStylestringdefault導(dǎo)航欄樣式,僅支持default,以及custom自定義導(dǎo)航欄。微信客戶端七.零.零backgroundColorHexColor#ffffff窗口地背景色
屬類型默認(rèn)值描述最低版本backgroundTextStylestringdark下拉loading地樣式,僅支持dark/light
backgroundColorTopstring#ffffff頂部窗口地背景色,僅IOS支持微信客戶端六.五.一六backgroundColorBottomstring#ffffff底部窗口地背景色,僅IOS支持微信客戶端六.五.一六enablePullDownRefreshBooleanfalse是否開啟下拉刷新。
disableScrollBooleanfalse設(shè)置為true則頁面整體不能上下滾動;這個只有在page.json有效,無法在app.json設(shè)置該項(xiàng)
onReachBottomDistanceNumber五零頁面上拉觸底觸發(fā)時距頁面底部距離,單位為px.
pageOrientationstringportrait屏幕旋轉(zhuǎn)設(shè)置,支持auto,portrait,landscape
disableSwipBackBooleanfalse禁止頁面右滑手勢返回微信客戶端七.零.零usingponentsObject否頁面自定義組件配置一.六.三page.json配置配置示例:WXML模板三.二數(shù)據(jù)綁定三.二.一WXML相當(dāng)于web前端頁面語言HTML,用來描述整個頁面地結(jié)構(gòu)。
框架會將WXML文件同對應(yīng)Page地data行綁定,使用雙大括號。渲染方式:簡單綁定,運(yùn)算,組合。注意:組件屬為boolean類型時,一定要使用關(guān)鍵字輸出:checked="{{false}}"。簡單綁定效果圖簡單綁定:在模板直接作為字符串輸出使用②運(yùn)算在{{}}內(nèi)支持地運(yùn)算有三元運(yùn)算,算數(shù)運(yùn)算,邏輯判斷,字符串運(yùn)算。③組合data地?cái)?shù)據(jù)可以在模板再次組合成新地?cái)?shù)據(jù)結(jié)構(gòu),數(shù)組組合可以直接將值放置到數(shù)組某個下標(biāo)下:最終組合成數(shù)組[零,一,二,三,四]第一種,直接將數(shù)據(jù)作為value值行組合。最終組合出地對象為{name:’mamba’,age:’三零’}第二種,通過"…"將一個對象展開,把key-value值拷貝到新地結(jié)構(gòu)。最終組合成地對象是 {a:一,b:二,c:三,d:四,e:五}。對象組合有三種組合方式,這里以數(shù)據(jù)注入模板為例。第三種,如果對象key與value相同,可以只寫key值。最后組合成地對象是: {key一:一,key二:二}
上述三種方式可以根據(jù)項(xiàng)目靈活組合。注意:如果一個組合有相同地屬名,后面地屬將會覆蓋前面地屬。最終組合成地對象是{a:五,b:三,c:六}注意:花括號與引號之間如果有空格,將最終被解析成為字符串。列表渲染三.二.二組件地wx:for控制屬用于遍歷數(shù)組,重復(fù)渲染該組件,當(dāng)前項(xiàng)地下標(biāo)變量名默認(rèn)為index,數(shù)組當(dāng)前項(xiàng)變量名默認(rèn)為item。①wx:for②wx:for-index/wx:for-item用于修改index,item變量名舉例遍歷一個二維數(shù)組:③Blockwx:for用于將需要包裝地組件放置在里面,以渲染一個包含多節(jié)點(diǎn)地結(jié)構(gòu)塊。僅僅是一個包裝元素,不會在頁面做任何渲染,只接受控制屬。④wx:key用來指定列表項(xiàng)目地唯一標(biāo)識符。wx:key地值有兩種形式,通常使用從后臺數(shù)據(jù)庫返回地?cái)?shù)據(jù)地ID作為值。條件渲染三.二.三①wx:ifWXML也支持wx:elif與wx:else示例只有當(dāng)showText地值為true時才渲染。②Blockwx:if需要將其添加到一個標(biāo)簽上??墒褂?lt;block/>
標(biāo)簽將多個組件包裝起來,并使用
wx:if
控制屬。③hidden用于控制組件是否顯示。模板三.二.四將相同地布局代碼片段放置到一個模板,可避免重復(fù)開發(fā),提高開發(fā)效率。定義模板:設(shè)置<template/>地name屬,作為模板地名字。使用模板,設(shè)置is屬指向需要使用地模板,然后將模板所需要地data傳入。模板也可以嵌套使用:注意:模板is屬可以使用Mustache語法,來動態(tài)決定具體需要渲染哪個模板:引用三.二.五引用指一個WXML可以引入其它WXML文件,通常使用import(引入模板定義)與include(引入組件)。區(qū)別:Importimport只接受模板地定義,忽略模板定義之外地所有內(nèi)容,而且使用過程有作用域地概念。Include與import相反,include則是引入文件除<template/>以外地代碼直接拷貝到<include/>位置。①importsrc屬值指需要被引入文件地相對地址,import引用忽略文件<template/>定義以外地內(nèi)容。如下例僅引入名為bTemplate模板定義地內(nèi)容,在a.wxml能使用b.wxml定義地模板。import引用有作用域概念,只能直接使用引入地定義模板,而不能使用間接引入地定義模板。如:CimportB,BimportA,在C可以使用B定義地template,在B可以使用A定義地template,但是C不能使用A定義地template。如:②Includeinclude可以將目地文件除了<template/>,<wxs/>外地整個代碼引入,相當(dāng)于是拷貝到include位置,示例如下。
三.二.六在小程序,把這種"用戶在渲染層地行為反饋"以及"組件地部分狀態(tài)反饋"抽象為渲染層傳遞給邏輯層地"",如圖所示。圖渲染層與邏輯層互圖一,什么是在WXML使用方式是通過在組件上設(shè)置"bind(或catch)+名"屬行綁定,下面是一個簡單地處理地小程序代碼。是通過bindtap這個屬綁定在組件上地,同時在當(dāng)前頁面地Page構(gòu)造器定義對應(yīng)地處理函數(shù)tapName,當(dāng)用戶點(diǎn)擊該view可視區(qū)域時,達(dá)到觸發(fā)條件生成tap,該處理函數(shù)tapName會被執(zhí)行,同時還會收到一個對象event。二,地分類除下表之外地其它組件自定義如無特殊聲明都是非冒泡,如<form/>地submit,<input/>地input,<scroll-view/>地scroll等。表三-一五類型當(dāng)回調(diào)觸發(fā)地時候,會收到一個對象,對象地詳細(xì)屬如下表所示。表三-一六對象地詳細(xì)屬currentTarget為當(dāng)前所綁定地組件,而target則是觸發(fā)該地源頭組件。對象示例如下。關(guān)于target與currentTarget對象地詳細(xì)參數(shù)如下表所示。表三-一七target與currentTarget對象地詳細(xì)參數(shù)關(guān)于touch與changedTouches對象地詳細(xì)參數(shù)如下表。表三-一八touch與changedTouches對象地詳細(xì)參數(shù)三,綁定與冒泡捕獲綁定地寫法與組件屬寫法相同,以key,value地形式。key以bind或catch開頭,然后跟上地類型,如bindtap,catchtouchstart。value是一個字符串,需要在對應(yīng)地Page定義同名地函數(shù)。否則當(dāng)觸發(fā)地時候會報(bào)錯。bind綁定不會阻止冒泡向上冒泡,catch綁定可以阻止冒泡向上冒泡。
圖冒泡與捕獲示意圖在以下示例,點(diǎn)擊innerview會先后調(diào)用handleTap一,handleTap二,handleTap三,handleTap四。bind綁定不會阻止冒泡向上冒泡,catch綁定可以阻止冒泡向上冒泡。WXS三.三一.wxs不依賴于運(yùn)行時地基礎(chǔ)庫版本,可以在所有版本地小程序運(yùn)行。wxs二.wxs與javascript是不同地語言,有自己地語法,并不與javascript一致。三.wxs地運(yùn)行環(huán)境與其它javascript代碼是隔離地,wxs不能調(diào)用其它javascript文件定義地函數(shù),也不能調(diào)用小程序提供地API。四.wxs函數(shù)不能作為組件地回調(diào)。五.由于運(yùn)行環(huán)境地差異,在iOS設(shè)備上小程序內(nèi)地wxs會比javascript代碼快二~二零倍。在android設(shè)備上二者運(yùn)行效率無差異wxs(WeiXinScript)是小程序新出地一套腳本語言WXS創(chuàng)建方式三.三.一在WXML直接編寫,示例如下<!--wxml--><wxsmodule="m一">varmsg="helloworld";
module.exports.message=msg;</wxs><view>{{m一.message}}</view>頁面輸出:helloworld在WXS文件編寫,示例如下///pages/tools.wxs
vargetMax=function(array){varmax=undefined;for(vari=零;i<array.length;++i){max=max===undefined?array[i]:(max>=array[i]?max:array[i]);}returnmax;}
module.exports.getMax=getMax;<wxssrc="./../tools.wxs"module="tools"/><view>{{tools.getMax([‘一’,’二’,’三’])}}</view>頁面輸出:三WXS構(gòu)成三.三.二一.數(shù)據(jù)類型數(shù)據(jù)類型是每個編程語言最基本地構(gòu)成項(xiàng),WXS目前有八種數(shù)據(jù)類型:number:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則(一)number語法number包括兩種數(shù)值:整數(shù),小數(shù)。vara=一零;varPI=三.一四一五九二六五三五八九七九三;(一)number屬constructor:返回字符串"Number"。(一)number方法toStringtoLocaleStringvalueOftoFixed:toExponentialtoPrecision注:以上方法具體使用方法參考本書地JavaScript章節(jié)number:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則一.數(shù)據(jù)類型(二)string語法:string有兩種寫法'helloworld’;"helloworld";(二)string屬constructor:返回字符串"String"。Length:反回字符串地字符數(shù)目。(二)stringtoStringvalueOfcharAt:charCodeAtconcatindexOflastIndexOflocaleparematchreplacesearchslicesplitsubstringtoLowerCasetoLocaleLowerCasetoUpperCasetoLocaleUpperCasetrim方法注:以上方法具體使用方法參考本書地JavaScript章節(jié)number:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則一.數(shù)據(jù)類型(三)boolean語法布爾值只有兩個特定地值:true與false。(三)boolean屬constructor:返回字符串"Boolean"。(三)booleantoStringvalueOf方法注:以上方法具體使用方法參考本書地JavaScript章節(jié)number:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則一.數(shù)據(jù)類型(四)object語法:object是一種無序地鍵值對。使用方法如下所示。varo={}//生成一個新地空對象
//生成一個新地非空對象o={'string':一,//object地key可以是字符串const_var:二,//object地key也可以是符合變量定義規(guī)則地標(biāo)識符func:{},//object地value可以是任何類型};
//對象屬地讀操作console.log(一===o['string']);console.log(二===o.const_var);//對象屬地寫操作o['string']++;o['string']+=一零;o.const_var++;o.const_var+=一零;
//對象屬地讀操作console.log(一二===o['string']);console.log(一三===o.const_var);屬constructor:返回字符串"object"。console.log("Object"==={k:"一",v:"二"}.constructor)(四)objecttoString:返回字符串"[objectObject]"。方法(四)objectnumber:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則一.數(shù)據(jù)類型(五)functionvara=function(x){returnfunction(){returnx;}}
varb=a(一零零);console.log(一零零===b());語法:function支持以下地定義方式。//方法一functiona(x){returnx;}//方法二varb=function(x){returnx;}function同時也支持以下地語法(匿名函數(shù),閉包等)。(六)argumentsfunction里面可以使用arguments關(guān)鍵詞。該關(guān)鍵詞目前只支持以下地屬。length:傳遞給函數(shù)地參數(shù)個數(shù)。[index]:通過index下標(biāo)可以遍歷傳遞給函數(shù)地每個參數(shù)。vara=function(){console.log(三===arguments.length);console.log(一零零===arguments[零]);console.log(二零零===arguments[一]);console.log(三零零===arguments[二]);};a(一零零,二零零,三零零);示例代碼:(六)arguments屬constructor:返回字符串"Function"。length:返回函數(shù)地形參個數(shù)。toString:返回字符串"[functionFunction]"。方法(六)argumentsvarfunc=function(a,b,c){}
console.log("Function"===func.constructor);console.log(三===func.length);console.log("[functionFunction]"===func.toString());示例代碼:number:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則一.數(shù)據(jù)類型(七)array語法
array支持以下地定義方式。vara=[];//生成一個新地空數(shù)組a=[一,"二",{},function(){}];//生成一個新地非空數(shù)組,數(shù)組元素可以是任何類型(七)array屬constructor:返回字符串"Array"。length(七)array方法toStringConcatjoinpoppushreverseshiftslicesortspliceunshiftindexOflastIndexOfeverysomeforEachmapfilterreducereduceRight注:以上方法具體使用方法參考本書地JavaScript章節(jié)number:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則一.數(shù)據(jù)類型(八)date語法生成date對象需要使用getDate函數(shù),返回一個當(dāng)前時間地對象。getDate() getDate(milliseconds) getDate(datestring) getDate(year,month[,date[,hours[,minutes[,seconds[,milliseconds]]]]]) 參數(shù) milliseconds:從一九七零年一月一日零零:零零:零零UTC開始計(jì)算地毫秒數(shù) datestring:日期字符串,其格式為:"monthday,yearhours:minutes:seconds"(八)date 示例代碼如下。vardate=getDate();//返回當(dāng)前時間對象date=getDate(一五零零零零零零零零零零零);//FriJul一四二零一七一零:四零:零零GMT+零八零零(標(biāo)準(zhǔn)時間)date=getDate('二零一七-七-一四');//FriJul一四二零一七零零:零零:零零GMT+零八零零(標(biāo)準(zhǔn)時間)date=getDate(二零一七,六,一四,一零,四零,零,零);//FriJul一四二零一七一零:四零:零零GMT+零八零零(標(biāo)準(zhǔn)時間)(八)date屬constructor:返回字符串"Date"。(八)date方法toString toDateString toTimeString toLocaleString toLocaleDateString toLocaleTimeString valueOf getTime getFullYear getUTCFullYear getMonth
getUTonthgetDate getUTCDate getDay getUTCDay getHours getUTCHours getMinutes getUTinutes getSeconds getUTCSeconds getMilliseconds getUTilliseconds getTimezoneOffset setTime setMilliseconds setUTilliseconds setSeconds setUTCSeconds setMinutes setUTinutes setHours setUTCHours setDate setUTCDate setMonth setUTonth setFullYear setUTCFullYear toUTCString toISOString toJSON注:以上方法具體使用方法參考本書地JavaScript章節(jié)一.數(shù)據(jù)類型number:數(shù)值string: 字符串boolean:布爾值object: 對象function: 函數(shù)array: 數(shù)組date: 日期regexp: 正則(九)regexp語法生成regexp對象需要使用getRegExp函數(shù)。getRegExp(pattern[,flags])(九)regexp參數(shù):pattern:正則表達(dá)式地內(nèi)容。flags:修飾符。該字段只能包含以下字符:
g:globali:ignoreCasem:multiline。(九)regexp示例代碼vara=getRegExp("x","img");console.log("x"===a.source);console.log(true===a.global);console.log(true===a.ignoreCase);console.log(true===a.multiline);(九)regexp屬constructor:返回字符串"RegExp"。sourceglobalignoreCasemultilinelastIndex方法exectesttoString注:以上方法具體使用方法參考本書地JavaScript章節(jié)(一零)數(shù)據(jù)判斷類型constructor屬數(shù)據(jù)類型地判斷可以使用constructor屬。varnumber=一零;console.log("Number"===number.constructor);
varstring="str";console.log("String"===string.constructor);
varboolean=true;console.log("Boolean"===boolean.constructor);
varobject={};console.log("Object"===object.constructor);varfunc=function(){};console.log("Function"===func.constructor);
vararray=[];console.log("Array"===array.constructor);
vardate=getDate();console.log("Date"===date.constructor);
varregexp=getRegExp();console.log("RegExp"===regexp.constructor);示例代碼(一零)數(shù)據(jù)判斷類型typeof使用typeof也可以區(qū)分部分?jǐn)?shù)據(jù)類型。varnumber=一零;varboolean=true;varobject={};varfunc=function(){};vararray=[];vardate=getDate();varregexp=getRegExp();
console.log('number'===typeofnumber);console.log('boolean'===typeofboolean);console.log('object'===typeofobject);console.log('function'===typeoffunc);console.log('object'===typeofarray);console.log('object'===typeofdate);console.log('object'===typeofregexp);
console.log('undefined'===typeofundefined);console.log('object'===typeofnull);示例代碼二.變量WXS變量地命名規(guī)則為:首字符需要是字母(a-zA-Z)或下劃線(_);剩余地字符可以是字母(a-zA-Z),下劃線(_),數(shù)字(零-九)。區(qū)分大小寫且變量均為值地引用。varfoo=一;varbar="helloworld";vari;//I===undefined每種語言都有自己地保留關(guān)鍵字或標(biāo)識符,WXS也不例外,下面地標(biāo)識符不能作為變量名所使用。deletevoidtypeof
nullundefinedNaNInfinityvar
ifelse
truefalse
require
thisfunctionargumentsreturnforwhiledobreakcontinueswitchcasedefault三.運(yùn)算符運(yùn)算符包括基本運(yùn)算符(加,減,乘,除,取余),一元運(yùn)算符(自增,自減,正值,負(fù)值,否運(yùn)算,取反,delete運(yùn)算,void運(yùn)算,typeof運(yùn)算),位運(yùn)算符(左移,無符號右移,帶符號右移,與運(yùn)算,異或運(yùn)算,或運(yùn)算),比較運(yùn)算符(小于,大于,小于等于,大于等于),等值運(yùn)算符(等號,非等號,全等號,非全等號),賦值運(yùn)算符(=),二元邏輯運(yùn)算符(邏輯與,邏輯或),其它運(yùn)算符(條件運(yùn)算符,逗號運(yùn)算符)。各個運(yùn)算符示例如下。vara=一零,b=二零;
//基本運(yùn)算符//加法運(yùn)算console.log(三零===a+b);//減法運(yùn)算console.log(-一零===a-b);//乘法運(yùn)算console.log(二零零===a*b);//除法運(yùn)算console.log(零.五===a/b);//取余運(yùn)算console.log(一零===a%b);
//加法運(yùn)算符(+)也可以用于字符串拼接vara='.w',b='xs';//字符串拼接console.log('.wxs'===a+b);
//一元運(yùn)算符//自增運(yùn)算console.log(一零===a++);console.log(一二===++a);//自減運(yùn)算console.log(一二===a--);console.log(一零===--a);//正值運(yùn)算console.log(一零===+a);//負(fù)值運(yùn)算console.log(零-一零===-a);//否運(yùn)算console.log(-一一===~a);//取反運(yùn)算console.log(false===!a);//delete運(yùn)算console.log(true===deletea.fake);//void運(yùn)算console.log(undefined===voida);//typeof運(yùn)算console.log("number"===typeofa);//位運(yùn)算符//左移運(yùn)算console.log(八零===(a<<三));//無符號右移運(yùn)算console.log(二===(a>>二));//帶符號右移運(yùn)算console.log(二===(a>>>二));//與運(yùn)算console.log(二===(a&三));//異或運(yùn)算console.log(九===(a^三));//或運(yùn)算console.log(一一===(a|三));
//比較運(yùn)算符//小于console.log(true===(a<b));//大于console.log(false===(a>b));//小于等于console.log(true===(a<=b));//大于等于console.log(false===(a>=b));//等值運(yùn)算符//等號console.log(false===(a==b));//非等號console.log(true===(a!=b));//全等號console.log(false===(a===b));//非全等號console.log(true===(a!==b));
//二元邏輯運(yùn)算符//邏輯與console.log(二零===(a&&b));//邏輯或console.log(一零===(a||b));
//其它運(yùn)算符//條件運(yùn)算符console.log(二零===(a>=一零?a+一零:b+一零));//逗號運(yùn)算符console.log(二零===(a,b));四.語句WXS語句分為選擇結(jié)構(gòu)if語句,switch語句,循環(huán)結(jié)構(gòu)for語句,while語句。具體語法如下。(一)if語句//if...
if(表達(dá)式)語句;
if(表達(dá)式)語句;
if(表達(dá)式){代碼塊;}
//if...else
if(表達(dá)式)語句;else語句;
if(表達(dá)式)語句;else語句;
if(表達(dá)式){代碼塊;}else{代碼塊;}//if...elseif...else...
if(表達(dá)式){代碼塊;}elseif(表達(dá)式){代碼塊;}elseif(表達(dá)式){代碼塊;}else{代碼塊;}(二)switch語句switch(表達(dá)式){case變量:語句;case數(shù)字:語句;break;case字符串:語句;default:語句;}(三)for語句for(語句;語句;語句)語句;
for(語句;語句;語句){代碼塊;}(四)while語句while(表達(dá)式)語句;
while(表達(dá)式){代碼塊;}do{代碼塊;}while(表達(dá)式)五.模塊在WXS每一個.wxs文件或者<wsx>標(biāo)簽都是一個單獨(dú)地模塊,每個模塊都有自己獨(dú)立地作用域。只能通過module.exports來實(shí)現(xiàn)對外公開,通過使用require函數(shù)來引用其它wxs文件模塊。具體示例代碼如下。///pages/tools.wxs
varfoo="'helloworld'fromtools.wxs";varbar=function(d){returnd;}module.exports={FOO:foo,bar:bar,};module.exports.msg="somemsg";///pages/logic.wxs
vartools=require("./tools.wxs");
console.log(tools.FOO);console.log(tools.bar("logic.wxs"));console.log(tools.msg);<!--/page/index/index.wxml-->
<wxssrc="./../logic.wxs"module="logic"/>最終輸出為'helloworld'fromtools.wxslogic.wxssomemsg具體效果如下圖所示六.注釋W(xué)XS一有三種注釋方式,具體請看下面示例代碼。<!--wxml--><wxsmodule="sample">//方法一:單行注釋/*方法二:多行注釋*//*方法三:結(jié)尾注釋。即從/*開始往后地所有WXS代碼均被注釋
vara=一;varb=二;varc="fake";
</wxs>
WXSS三.四WXSS(WeiXinStyleSheets)是基于CSS拓展地樣式語言,用于描述WXML地組件樣式,決定WXML地組件該怎么顯示,它具有CSS地大部分特,在CSS基礎(chǔ)上WXSS拓展了尺寸單位,樣式導(dǎo)入特,對CSS選擇器屬上做了部分兼容。尺寸單位三.四.一在WXSS,引入了rpx(responsivepixel)尺寸單位??蛇m配不同寬度地屏幕,rpx可以根據(jù)屏幕寬度行自適應(yīng)。規(guī)定屏幕寬為七五零rpx。一rpx=一px。下表rpx與px換算。表三-一九rpx與px換算表設(shè)備rpx換算px(屏幕寬度/七五零)px換算rpx(七五零/屏幕寬度)iPhon五一rpx=零.四二px一px=二.三四rpxiPhone六一rpx=零.五px一px=二rpxiPhone六Plus一rpx=零.五五二px一px=一.八一rpx三.四.一尺寸單位樣式引入三.四.二在CSS,可以引用另一個樣式文件:@importurl('./test_零.css')該方法在請求index.css地時候,會多一個test_零.css地請求。內(nèi)聯(lián)樣式三.四.三三.四.三內(nèi)聯(lián)樣式WXSS內(nèi)聯(lián)樣式支持使用style,class屬來控制組件地樣式。?style:靜態(tài)地樣式統(tǒng)一寫到class。請盡量避免靜態(tài)寫入以免影響渲染速度。 <viewstyle="color:{{color}};"/>?class:用于指定樣式規(guī)則,樣式類名之間用空格分隔 <viewclass="normal_viewbormal_view一"/>一個模塊要想對外暴露其內(nèi)部地私有變量與函數(shù),只能通過module.exports實(shí)現(xiàn)。選擇器三.四.四目前WXSS支持地選擇器如下表所示。wxss選擇器表類型選擇器樣例樣例描述類選擇器.class.intro選擇所有擁有class="intro"地組件id選擇器#id#firstname選擇擁有id="firstname"地組件元素選擇器elementviewcheckbox選擇所有文檔地view組件與所有地checkbox組件偽元素選擇器::afterview::after在view組件后邊插入內(nèi)容偽元素選擇器::beforeview::before在view組件前插入內(nèi)容選擇器地優(yōu)先級三.四.五WXSS優(yōu)先級與CSS類似,權(quán)重如下圖所示。選擇器權(quán)重優(yōu)先級示意圖權(quán)重越高越優(yōu)先。在優(yōu)先級相同地情況下,后設(shè)置地樣式優(yōu)先級高于先設(shè)置地樣式。三.五JS頁面邏輯文件
頁面邏輯文件主要功能有:設(shè)置初始化數(shù)據(jù),注冊當(dāng)前頁面生命周期函數(shù),注冊處理函數(shù)等。小程序地邏輯層文件是JavaScript文件,所
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 愛心防疫捐款活動方案
- 瑰麗酒店充值活動方案
- 琴行晚會活動方案
- 父母交換活動方案
- 理財(cái)公司創(chuàng)意活動方案
- 煤礦頂板活動方案
- 球館活動包場活動方案
- 烤肉門店活動方案
- 班級參觀攝影活動方案
- 現(xiàn)場拉練活動方案
- 2021衛(wèi)生監(jiān)督法律法規(guī)知識競賽題庫及答案
- 懲罰游戲?qū)W校班會公司早會小游戲晨會年會團(tuán)建課堂娛樂互動340
- 中國郵政集團(tuán)有限公司國企招聘筆試真題2024
- 第三方檢測委托書模板
- 數(shù)據(jù)資產(chǎn):會計(jì)研究的新領(lǐng)域
- 2024年1月內(nèi)蒙古自治區(qū)普通高中學(xué)業(yè)水平考試地理
- 產(chǎn)前篩查相關(guān)工作規(guī)章規(guī)章制度
- 肉牛購銷的合同范本
- 中醫(yī)證素評分表yyy
- 吸氧標(biāo)準(zhǔn)操作流程
- 抹灰施工人員培訓(xùn)方案
評論
0/150
提交評論