国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

微信小程序開(kāi)發(fā)的基本流程步驟

2019-11-19 12:11:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一,微信小程序簡(jiǎn)介

1,微信小程序簡(jiǎn)稱小程序,張小龍?jiān)谖⑿殴_(kāi)課 Pro 上發(fā)布的小程序正式上線,時(shí)間是2017年1月9日。

2,微信小程序這個(gè)詞可以分解為“微信”和“小程序”兩部分

(1),其中“微信”可以理解為“微信中的”,指的是小程序的執(zhí)行環(huán)境;當(dāng)然微信在提供執(zhí)行環(huán)境的同時(shí)也延長(zhǎng)了用戶使用微信的時(shí)間。

(2),“小程序”是說(shuō)它首先是程序,然后具備輕便的特征。小程序并不像其他應(yīng)用那樣,它不需要安裝,而是通過(guò)掃描二維碼等打開(kāi)后直接執(zhí)行;用完以后也不需要卸載。這就是所謂用完即走的原則。

3,微信小程序,很多類似形態(tài)的應(yīng)用都采用類似的架構(gòu):

  • 使用 JSON 技術(shù)來(lái)表現(xiàn)應(yīng)用的配置信息。包含應(yīng)用的基本信息,頁(yè)面配置和路由,應(yīng)用全體的信息等。
  • 使用經(jīng)過(guò)定制 CSS+XML 技術(shù)來(lái)實(shí)現(xiàn)視圖層的描述。畫(huà)面元素,例如列表、按鈕、文本框、選擇框等都通過(guò) XML 語(yǔ)言來(lái)描述,遵從 XML 語(yǔ)法,對(duì)于頁(yè)面的共同風(fēng)格,使用 CSS 進(jìn)行定義。
  • 使用 JavaScript 語(yǔ)言來(lái)實(shí)現(xiàn)邏輯層結(jié)構(gòu)。包括用戶操作的處理,系統(tǒng) API 的調(diào)用等。
  • 架構(gòu)在視圖層和邏輯層之間提供數(shù)據(jù)和事件傳輸功能,從而盡量減少難度。由于類似應(yīng)有都屬于輕應(yīng)用,所以提供的功能都比較單一。

4,JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于 ECMAScript(W3C 制定的 JavaScript 規(guī)范)的一個(gè)子集,采用完全獨(dú)立于編程語(yǔ)言的文本格式來(lái)存儲(chǔ)和表示數(shù)據(jù)。簡(jiǎn)潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語(yǔ)言。易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。

5,XML(Extensible Markup Language),中文名為可擴(kuò)展標(biāo)記語(yǔ)言,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言。

在電子計(jì)算機(jī)中,標(biāo)記指計(jì)算機(jī)所能理解的信息符號(hào),通過(guò)此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種的信息,比如文章等。它可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。它非常適合萬(wàn)維網(wǎng)傳輸,提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。是 Internet 環(huán)境中跨平臺(tái)的、依賴于內(nèi)容的技術(shù),也是當(dāng)今處理分布式結(jié)構(gòu)信息的有效工具。早在1998年,W3C 就發(fā)布了 XML1.0 規(guī)范,使用它來(lái)簡(jiǎn)化 Internet 的文檔信息傳輸。

6,CSS層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來(lái)表現(xiàn) HTML 或 XML 等文件樣式的計(jì)算機(jī)語(yǔ)言。CSS 不僅可以靜態(tài)地修飾網(wǎng)頁(yè),還可以配合各種腳本語(yǔ)言動(dòng)態(tài)地對(duì)網(wǎng)頁(yè)各元素進(jìn)行格式化。CSS 能夠?qū)W(wǎng)頁(yè)中元素位置的排版進(jìn)行像素級(jí)精確控制,支持幾乎所有的字體字號(hào)樣式,擁有對(duì)網(wǎng)頁(yè)對(duì)象和模型樣式編輯的能力。

7,JavaScript 一種直譯式腳本語(yǔ)言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語(yǔ)言,內(nèi)置支持類型。它的解釋器被稱為 JavaScript 引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語(yǔ)言,最早是在 HTML 網(wǎng)頁(yè)上使用,用來(lái)給 HTML 網(wǎng)頁(yè)增加動(dòng)態(tài)功能。

