小程式隨筆

来源:https://www.cnblogs.com/luozhijian0120/archive/2018/03/12/8549936.html
-Advertisement-
Play Games

很久沒寫過筆記一類的東西了,從剛開始的996持續半年,直到最近,剛好這幾天有空,順便總結一下開發小程式的一些心路歷程。 在這裡呢順便打個廣告,小程式名字叫“一拍即傳”。 最近半年多呢一直在開發小程式,其實小程式跟傳統的web開發是極其相似的,當然也有不少不同的點,接下來 進入正題: 一開始學習小程式 ...


很久沒寫過筆記一類的東西了,從剛開始的996持續半年,直到最近,剛好這幾天有空,順便總結一下開發小程式的一些心路歷程。

 

在這裡呢順便打個廣告,小程式名字叫“一拍即傳”。

 

最近半年多呢一直在開發小程式,其實小程式跟傳統的web開發是極其相似的,當然也有不少不同的點,接下來 進入正題:

一開始學習小程式的第一步當然是看官方文檔咯。

首先 先說說結構部分,結構部分的代碼 當然跟傳統的H5語法一樣

在這裡,H5 與 小程式的相同點 與 不同點,想必作為前端也一目瞭然了,同樣的語法,不同的標簽,比如圖中 view 標簽類似於 H5裡面的div標簽。

text標簽 類似於 span一類的 常用的放置文案的標簽。 image相當於強化版的img標簽。

當然從圖中,觀眾朋友們也能看到 除了標簽不一樣以外,有的標簽上的屬性 也是H5中沒有的,例如image上面的 mode ,用於規定圖片填充和裁剪的方式。

hidden =“{{something}}”  是否隱藏此元素,somthing為true時隱藏。變數通過{{}}括起來,使用過某某前端框架的朋友看見這種語法是不是很熟悉呢?

再比如 view上的 hover-class 點擊態樣式, 在這裡就不具體挨個贅述了,文檔上有很詳細的描述,一個點舉一個例子就行了。

view 上的 bindtap 當然顧名思義了 綁定點擊事件。

 

js部分:

import {something} from "where"   //  這個大家一定很熟悉了

Page({

  data:{//data里的變數可直接綁定到頁面結構上,理同上圖中的errorView

    something:'',

    errorView:false

  }

  //下麵是頁面所需要用到的方法

  onLoad(){

    //to do something

    this.setData({
      something:'我是頁面所需的數據,可同過setData來修改'
    })

  }

  todosomething(){
    let test = 222
  }

})

 

在上面中的 onLoad 大家肯定註意到了,接下來看看小程式的生命周期:

onLaunch:小程式初始化

onLoad: 頁面載入時

onReady:頁面渲染完成時 (我個人在項目中的使用頻率不高)

onShow:頁面顯示時

onHide:頁面隱藏時

onUnload:頁面卸載時

在這裡呢 有的盆友可能有些疑問,onShow 和 onLoad 的區別? 

在第一次進入A頁面時,onLoad onReady onShow 都會執行

在實際業務場景下,經常存在從下一個頁面,返回到上一個頁面的情況。

wx.navigateTo(OBJECT):保存當前頁面,跳轉到小程式內某個頁面  //使用頻率較高

註意了:通過navigateTo是會保存當前頁面的,當A->B 再從B->A回來的時候  就會執行 onShow裡面的代碼 而不會執行onLoad裡面的代碼。

通常情況下 onLoad 經常伴隨著 onShow,但 onShow的時候 onLoad不一定會觸發。

 

樣式部分:

與傳統的css 幾乎沒有差別,當然,單位上的使用還是有差異的  -----rpx(rpx的具體意思 請查閱官方文檔)

文件結構:

上圖有個home.json

微信小程式是可以修改小程式的標題欄樣式(例如背景色,字體色) 頁面名稱的,甚至包括是否允許下拉刷新行為

 

app.json

是對整個小程式全局的一些配置

{   //對於要使用的頁面必須註冊
  "pages": [
  "pages/home/home",
  "pages/login/login"
  ],
  "window": {  //設置預設頁面的視窗表現
  "backgroundTextStyle": "#FFF",  //下拉背景字體、loading 圖的樣式
  "navigationBarBackgroundColor": "#FFF",  //背景
  "navigationBarTitleText": "一拍即傳",  //導航欄標題文字內容
  "navigationBarTextStyle": "black",  //導航欄標題顏色
  "onReachBottomDistance": "500",  //頁面上拉觸底事件觸發時距頁面底部距離,單位為px
  "enablePullDownRefresh": false   //設置下拉刷新
  },
  "networkTimeout": {
  "request": 20000,   //wx.request的超時時間,單位毫秒,預設為:60000
  "connectSocket": 20000,  //wx.connectSocket的超時時間,單位毫秒,預設為:60000
  "uploadFile": 20000,  //wx.uploadFile的超時時間,單位毫秒,預設為:60000
  "downloadFile": 60000  //wx.downloadFile的超時時間,單位毫秒,預設為:60000
  }
}

 

  測試部分: 測試時,各位同學請註意,如果你的代碼在電腦上的微信工具上測的時候,什麼問題都沒有,別急著高興。 因為這隻能說明大概/可能/也許是沒有問題的,maybe ~~~! 為什麼? 因為微信小程式到現在來說雖然比以前有很多改善,但仍然不完美,存在很多bug,要測試,必須在真機上測試跑通整個流程,並且! 要安卓和IOS的手機都要測, 由於微信小程式本身的一些原因 以及一些相容問題,可能會導致同一套代碼、樣式 在不同的平臺 不同的手機看到的真機效果可能不一樣(少數情況),有的是可以通過 嘗試其他辦法可以避免,有的則沒法避免。 舉個慄子: 在安卓上,很多應用都有用戶頭像 並且是圓角的,很多時候UI給的圖 是方的,通過我們設置圓角border-radius
