微信小程式-01-項目組成文件介紹(入門篇)

来源:https://www.cnblogs.com/xpwi/archive/2018/09/15/9652573.html
-Advertisement-
Play Games

自古開篇先說兩句,寫這些筆記不是學慣用的,主要是後續分享一些遇到的坑,碰到過什麼樣的問題,怎麼去解決,如果你不是一個很耐心無看文章的人,建議去 網易雲課堂找一些課程,跟著別人的腳步或許會更有動力,我的筆記也是從哪裡學習,記一些小筆記,我覺得大學里做這件事是最合適的了,當然最重要的是有沒有興趣,如果沒 ...


自古開篇先說兩句,寫這些筆記不是學慣用的,主要是後續分享一些遇到的坑,碰到過什麼樣的問題,怎麼去解決,如果你不是一個很耐心無看文章的人,建議去 網易雲課堂找一些課程,跟著別人的腳步或許會更有動力,我的筆記也是從哪裡學習,記一些小筆記,我覺得大學里做這件事是最合適的了,當然最重要的是有沒有興趣,如果沒有興趣,就別把它當場一個學習的任務,找一項真正自己感興趣的,去深度瞭解,做到很精才是真正有意義的事

微信小程式-01-項目組成文件介紹

JSON 配置文件

  • 我們可以看到在項目的根目錄有一個 app.json 和 project.config.json,此外在 pages/logs 目錄下還有一個 logs.json
  • 我們依次來說明一下它們的用途。

小程式配置 app.json

  • app.json 是當前小程式的全局配置,包括了小程式的所有頁面路徑、界面表現、網路超時時間、底部 tab 等。新建的項目裡邊的 app.json 配置內容如下:
{
  //頁面路徑
  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ],
  //界面表現
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  }
}

我們簡單說一下這個配置各個項的含義:

  • pages欄位 —— 用於描述當前小程式所有頁面路徑,這是為了讓微信客戶端知道當前你的小程式頁面定義在哪個目錄
  • window欄位 —— 定義小程式所有頁面的頂部背景顏色,文字顏色定義等。
    其他配置項細節可以參考文檔 小程式的配置 app.json

工具配置 project.config.json

  • 通常大家在使用一個工具的時候,都會針對各自喜好做一些個性化配置
  • 例如界面顏色、編譯配置等等,當你換了另外一臺電腦重新安裝工具的時候,你還要重新配置
  • 考慮到這點,小程式開發者工具在每個項目的根目錄都會生成一個 project.config.json,你在工具上做的任何配置都會寫入到這個文件,當你重新安裝工具或者換電腦工作時,你只要載入同一個項目的代碼包,開發者工具就自動會幫你恢復到當時你開發項目時的個性化配置,其中會包括編輯器的顏色、代碼上傳時自動壓縮等等一系列選項
  • 其他配置項細節可以參考文檔 開發者工具的配置

頁面配置 page.json

  • 這裡的 page.json 其實用來表示 pages/logs 目錄下的 logs.json 這類和小程式頁面相關的配置
  • 如果你整個小程式的風格是藍色調,那麼你可以在 app.json 裡邊聲明頂部顏色是藍色即可。實際情況可能不是這樣,可能你小程式裡邊的每個頁面都有不一樣的色調來區分不同功能模塊,因此我們提供了 page.json,讓開發者可以獨立定義每個頁面的一些屬性,例如剛剛說的頂部顏色、是否允許下拉刷新等等
  • 其他配置項細節可以參考文檔 頁面配置 。

WXML 模板

  • 從事過網頁編程的人知道,網頁編程採用的是 HTML + CSS + JS 這樣的組合,其中 HTML 是用來描述當前這個頁面的結構,CSS 用來描述頁面的樣子,JS 通常是用來處理這個頁面和用戶的交互
  • 同樣道理,在小程式中也有同樣的角色,其中 WXML 充當的就是類似 HTML 的角色。打開 pages/index/index.wxml,你會看到以下的內容:
//view 想象成 div
<view class="container">
  <view class="userinfo">
    <button wx:if="{{!hasUserInfo && canIUse}}"> 獲取頭像昵稱 </button>
    <block wx:else>
      <image src="{{userInfo.avatarUrl}}" background-size="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
  </view>
  <view class="usermotto">
    <text class="user-motto">{{motto}}</text>
  </view>
</view>
  • 和 HTML 非常相似,WXML 由標簽、屬性等等構成。但是也有很多不一樣的地方,我們來一一闡述一下:
  • 標簽名字有點不一樣
  • 往往寫 HTML 的時候,經常會用到的標簽是 div, p, span,開發者在寫一個頁面的時候可以根據這些基礎的標簽組合出不一樣的組件,例如日曆、彈窗等等。換個思路,既然大家都需要這些組件,為什麼我們不能把這些常用的組件包裝起來,大大提高我們的開發效率
  • 從上邊的例子可以看到,小程式的 WXML 用的標簽是 view, button, text 等等,這些標簽就是小程式給開發者包裝好的基本能力,我們還提供了地圖、視頻、音頻等等組件能力
  • 多了一些 wx:if 這樣的屬性以及 {{ }} 這樣的表達式

MVVM 的開發模式

  • 在網頁的一般開發流程中,我們通常會通過 JS 操作 DOM (對應 HTML 的描述產生的樹),以引起界面的一些變化響應用戶的行為
  • 例如,用戶點擊某個按鈕的時候,JS 會記錄一些狀態到 JS 變數裡邊,同時通過 DOM API 操控 DOM 的屬性或者行為,進而引起界面一些變化
  • 當項目越來越大的時候,你的代碼會充斥著非常多的界面交互邏輯和程式的各種狀態變數,顯然這不是一個很好的開發模式,因此就有了 MVVM 的開發模式(例如 React, Vue),提倡把渲染和邏輯分離。簡單來說就是不要再讓 JS 直接操控 DOM,JS 只需要管理狀態即可,然後再通過一種模板語法來描述狀態和界面結構的關係即可
  • 小程式的框架也是用到了這個思路,下麵舉例