二,注冊(cè)微信小程序

在創(chuàng)建自己的微信小程序之前,首先需要注冊(cè)小程序賬號(hào),有如下賬號(hào)類型:

具體的注冊(cè)流程,可以參考官方的簡(jiǎn)易教程

三,安裝工具,創(chuàng)建項(xiàng)目

第一步:下載微信小程序開(kāi)發(fā)者工具并安裝,下載路徑:

https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

進(jìn)到下載界面后,根據(jù)自己的操作系統(tǒng)選擇相應(yīng)的鏈接進(jìn)行下載,下載完成后進(jìn)行安裝。

第二步:安裝登錄工具

開(kāi)發(fā)者工具安裝完成后我們就可以將其打開(kāi),初次打開(kāi)會(huì)需要用微信掃碼登錄,如下圖,用手機(jī)微信掃一掃后確認(rèn)登錄就可以了。

第三步:選擇一個(gè)項(xiàng)目類型

登錄成功后,如果是第一次使用該工具會(huì)彈出選擇項(xiàng)目類型的窗口,如下圖:

第四步:創(chuàng)建一個(gè)項(xiàng)目

選擇項(xiàng)目類型成功后,會(huì)彈出創(chuàng)建項(xiàng)目的窗口,如下圖:

​ 在創(chuàng)建過(guò)程中,如果選擇的本地文件夾是個(gè)空文件夾會(huì)出來(lái)一個(gè)勾選項(xiàng)“建立云開(kāi)發(fā)快速啟動(dòng)模版”,為方便初學(xué)者了解微信小程序的基本代碼結(jié)構(gòu),請(qǐng)勾選此項(xiàng),勾選后,開(kāi)發(fā)者工具會(huì)幫助我們?cè)陂_(kāi)發(fā)目錄里生成一個(gè)簡(jiǎn)單的 demo,如下圖:

四,項(xiàng)目代碼結(jié)構(gòu)說(shuō)明與開(kāi)發(fā)

4.1,項(xiàng)目代碼結(jié)構(gòu)

點(diǎn)擊開(kāi)發(fā)者工具上側(cè)導(dǎo)航的“編輯器”,我們可以看到這個(gè)項(xiàng)目,已經(jīng)初始化并包含了一些簡(jiǎn)單的代碼文件。最關(guān)鍵也是必不可少的,是 app.js、app.json、app.wxss 這三個(gè)。其中,.js后綴的是腳本文件,.json后綴的文件是配置文件,.wxss后綴的是樣式表文件。微信小程序會(huì)讀取這些文件,并生成小程序?qū)嵗?/p>

下面我們簡(jiǎn)單了解這三個(gè)文件的功能,方便修改以及從頭開(kāi)發(fā)自己的微信小程序。

​ 1、app.js是小程序的腳本代碼。我們可以在這個(gè)文件中監(jiān)聽(tīng)并處理小程序的生命周期函數(shù)、聲明全局變量。調(diào)用框架提供的豐富的 API,如本例的同步存儲(chǔ)及同步讀取本地?cái)?shù)據(jù)。

2、​ app.json 是對(duì)整個(gè)小程序的全局配置。我們可以在這個(gè)文件中配置小程序是由哪些頁(yè)面組成,配置小程序的窗口背景色,配置導(dǎo)航條樣式,配置默認(rèn)標(biāo)題。注意該文件不可添加任何注釋。

3、app.wxss 是整個(gè)小程序的公共樣式表。我們可以在頁(yè)面組件的 class 屬性上直接使用 app.wxss 中聲明的樣式規(guī)則。

我們注意到,在實(shí)例程序的代碼中還有2個(gè)文件夾,一個(gè)是pages,一個(gè)是style,其中style是放通用樣式的一個(gè)文件夾,pages是存放所有頁(yè)面的文件夾。我們著重講一下這個(gè)pages.

4.2,小程序頁(yè)面文件構(gòu)成

在這個(gè)示例中,我們有七個(gè)頁(yè)面,index 頁(yè)面,即歡迎頁(yè),他們都在 pages 目錄下。微信小程序中的每一個(gè)頁(yè)面的【路徑+頁(yè)面名】都需要寫(xiě)在 app.json 的 pages 中,且 pages 中的第一個(gè)頁(yè)面是小程序的首頁(yè)。