來達到圓圖的效果,在這種情況下,安卓手機上 首次進入頁面時,設置過border-radius的圖片,在載入時 是方的,渲染完成後是圓的,四個角會閃一下,這個過程大概在0.4s左右。 再來一個慄子 0.0: 小程式里可以通過 wx.makePhoneCall(OBJECT)撥打電話,在3個月前,華為手機上無效,其他手機就沒有問題,而這種情況在電腦上的微信工具上是模擬測試不出來的。 再再來個慄子: 小程式裡面有一些原生組件,且層級比較高,在佈局時,我們前端得自己註意。提醒大家註意且賣個關子:textarea組件是個好東西
  溫馨提示: 在查看官方文檔時,一定要看!仔!細! bug&tiips 一般官方都寫在 每個部分說明的  最最最下邊! 有時候,當你因為“BUG” 頭疼時,這些tips有可能會是罪魁禍首。   以上都是小程式 傳統的寫法 和一些點,可能寫的不仔細,誰叫我不是專業的寫手(為自己找理由),具體的很多小程式的特色特性,盆友們可以查查官網文檔,在這裡就不一一贅述了。   最後本著買一送一的原則,再嘮最後幾句關於小程式框架的。   最近我們項目組剛把小程式重構了一遍,使用的是WEPY,與小程式原生寫法不同的是,wepy是一種類vue、強組件的框架,對於前端來說寫起來很友好,因為它很“自由”,看圖見真相:   本著取長補短的意思,我們小程式很多頁面是由N多個組件組成。wepy由於還很年輕,所以伴隨的BUG也是一堆堆的,尤其是在安卓上(沒錯!又是安卓)。 在安卓真機上,頁面進行渲染時,非組件的結構渲染完成只是一瞬間,而封裝的組件,快的時候0.N秒慢的時候1-2S也是有可能的。 目前經過初步排查,可能不是組件渲染的問題,封裝組件的結構和樣式跟 非封裝組件(小程式組件)都是正常情況下同時渲染出來,但組件裡面的欄位/文案需要很長時間才能渲染出來,而文案是通過傳值動態設置的。所以目前原因初步認為與組件傳值有關(時間緊迫,沒有深挖)。     以上內容,抽空隨筆的心得,可能寫的不夠仔細(時間也不多啊,程式猿 你懂的...),原創碼(lei)字(a),不喜勿噴!
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用戶註冊頁面以及js特效:1、表單聯動;2、正則表達式驗證。 一、html和css代碼(用table進行佈局,div也可以達到一樣的效果) 1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <style> 5 table{ 6 border-collapse: ...
  • 彈窗製作: 優化 css用模板字元串(裡面需要加一個style 標簽)插入的 ${'head'}.append(css) append()插入末尾prepend ()在 p 元素的開頭插入內容 $(".btn1").click(function(){ $("p").prepend("<b>Hello ...
  • 一,js的引入方式 1,script標簽內寫代碼 2,引入額外的js文件 二,js語言規範 1,註釋 2,結束符 JavaScript中的語句要以分號(;)為結束符。 三,js語言基礎 1,變數聲明 註意: 變數名是區分大小寫的。 推薦使用駝峰式命名規則。 保留字不能用做變數名。 四,Js數據類型 ...
  • 寫在前面的話:之前一直以為定時器的返回值是Object類型,所以timer初始化也是寫null,今天發現返回值是number,進而發覺這個返回值代表的是定時器的索引,指代這是第幾個定時器 個人覺得只用set/clearInterval方法就好,他可以實現另外的一個方法的所有功能 啟用定時器的方法有兩 ...
  • 一,css介紹 CSS(Cascading Style Sheet,層疊樣式表)定義如何顯示HTML元素。 當瀏覽器讀到一個樣式表,它就會按照這個樣式表來對文檔進行格式化(渲染)。 二,CSS語法 1,每個CSS樣式由兩個組成部分:選擇器和聲明。聲明又包括屬性和屬性值。每個聲明之後用分號結束。 2, ...
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 前言 提升頁面性能優化的常見方式: 1、資源壓縮合併,減少http請求 2、 非核心代碼非同步載入 非同步載入的方式 非同步載入的區別 3、利用瀏覽器緩存 緩 ...
  • 用原生js製作的簡易留言板。 具備以下功能:1、在輸入框輸入文字留言;2、將留言顯示在留言板;3、刪除留言。 html和css代碼: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <style> 6 ...
  • 今天用node寫後臺,登錄認證使用了token,然後就使用了簡單的jwt simple,但是發現設置的過期時間不對,一直沒有提示過期,但是明明是已經過期了的時間,於是檢查了下jwt simple的源代碼。 我的路徑,根目錄下\node_modules\jwt simple\lib\jwt.js jw ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...