如果你需要把一個 Hello World 的字元串顯示在界面上

  • WXML 是這麼寫 :
 //寫一個變數占位
 <text>{{msg}}</text>
  • JS 只需要管理狀態即可:
this.setData({ msg: "Hello World" })
  • 通過 {{ }} 的語法把一個變數綁定到界面上,我們稱為數據綁定。僅僅通過數據綁定還不夠完整的描述狀態和界面的關係,還需要 if/else, for等控制能力,在小程式裡邊,這些控制能力都用 wx: 開頭的屬性來表達。
  • 更詳細的文檔可以參考 WXML

WXSS 樣式

  • WXSS 具有 CSS 大部分的特性,小程式在 WXSS 也做了一些擴充和修改
  • 新增了尺寸單位。在寫 CSS 樣式時,開發者需要考慮到手機設備的屏幕會有不同的寬度和設備像素比,採用一些技巧來換算一些像素單位。WXSS 在底層支持新的尺寸單位 rpx ,開發者可以免去換算的煩惱,只要交給小程式底層來換算即可,由於換算採用的浮點數運算,所以運算結果會和預期結果有一點點偏差
  • 提供了全局的樣式和局部樣式。和前邊 app.json, page.json 的概念相同,你可以寫一個 app.wxss 作為全局樣式,會作用於當前小程式的所有頁面,局部頁面樣式 page.wxss 僅對當前頁面生效
  • 此外 WXSS 僅支持部分 CSS 選擇器
  • 更詳細的文檔可以參考 WXSS 。

JS 交互邏輯

  • 一個服務僅僅只有界面展示是不夠的,還需要和用戶做交互:響應用戶的點擊、獲取用戶的位置等等。在小程式裡邊,我們就通過編寫 JS 腳本文件來處理用戶的操作
<view>{{ msg }}</view>
<button bindtap="clickMe">點擊我</button>
  • 點擊 button 按鈕的時候,我們希望把界面上 msg 顯示成 "Hello World",於是我們在 button 上聲明一個屬性: bindtap ,在 JS 文件裡邊聲明瞭 clickMe 方法來響應這次點擊操作:
Page({
  clickMe: function() {
    this.setData({ msg: "Hello World" })
  }
})
  • 響應用戶的操作就是這麼簡單,更詳細的事件可以參考文檔 WXML - 事件 。
  • 此外你還可以在 JS 中調用小程式提供的豐富的 API,利用這些 API 可以很方便的調起微信提供的能力,例如獲取用戶信息、本地存儲、微信支付等。在前邊的 QuickStart 例子中,在 pages/index/index.js 就調用了 wx.getUserInfo 獲取微信用戶的頭像和昵稱,最後通過 setData 把獲取到的信息顯示到界面上
  • 更多 API 可以參考文檔 小程式的API

更多文章鏈接:微信小程式


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

-Advertisement-
Play Games
更多相關文章
  • 目前大數據和人工智慧作為兩大熱門方向,不僅僅國家在政策上進行支持,同時國內以百度,阿裡為首的知名互聯網企業也正在積極的佈局大數據和人工智慧。 自 2015 年以來,中國的人工智慧政策密集出台,這也意味著,在全球競爭的背景下,人工智慧已經上升為國家意志。 而且最近首部高中AI教材發佈,標志著AI已經正 ...
  • 昨天一開發同事反饋一個存儲過程很慢,但是重編譯後,存儲過程就很快了。瞭解基本情況後,初步判斷是參數嗅探問題。那麼如何診斷定位、分析問題呢?下麵簡單介紹一下這次參數嗅探問題定位的流程過程。 首先查看該存儲過程的執行計劃相關信息: 如下截圖所示,此存儲過程是2018-09-12 9:03:01緩存的,最... ...
  • 使用閃回技術,實現基於磁碟上閃回恢復區的自動備份與還原。 一、恢復表對象 1.創建學生表 2.添加記錄 3.刪除表 4.資料庫回收站多一條新的記錄 二、找回表數據 1.按某條件刪除表記錄,例如 2.如果是刪了或修改裡面的數據,可以先建立一個快表將刪除修改之前狀態的數據找回到這個表中 3.QUICK_ ...
  • SQL語句沒寫好可能導致: 1)網速不給力,不穩定。 2)伺服器記憶體不夠,或者SQL 被分配的記憶體不夠。 3)sql語句設計不合理 4)沒有相應的索引,索引不合理 5)沒有有效的索引視圖 6)表數據過大沒有有效的分區設計 7)資料庫設計太2,存在大量的數據冗餘 8)索引列上缺少相應的統計信息,或者統 ...
  • 1、xcall.sh 批量命令腳本,例:xcall.sh jps ,查看hadoop101~ hadoop104的jps進程 2、xsync.sh 集群同步文件,分發文件腳本,例:xsync.sh /usr/loacl/test.sh,在hadoop101~hadoop104上的/usr/local ...
  • 一般使用dp,不使用px。sp啥時候用呢?給TextView設置文字大小的時候用。 ...
  • 線性佈局: 相對佈局: ...
  • 第一種:內部類的方式 第二種:匿名內部類 第三種按鈕點擊事件:讓當前類實現onClickListener介面。 第四種按鈕的點擊事件: 如果將click方法中的View v去掉或者方法名不是click都會報異常。 原因是什麼呢? 查看View源碼得知: 查看View源碼裡面的onClick屬性: 里 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...