每一個(gè)小程序頁(yè)面是由同路徑下同名的四個(gè)不同后綴文件的組成,如:index.js、index.wxml、index.wxss、index.json。.js后綴的文件是腳本文件,.json后綴的文件是配置文件,.wxss后綴的是樣式表文件,.wxml后綴的文件是頁(yè)面結(jié)構(gòu)文件。

​ index.wxml 是頁(yè)面的結(jié)構(gòu)文件:

<!--index.wxml--><view class="container"> <!-- 用戶 openid --> <view class="userinfo">  <button    open-type="getUserInfo"    bindgetuserinfo="onGetUserInfo"   class="userinfo-avatar"   style="background-image: url({{avatarUrl}})"  ></button>  <view>   <text>jackson影琪</text></view> </view> <view class="text-title">   <text>Hello world</text></view> </view>

本例中使用了<view/><button/><text/>來(lái)搭建頁(yè)面結(jié)構(gòu),綁定數(shù)據(jù)和交互處理函數(shù)。

​ index.js 是頁(yè)面的腳本文件,在這個(gè)文件中我們可以監(jiān)聽(tīng)并處理頁(yè)面的生命周期函數(shù)、獲取小程序?qū)嵗暶鞑⑻幚頂?shù)據(jù),響應(yīng)頁(yè)面交互事件等。

//index.jsconst app = getApp()Page({ data: {  avatarUrl: './user-unlogin.png',  userInfo: {},  logged: false,  takeSession: false,  requestResult: '' }, onLoad: function() {  if (!wx.cloud) {   wx.redirectTo({    url: '../chooseLib/chooseLib',   })   return  }  // 獲取用戶信息  wx.getSetting({   success: res => {    if (res.authSetting['scope.userInfo']) {     // 已經(jīng)授權(quán),可以直接調(diào)用 getUserInfo 獲取頭像昵稱,不會(huì)彈框     wx.getUserInfo({      success: res => {       this.setData({        avatarUrl: res.userInfo.avatarUrl,        userInfo: res.userInfo       })      }     })    }   }  }) }, onGetUserInfo: function(e) {  if (!this.logged && e.detail.userInfo) {   this.setData({    logged: true,    avatarUrl: e.detail.userInfo.avatarUrl,    userInfo: e.detail.userInfo   })  } }, onGetOpenid: function() {  // 調(diào)用云函數(shù)  wx.cloud.callFunction({   name: 'login',   data: {},   success: res => {    console.log('[云函數(shù)] [login] user openid: ', res.result.openid)    app.globalData.openid = res.result.openid    wx.navigateTo({     url: '../userConsole/userConsole',    })   },   fail: err => {    console.error('[云函數(shù)] [login] 調(diào)用失敗', err)    wx.navigateTo({     url: '../deployFunctions/deployFunctions',    })   }  }) }, // 上傳圖片 doUpload: function () {  // 選擇圖片  wx.chooseImage({   count: 1,   sizeType: ['compressed'],   sourceType: ['album', 'camera'],   success: function (res) {    wx.showLoading({     title: '上傳中',    })    const filePath = res.tempFilePaths[0]        // 上傳圖片    const cloudPath = 'my-image' + filePath.match(//.[^.]+?$/)[0]    wx.cloud.uploadFile({     cloudPath,     filePath,     success: res => {      console.log('[上傳文件] 成功:', res)      app.globalData.fileID = res.fileID      app.globalData.cloudPath = cloudPath      app.globalData.imagePath = filePath            wx.navigateTo({       url: '../storageConsole/storageConsole'      })     },     fail: e => {      console.error('[上傳文件] 失敗:', e)      wx.showToast({       icon: 'none',       title: '上傳失敗',      })     },     complete: () => {      wx.hideLoading()     }    })   },   fail: e => {    console.error(e)   }  }) },})

index.wxss 是頁(yè)面的樣式表:

/**index.wxss**/page { background: #f6f6f6; display: flex; flex-direction: column; justify-content: center;}.userinfo, .uploader, .tunnel { margin-top: 40rpx; height: 140rpx; width: 100%; background: #fff; border: 1px solid rgba(0, 0, 0, 0.1); border-left: none; border-right: none; display: flex; flex-direction: row; align-items: center; transition: all 300ms ease;}.userinfo-avatar { width: 100rpx; height: 100rpx; margin: 20rpx; border-radius: 50%; background-size: cover; background-color: white;}.userinfo-avatar:after { border: none;}.userinfo-nickname { font-size: 32rpx; color: #007aff; background-color: white; background-size: cover;}.userinfo-nickname::after { border: none;}.uploader, .tunnel { height: auto; padding: 0 0 0 40rpx; flex-direction: column; align-items: flex-start; box-sizing: border-box;}.uploader-text, .tunnel-text { width: 100%; line-height: 52px; font-size: 34rpx; color: #007aff;}.uploader-container { width: 100%; height: 400rpx; padding: 20rpx 20rpx 20rpx 0; display: flex; align-content: center; justify-content: center; box-sizing: border-box; border-top: 1px solid rgba(0, 0, 0, 0.1);}.uploader-image { width: 100%; height: 360rpx;}.tunnel { padding: 0 0 0 40rpx;}.tunnel-text { position: relative; color: #222; display: flex; flex-direction: row; align-content: center; justify-content: space-between; box-sizing: border-box; border-top: 1px solid rgba(0, 0, 0, 0.1);}.tunnel-text:first-child { border-top: none;}.tunnel-switch { position: absolute; right: 20rpx; top: -2rpx;}.disable { color: #888;}.service { position: fixed; right: 40rpx; bottom: 40rpx; width: 140rpx; height: 140rpx; border-radius: 50%; background: linear-gradient(#007aff, #0063ce); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); display: flex; align-content: center; justify-content: center; transition: all 300ms ease;}.service-button { position: absolute; top: 40rpx;}.service:active { box-shadow: none;}.request-text { padding: 20rpx 0; font-size: 24rpx; line-height: 36rpx; word-break: break-all;}.text-title{margin-top: 50%;}.text-title text{ font-size: 96rpx; font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;}

頁(yè)面的樣式表是非必要的。當(dāng)有頁(yè)面樣式表時(shí),頁(yè)面的樣式表中的樣式規(guī)則會(huì)層疊覆蓋 app.wxss 中的樣式規(guī)則。如果不指定頁(yè)面的樣式表,也可以在頁(yè)面的結(jié)構(gòu)文件中直接使用 app.wxss 中指定的樣式規(guī)則。

​ index.json 是頁(yè)面的配置文件:

​ 頁(yè)面的配置文件是非必要的。當(dāng)有頁(yè)面的配置文件時(shí),配置項(xiàng)在該頁(yè)面會(huì)覆蓋 app.json 的 window 中相同的配置項(xiàng)。如果沒(méi)有指定的頁(yè)面配置文件,則在該頁(yè)面直接使用 app.json 中的默認(rèn)配置。

{ "pages": [  "pages/index/index",  "pages/userConsole/userConsole",  "pages/storageConsole/storageConsole",  "pages/databaseGuide/databaseGuide",  "pages/addFunction/addFunction",  "pages/deployFunctions/deployFunctions",  "pages/chooseLib/chooseLib" ], "window": {  "backgroundColor": "#F6F6F6",  "backgroundTextStyle": "light",  "navigationBarBackgroundColor": "#F6F6F6",  "navigationBarTitleText": "jackson影琪",  "navigationBarTextStyle": "black" }}

運(yùn)行結(jié)果如下:

手機(jī)預(yù)覽

​ 開(kāi)發(fā)者工具上側(cè)菜單欄,點(diǎn)擊"預(yù)覽",掃碼后即可在微信客戶端中體驗(yàn)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 井陉县| 黄梅县| 图们市| 潍坊市| 昌乐县| 和静县| 南陵县| 漳平市| 巴林右旗| 方正县| 疏勒县| 鄂托克前旗| 苍南县| 绍兴市| 抚松县| 阿合奇县| 山丹县| 手机| 彭泽县| 堆龙德庆县| 五常市| 肇源县| 旅游| 新密市| 曲阳县| 五台县| 克什克腾旗| 喜德县| 固安县| 棋牌| 都江堰市| 松阳县| 德安县| 五峰| 当雄县| 新和县| 湛江市| 泸定县| 赤城县| 阜康市| 伊通|