Web前端_微信小程式實戰開發

来源:https://www.cnblogs.com/Vhaomei0452/archive/2019/07/17/11202479.html
-Advertisement-
Play Games

微信小程式開發實戰教程 一、微信小程式 它是一種混合開發的方式。 是安裝在微信中的程式(一個程式最多2M空間)。 1.1 註冊 1 2 點擊立即註冊:進入下方頁面 3 4 點擊小程式進入表單填寫頁面 5 6 填寫完畢之後提交,會讓你去郵箱中激活。激活之後就可以進入小程式開發了。 1.2 安裝開發工具 ...


微信小程式開發實戰教程

一、微信小程式

它是一種混合開發的方式。

是安裝在微信中的程式(一個程式最多2M空間)。

1.1 註冊

圖片1.png

2 點擊立即註冊:進入下方頁面

圖片2.png

4 點擊小程式進入表單填寫頁面

圖片3.png

6 填寫完畢之後提交,會讓你去郵箱中激活。激活之後就可以進入小程式開發了。

1.2 安裝開發工具

經過1.1註冊之後,我們有了開發賬號,但是沒有辦法憑空開發內容,我們需要下載開發工具。使用微信提供的開發工具進行開發。

下載地址:

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

進入之後,會看到讓你選擇版本的信息。

圖片4.png

選擇對應的版本進行安裝。 例如:我的電腦就是windows64位操作系統,那麼我就選Windows 64位

點擊之後就會開始下載

圖片5.png

下載完畢之後,得到一個安裝包

圖片6.png

雙擊進行安裝,下一步下一步直到結束。

安裝完畢之後,會自動打開登錄界面。有一個二維碼,通過微信掃描該二維碼登錄。

登錄之後

圖片7.png

1.3 創建小程式項目

點擊上圖中的小程式項目

圖片8.png

項目目錄:就是項目所在目錄

AppId: 小程式的id。你通過註冊之後會得到一個id。輸入它即可。

我們現在沒有註冊完畢,只能點擊測試小程式進行測試

項目名稱: 你當前創建的項目的名稱 這是唯一的。

填寫完畢之後:

圖片9.png

建立普通快速啟動模板: 如果勾選 則會在項目目錄下 自動創建一個demo案例

點擊確定之後,編輯器會啟動

圖片10.png

預覽視窗: 你編寫的小程式的預覽視窗,可以進行點擊 其實就是一個手機模擬器

功能視窗: 許多功能按鈕

目錄結構: 項目的目錄狀態

代碼編輯視窗:代碼可以在這裡編輯

調試視窗: 代碼書寫過程中,調試時,會在這裡輸出一些信息。也有控制台的功能也有文檔結構的功能。

1.4 目錄結構介紹

1.4.1 pages

這個文件夾,是用來放所有的小程式需要的頁面。

該文件夾中是一個一個的子文件夾,每一個子文件夾表示一個頁面。

預設創建出來的pages中有兩個:1 index 就代表index頁面  2 logs 就代表logs頁面

1.4.2 utils

這個文件夾,是用來放所有的工具的。可以刪除。

1.4.3 app.js

這個文件,叫做應用程式構造器。

整個應用程式的配置,都可以在這裡面書寫,主要是應用程式的聲明周期函數以及全局數據。

全局的腳本文件

App({

  /** onLaunch

   * 當小程式初始化完成時,會觸發 onLaunch(全局只觸發一次)

   */

  /** onShow

   * 當小程式啟動,或從後臺進入前臺顯示,會觸發 onShow

   */

  /**onHide

   * 當小程式從前臺進入後臺,會觸發 onHide

   */  

  /** onError

   * 當小程式發生腳本錯誤,或者 api 調用失敗時,會觸發 onError 並帶上錯誤信息

   */

})

 

1.4.4 app.json

這個文件,是小程式的配置文件。

配置的是小程式的內容。

這是一個JSON文件 需要使用符合規範的JSON語法。

key必須要使用雙引號

不能有註釋

對象的最後一個屬性值之後不能有逗號

 

pages: 配置當前小程式在運行過程中所需要的頁面

它的值是一個數組,每一個成員是一個頁面文件的路徑 本質上是在說明index.wxml 但是可以省略尾碼

它有一個特點:如果在添加完某一項並保存之後,該文件和文件夾還沒有存在,則會自動創建出來

window: 配置小程式的界面的

"window"

    "backgroundTextStyle": 背景文字顏色

    "navigationBarBackgroundColor": 導航部分的背景顏色

    "navigationBarTitleText":  導航標題文本

    "navigationBarTextStyle":  導航文本顏色

"tabBar": 底部按鈕

"list": 每一個按鈕都配置在這裡面 它是一個數組

數組的成員是對象

        "pagePath": 點擊該按鈕的時候跳轉到哪個頁面 該屬性的值必須是pages數組中的某一項

        "text":  文本

        "iconPath": 圖標路徑,

        "selectedIconPath": 選中時候的圖標路徑

 

