成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

微信小程序初探

teren / 3346人閱讀

摘要:在微信小程序中,要更新視圖就只能修改,而視圖層也只能通過(guò)事件向邏輯層傳遞交互信息。頁(yè)面移植到微信小程序要修改的地方也還比較多,主要是標(biāo)簽和的交互及小程序提供的功能部分。

小程序是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用「觸手可及」的夢(mèng)想,用戶掃一掃或搜一下即可打開(kāi)應(yīng)用。也體現(xiàn)了「用完即走」的理念,用戶不用關(guān)心是否安裝太多應(yīng)用的問(wèn)題。應(yīng)用將無(wú)處不在,隨時(shí)可用,但又無(wú)需安裝卸載。 ——張小龍

微信小程序框架


微信小程序分為視圖層和邏輯層,視圖層包含WXML(類似HTML)、WXSS(類似css),邏輯層包含javascript文件。視圖層通過(guò)事件通知邏輯層,而邏輯層通過(guò)控制data來(lái)更新視圖。此外,微信還提供了API、組件、配置文件,使微信小程序的開(kāi)發(fā)更加簡(jiǎn)單。

在開(kāi)發(fā)微信小程序時(shí),我們通過(guò)網(wǎng)絡(luò)請(qǐng)求請(qǐng)求數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行一定的處理綁定到視圖即可,由于組件的存在,簡(jiǎn)單的展示變得更加簡(jiǎn)單。涉及網(wǎng)絡(luò)請(qǐng)求、媒體、文件、緩存、位置、設(shè)備、支付、二維碼等功能時(shí),都可以去調(diào)用相應(yīng)的API。所以,微信小程序的開(kāi)發(fā)足夠簡(jiǎn)單,可以快速開(kāi)發(fā)并實(shí)現(xiàn)。

當(dāng)然,利弊是共存的,微信小程序開(kāi)發(fā)起來(lái)雖然簡(jiǎn)單,但是限制也較多、靈活性卻不足。在微信小程序中,要更新視圖就只能修改data,而視圖層也只能通過(guò)事件向邏輯層傳遞交互信息。前端傳統(tǒng)的Dom操作在微信小程序中是不可用的,因?yàn)閣indow、document在微信小程序中都不存在,所以,只要涉及操作Dom的代碼均不可復(fù)用。微信小程序WXML提供的標(biāo)簽也比HTML要少很多,但是常見(jiàn)的標(biāo)簽都是有的,WXSS支持的樣式也比CSS要少一些。如果要將H5頁(yè)面移植到微信小程序,要修改的地方還比較多:

WXML標(biāo)簽與HTML標(biāo)簽并不一致,要重寫;

微信小程序無(wú)DOM交互能力,涉及DOM操作的代碼需要在小程序中多帶帶設(shè)計(jì);

網(wǎng)絡(luò)請(qǐng)求、媒體、文件、緩存、界面等相關(guān)內(nèi)容需要使用小程序提供的API來(lái)實(shí)現(xiàn),API的使用比較簡(jiǎn)單;

與上述內(nèi)容無(wú)關(guān)的JS邏輯代碼是可以復(fù)用的;

css代碼可復(fù)用率高,除了一些復(fù)雜的CSS3樣式外,基本移植可用。小程序額外提供了flex、rpx的實(shí)現(xiàn),做響應(yīng)式頁(yè)面變得更加容易。

綜上,微信小程序開(kāi)發(fā)簡(jiǎn)單,碼農(nóng)們可以快速上手,開(kāi)發(fā)出一個(gè)可用的小程序。但是,微信小程序限制也不少,不能操作DOM,支持的HTML標(biāo)簽和CSS樣式少一些,做一些炫酷的動(dòng)畫或者復(fù)雜的功能就比較困難。H5頁(yè)面移植到微信小程序要修改的地方也還比較多,主要是WXML標(biāo)簽、JS和HTML的交互及小程序提供的API功能部分。

微信小程序開(kāi)發(fā)姿勢(shì)

如果你要開(kāi)始開(kāi)發(fā)一款微信小程序了,那么正確的步驟是什么呢?我也不知道啊。。。以下我的個(gè)人推薦步驟:

先了解微信小程序?yàn)楹味?,從產(chǎn)品的角度去思考微信小程序的利與弊(對(duì)于程序員思考為什么小程序要如此設(shè)計(jì)、為什么里面有各種限制是非常有幫助的),推薦《一篇文章讀懂微信小程序(應(yīng)用號(hào))是什么?》、《你的產(chǎn)品適不適合做微信小程序?》;

整體認(rèn)識(shí)小程序的框架、設(shè)計(jì)理念、開(kāi)發(fā)的利弊;

通讀微信小程序官網(wǎng);

仔細(xì)閱讀小程序官網(wǎng)的開(kāi)發(fā)部分(https://mp.weixin.qq.com/debu...,下載微信小程序開(kāi)發(fā)者工具,體驗(yàn)官網(wǎng)提供的Demo;

開(kāi)始開(kāi)發(fā)微信小程序。

模塊化 JavaScript模塊化

微信小程序中,JS文件中聲明的變量和函數(shù)只在該文件中有效;不同的文件可以聲明相同名字的變量和函數(shù),不會(huì)相互影響。如果需要獲取全局的應(yīng)用實(shí)例,可以在App()中設(shè)置。

// app.js
App({
  globalData: 1
})

// a.js
// The localValue can only be used in file a.js.
var localValue = "a"
// Get the app instance.
var app = getApp()
// Get the global data and change it.
app.globalData++

此外,可以通過(guò)require()引入其他JS文件,在文件中可以通過(guò)module.exports來(lái)暴露模塊接口。

// common.js
function sayHello(name) {
  console.log(`Hello ${name} !`)
}
module.exports.sayHello = sayHello
// index.js
var common = require("common.js")
Page({
  helloMINA: function() {
    common.sayHello("MINA")
  }
})
WXML模塊化

WXML可以通過(guò)模板(template)來(lái)組織標(biāo)簽,使WXML拆分合理、清晰易讀。使用template標(biāo)簽來(lái)定義模版,使用name屬性指定模版名稱;通過(guò)import標(biāo)簽來(lái)引入模版,并使用is屬性來(lái)指定使用的模版名稱,data傳入屬性。

// template/msgItem.wxml
// index.wxml