小程序?qū)嵺`

項(xiàng)目是否適合移植到小程序上扒寄?

小程序由于微信提供了一些組件完沪,在微信中的一些體驗(yàn)確實(shí)不錯(cuò),對(duì)于開(kāi)發(fā)來(lái)說(shuō)辅斟,由數(shù)據(jù)驅(qū)動(dòng)的開(kāi)發(fā)模式也是挺爽的脚囊。

概要介紹

其實(shí)就是類似于 VUE REACT 的 MVVM 模式龟糕,專注于數(shù)據(jù)和邏輯。

小程序開(kāi)發(fā)框架的目標(biāo)是通過(guò)盡可能簡(jiǎn)單悔耘、高效的方式讓開(kāi)發(fā)者可以在微信中開(kāi)發(fā)具有原生 APP 體驗(yàn)的服務(wù)讲岁。

框架提供了自己的視圖層描述語(yǔ)言 WXML 和 WXSS,以及基于 JavaScript 的邏輯層框架衬以,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng)缓艳,可以讓開(kāi)發(fā)者可以方便的聚焦于數(shù)據(jù)與邏輯上。

官網(wǎng):微信小程序開(kāi)發(fā)教程

官方:微信小程序聯(lián)盟

模板層級(jí)

請(qǐng)求包裝

用戶會(huì)話處理

實(shí)踐得到的經(jīng)驗(yàn)

規(guī)則

1.目前打包后的文件不能超過(guò) 4M泄鹏,否則不能上傳到微信服務(wù)器郎任。

小程序不支持的

1.不支持 sass 語(yǔ)法

2.不支持 window、document备籽,不能使用相關(guān)的庫(kù),如 jQuery、PreventMoveOverScroll车猬。

3.不支持直接使用 svg 標(biāo)簽開(kāi)發(fā)霉猛。image 的 src 放遠(yuǎn)程 svg 可以,background-image 里也可以珠闰。

但是可以使用 canvas 標(biāo)簽(canvas坑:position absolute的層蓋不住canvas)惜浅,可以使用的庫(kù):wx-charts(有坑,放在 app.js 中然后在 page 中引用的話伏嗜,找不到 ringChart 上面的函數(shù)坛悉,如 ringChart.addEventListener。要直接在 page 中引庫(kù)承绸。)裸影。

4.不支持阻止默認(rèn)事件,沒(méi)有preventDefault军熏。

5.沒(méi)有br?標(biāo)簽轩猩。

6.不支持table?表格。

7.不能使用 ?來(lái)增大文字間距荡澎。

8.小程序的xxx.wxss?文件 font-face 的 url 不接受 http 地址作為參數(shù),可以接受base64,因此可以先將字體文件下載后,轉(zhuǎn)換為 base64均践,然后再引用。鏈接摩幔。

9.像素單位為 rpx

新特性

2.text?標(biāo)簽認(rèn) \n 換行彤委,不能包裹
?標(biāo)簽,會(huì)直接輸出出來(lái)或衡,有點(diǎn)類似textarea焦影。

3.小程序中 :nth-child(n) 是從 0 開(kāi)始的。

4.switch?標(biāo)簽薇宠。但是不能改變大小樣式偷办,像老radio?標(biāo)簽一樣討厭。

5.picker?標(biāo)簽澄港。但是在開(kāi)發(fā)者工具中選項(xiàng)不會(huì)循環(huán)椒涯,在安卓手機(jī)預(yù)覽中選項(xiàng)會(huì)循環(huán)。

6.scroll-view?標(biāo)簽回梧。有滾動(dòng)條的盒子废岂。要想在進(jìn)入頁(yè)面的時(shí)候自動(dòng)滾動(dòng)到某處,可以使用 scroll-view 的 scroll-into-view 屬性狱意,不過(guò)一定要在 scroll-view 存在后設(shè)置才會(huì)生效湖苞,尤其是通過(guò) template 引用的時(shí)候,比如同時(shí)通過(guò) setData 設(shè)置使用該 template 和 scroll-into-view 的值详囤,并不會(huì)使?jié)L動(dòng)生效财骨。

7.關(guān)于屏幕下拉露底:Android 不會(huì)镐作,iPhone 會(huì)÷÷幔可以通過(guò)配置解決:disableScroll Boolean false 設(shè)置為 true 則頁(yè)面整體不能上下滾動(dòng)该贾;只在 page.json 中有效,無(wú)法在 app.json 中設(shè)置該項(xiàng)捌臊。鏈接杨蛋。

8.template標(biāo)簽

模板的作用域:模板擁有自己的作用域,只能使用 data 傳入的數(shù)據(jù)理澎。

9.在功能按鈕上使用catchtap?防止冒泡

10.hidden?參數(shù)逞力,控制蒙版的利器

小竅門

1.關(guān)于下拉刷新

要在 page.json 中設(shè)置enablePullDownRefresh: true

onPullDownRefresh?內(nèi)要手動(dòng)stopPullDownRefresh,否則一直在點(diǎn)點(diǎn)點(diǎn)(loading)糠爬。

2.page的onload 函數(shù)中有參數(shù) options 可以獲取路徑的 query

3.小程序的支付和微信的支付不是一個(gè) appid寇荧,需要后端新開(kāi)發(fā)下單接口

4.wxml 最好在開(kāi)發(fā)者工具編輯(有提示)。js秩铆, wxss可以在熟悉的編輯器編輯砚亭。

5.小程序中如果賦予的新值是 undefined 的話,根本不會(huì)進(jìn)行賦值殴玛,也不會(huì)覆蓋之前的值捅膘。如:

app.setData({

isPaperCollected:?finishedQuizList['id'+quizID]?||?false

})

6.通過(guò)多次使用 Object.assign({}) 解決data也模塊化后 data 不能深層復(fù)制的問(wèn)題。

Object.assign 不是深層復(fù)制滚粟。

7.在微信web開(kāi)發(fā)者工具中一定要在動(dòng)作->設(shè)置->勾上“不使用任何代理寻仗,勾選后直連網(wǎng)絡(luò)”,否則老是報(bào)“

Failed to load resource: net::ERR_NAME_NOT_RESOLVED”的bug:鏈接

8.每一個(gè)小程序頁(yè)面也可以使用 .json 文件來(lái)對(duì)本頁(yè)面的窗口表現(xiàn)進(jìn)行配置凡壤。 頁(yè)面的配置比 app.json 全局配置簡(jiǎn)單得多署尤,只是設(shè)置 app.json 中的 window 配置項(xiàng)的內(nèi)容,頁(yè)面中配置項(xiàng)會(huì)覆蓋 app.json 的 window 中相同的配置項(xiàng)亚侠。頁(yè)面的 .json 只能設(shè)置 window 相關(guān)的配置項(xiàng)曹体,以決定本頁(yè)面的窗口表現(xiàn),所以無(wú)需寫window這個(gè)鍵硝烂。鏈接箕别。

9.data是在page中設(shè)置的,不是在 app.js 中的滞谢。不涉及渲染的可以不要放 data 里面串稀。

10.Page.prototype.setData()變更數(shù)據(jù)同時(shí)更新頁(yè)面數(shù)據(jù)。

setData 函數(shù)用于將數(shù)據(jù)從邏輯層發(fā)送到視圖層狮杨,同時(shí)改變對(duì)應(yīng)的 this.data 的值母截。直接修改 this.data 無(wú)效,無(wú)法改變頁(yè)面的狀態(tài)橄教,還會(huì)造成數(shù)據(jù)不一致清寇。單次設(shè)置的數(shù)據(jù)不能超過(guò) 1024kB喘漏,請(qǐng)盡量避免一次設(shè)置過(guò)多的數(shù)據(jù)。

11.wx:if是惰性的颗管,如果在初始渲染條件為false陷遮,框架什么也不做滓走,在條件第一次變成真的時(shí)候才開(kāi)始局部渲染垦江。

會(huì)話管理

微信的網(wǎng)絡(luò)請(qǐng)求接口 wx.request() 沒(méi)有攜帶 Cookies,這讓傳統(tǒng)基于 Cookies 實(shí)現(xiàn)的會(huì)話管理不再適用搅方。為了讓處理微信小程序的服務(wù)能夠識(shí)別會(huì)話比吭,我們會(huì)話管理使用weapp-session-client。這需要服務(wù)端的支持姨涡●锰伲基本原理是包裝 wx.request 并在 Header 上使用特殊的字段跟蹤。

使用時(shí)遇到的問(wèn)題:

1.微信開(kāi)發(fā)者工具報(bào)錯(cuò):Uncaught ReferenceError: regeneratorRuntime is not defined

原因是 Generator 函數(shù)不被支持涛漂。

解決方法:

* 微信開(kāi)發(fā)者工具關(guān)閉ES6轉(zhuǎn)ES5

* 真正解決辦法赏表,提供 regeneratorRuntime鏈接1--鏈接2

2.題外話:善用 Promise

本項(xiàng)目后端處理會(huì)話管理時(shí)要求發(fā)送請(qǐng)求時(shí)不能使用相同的 X-WX-Code發(fā)送多次全部header數(shù)據(jù),RawData匈仗、Signature等瓢剿,否則報(bào)錯(cuò)。

所以使用 weapp-session-client 登錄的時(shí)候要等login返回之后再發(fā)送其他的請(qǐng)求悠轩,

小程序加載后立即順序執(zhí)行 app.js 和 page.js 里面的配置间狂,但是 wx request 是異步的,所以有可能 page 中的請(qǐng)求開(kāi)始執(zhí)行時(shí) app.js 中的 login 還沒(méi)結(jié)束火架,就會(huì)導(dǎo)致 bug鉴象。

可以使用個(gè) promise 解決掉。

進(jìn)階

1.擴(kuò)展微信小程序框架功能

2.疑問(wèn):微信切換賬號(hào)會(huì)不會(huì)銷毀小程序

3.檢查TLS版本的問(wèn)題

http://www.dongcoder.com/detail-410653.html

解決方法:微信開(kāi)發(fā)者工具勾選開(kāi)發(fā)時(shí)不檢查檢查TLS版本或后端配置

4.藍(lán)牙何鸡、震動(dòng)的調(diào)用

5.蒙版處理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纺弊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子骡男,更是在濱河造成了極大的恐慌淆游,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洞翩,死亡現(xiàn)場(chǎng)離奇詭異稽犁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)骚亿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門已亥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人来屠,你說(shuō)我怎么就攤上這事虑椎≌痧模” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵捆姜,是天一觀的道長(zhǎng)传趾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)泥技,這世上最難降的妖魔是什么浆兰? 我笑而不...
    開(kāi)封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮珊豹,結(jié)果婚禮上簸呈,老公的妹妹穿的比我還像新娘。我一直安慰自己店茶,他們只是感情好蜕便,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著贩幻,像睡著了一般轿腺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丛楚,一...
    開(kāi)封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天族壳,我揣著相機(jī)與錄音,去河邊找鬼鸯檬。 笑死决侈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喧务。 我是一名探鬼主播赖歌,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼功茴!你這毒婦竟也來(lái)了庐冯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坎穿,失蹤者是張志新(化名)和其女友劉穎展父,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體玲昧,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栖茉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了孵延。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吕漂。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尘应,靈堂內(nèi)的尸體忽然破棺而出惶凝,到底是詐尸還是另有隱情吼虎,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布苍鲜,位于F島的核電站思灰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏混滔。R本人自食惡果不足惜洒疚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遍坟。 院中可真熱鬧拳亿,春花似錦、人聲如沸愿伴。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)隔节。三九已至,卻和暖如春寂呛,著一層夾襖步出監(jiān)牢的瞬間怎诫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工贷痪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幻妓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓劫拢,卻偏偏與公主長(zhǎng)得像肉津,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舱沧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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