1.4.5 app.wxss

其實就是css文件。它裡面配置的內容是全局樣式。類似於我們的reset.css

這是一個全局樣式文件。會自動應用在所有頁面中。

1.4.6 project.config.json

這是針對項目的配置。

1.5 局部文件

pages是一個文件夾,該文件夾內是子文件夾,每一個子文件夾代表一個頁面。

子文件夾內:

1.5.1 局部腳本

.js文件: 局部腳本文件 該文件只對當前頁面生效

Page({

 

  /**data

   * 頁面的初始數據

   */

  /** onLoad

   * 生命周期函數--監聽頁面載入

   */

  /**onReady

   * 生命周期函數--監聽頁面初次渲染完成

   */  

  /**onShow

   * 生命周期函數--監聽頁面顯示

   */  

  /**onHide

   * 生命周期函數--監聽頁面隱藏

   */  

  /**onUnload

   * 生命周期函數--監聽頁面卸載

   */  

  /**onPullDownRefresh

   * 頁面相關事件處理函數--監聽用戶下拉動作

   */

  /**onReachBottom

   * 頁面上拉觸底事件的處理函數

   */  

  /**onShareAppMessage

   * 用戶點擊右上角分享

   */

})

1.5.2 局部樣式

位於頁面內的wxss文件,是針對當前頁面的局部樣式。與全局app.wxss一起負責當前頁面的樣式。如果有衝突,優先使用當前頁面的wxss樣式。

1.5.3 頁面骨架

頁面內有一個wxml文件,用於搭建當前頁面的骨架。

html文件內的標簽,我們叫做元素。

wxml文件內的標簽,我們叫做組件。因為對html元素進行了封裝。所以叫做組件。

 

 

二、混合開發

從一開始的瀏覽器只是一個內容發佈器開始,到後來的WebApp。

本質上都是在網頁端做事情。

Hybird就是混合開發。它的意思是: 一處開發,多端使用。

微信小程式就是屬於混合開發。

混合開發有三種形式:

1 hybird 瀏覽器渲染

2 reactnative 原生API

3微信小程式

三、屬性

對於一個html來說,內容是由標簽構成的。對於JS來說,我們稱標簽為 “元素”。

對於一個wxml來說,內容是由標簽構成的。對於JS來說,我們成標簽為“組件”。

其實,wxml就是對html的標簽進行了封裝。封裝之後,就不是元素了,而是組件。也不可以使用jQuery等內容。

3.1 通用屬性

對於html的標簽來說

標準屬性分為兩部分

一部分是所有的標簽都有的屬性(通用屬性)

另一部分是某一些標簽特有的屬性(特有屬性)

對於wxml的標簽來說

標準屬性分為兩部分

一部分是所有標簽都有的屬性(通用屬性)

另一部分是某一些標簽特有的屬性(特有屬性)

wxml中的通用屬性:

id  組件的id

class 用於通過類的形式設置樣式

style 行內樣式

hidden 用於隱藏組件

data-* 自定義屬性

bind* | catch* 事件屬性

非通用屬性:

image組件的src屬性等

四、數據相關

頁面所需的數據定義在對應的js文件的對象中。 屬性名叫做data。

微信小程式是屬於數據驅動。

頁面初始化時所需要的數據都必須先定義。

數據渲染的過程就是將對應的數據插入到頁面中的過程。(插值的過程)

插值語法: {{}}

註:它裡面並沒有提供一個真正的js環境,只是一個偽環境。 只能夠執行簡單的運算 而不能夠調用方法。

之前遇見過的插值語法:

underscore: <%=%>

MVC中: <%%>

ejs中: <%%>

ES6中: ${}

less中: @{}

sass中:  #{}

4.1 插值

插值模板:

1 <view>{{num * 2}}</view>

2 <view>{{title.toUpperCase()}}</view>

插值數據的定義:

1 data: {

2   num: 123,

3   title: "aichuangketang"

4 }

渲染之後:

圖片11.png

 

4.2 修改數據

要使用頁面去修改數據:

this.setData(option);

option 是一個對象

key: 要修改的屬性層級字元串 可以是單層級 可以是多層級

value: 要修改的對應key的值

demo:

更改數據之前:

圖片12.png

更改代碼:

1 onLoad: function (options) {

2   var me = this;

3   console.log("index頁面頁面載入")

4   setTimeout(function() {

5     me.setData({

6       title: "愛創課堂",

7       "obj.name": "王老四"

8     })

9     console.log(me)

10   }, 3000)

11 },

代碼執行之後:

圖片13.png

4.3 數據丟失

更改數據,一定要通過setData方法來修改。因為它是微信提供的方法。

如果使用點語法或者方括弧語法直接修改屬性的值。則無法渲染到頁面上。這就叫做數據丟失。

註:儘量只更改關鍵的信息。

demo:

更改數據之前:

圖片14.png

 更改代碼:

1 setTimeout(function() {

2   me.data.title = "愛創課堂";

3   console.log(me.data)

4 }, 3000)

數據狀態:

圖片15.png

頁面狀態:

圖片16.png

數據已經被修改,但是頁面沒有發生變化。

五、事件

根據事件的特性,有兩類

所有組件都擁有的事件 通用事件

touchstart 觸摸開始

touchend 觸摸結束

touchmove 觸摸移動

touchcancel 觸摸取消

tap 輕按

longtap 長按

longpress 長按

transitionend 過渡完成

animationstart 動畫開始

animationend 動畫結束

animationinteration 動畫執行一次就觸發一次

還有一類是某些(個)特定組件的特有事件

例如表單的提交事件

根據事件的綁定方式,也可以分成兩類

一類是冒泡事件

bind[eventName]

另一類是不冒泡事件

catch[eventName]

5.1 綁定冒泡事件

組件結構:

1 <!--pages/event/event.wxml-->

2 <view bindtap='parent'>

3     <view bindtap='show'>我是一個組件</view>

4 </view>

對應的js代碼:

1 // pages/event/event.js

2 Page({

4   /**

5    * 頁面的初始數據

6    */

7   data: {

8   

9   },

10   // 定義show事件

11   show: function() {

12     console.log("點擊我了");

13   },

14   // 定義parent事件

15   parent: function() {

16     console.log("點擊到爸爸了")

17   }

18 })

點擊之後:兩個事件都會輸出

16後1.png

 

5.2 綁定不冒泡事件

組件結構:

1 <!--pages/event/event.wxml-->

2 <view bindtap='parent'>

3     <view catchtap='show'>我是一個組件</view>

4 </view>

代碼

1 // pages/event/event.js

2 Page({

4   /**

5    * 頁面的初始數據

6    */

7   data: {

8   

9   },

10   // 定義show事件

11   show: function() {

12     console.log("點擊我了");

13   },

14   // 定義parent事件

15   parent: function() {

16     console.log("點擊到爸爸了")

17   }

18 })

點擊之後:只有子元素的事件觸發 父元素的事件沒有觸發

16後.png

5.3 事件對象

查看事件對象:

圖片17.png

changedTouches: 改變的手指的列表

currentTarget: 綁定事件的組件

id: 當前組件的id

offsetLeft: 該組件的距離父組件的left值

offsetTop: 該組件的距離父組件的top值

dataset: 該組件的自定義數據

detail: 手指位置

target: 觸發事件的組件

timeStamp:頁面載入到事件觸發的時間間隔

touches: 手指列表

type: 事件類型


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Node.js的應用領域 NodeJS宣稱其目標是“旨在提供一種簡單的構建可伸縮網路程式的方法”; Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。Node.js 的包管理器 npm ...
  • JsonServer 主要的作用就是搭建本地的數據介面,創建json文件,便於調試調用 是一個 Node 模塊,運行 Express 伺服器,可以指定一個 json 文件作為 api 的數據源 官網:https://www.npmjs.com/package/json-server 安裝全局的jso ...
  • 在曾經,我們只能用A.indexof(B)來判斷A中是否含有B字元串; 現在在ES6中 有了: includes(), startswith(),endswith() reapt()重覆次數; 輸出 `是一個新增的運算符,表示模板字元串。 輸出: 好高興啊,我買了一個手機,花了10元,我很高興啊!、 ...
  • 內邊距和外邊距之間即為border,可以設置邊框,改變外觀; 而邊距可以調整齣所有想要的距離效果。 補充: ...
  • 前些日子無聊的時候學了下前端,說實話沒有美感前端和搬磚沒有區別,唯一值得一提的就是他的佈局方法。我的這個方法用於寫死網頁,不含各種框架的自適應性功能,而且主要想記錄一下思想。 寫前端不同於演算法優化,演算法中經常是能少一個數組就少一個數組,而前端只要保證不亂,多套幾個div沒有任何關係,也沒人會深究你浪 ...
  • 在我們進入主題前,我先先看下獲取網址URL的方法: window.location.href // 設置或獲取整個URL為字元串 window.location.hash // 設置或獲取href屬性中在井號#後面的部分參數 window.location.search // 設置或獲取href屬性 ...
  • 摘要: mpvue中頁面之間傳值(註意:是頁面之間,不是組件之間) 場景:A頁面跳轉B頁面,在B頁面選擇商品,將商品名帶回A頁面並顯示 使用api: getCurrentPages step1: A頁面js: 先定義一個全局的對象that,然後在mouted中把this賦給that step2: B ...
  • 摘要: 小程式索引選擇器,點擊跳轉相應條目,索引可滑動,滑動也可跳轉 場景:城市選擇列表, 汽車品牌選擇列表 所用組件: scroll-view(小程式原生) https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...