我的微信小程式入門踩坑之旅

来源:http://www.cnblogs.com/moustache/archive/2016/12/01/6122913.html
-Advertisement-
Play Games

前言 更好的閱讀體驗請:我的微信小程式入門踩坑之旅 小程式出來也有一段日子了,剛出來時也留意了一下。不過趕上生病,加上公司里也有別的事,主要是自己犯懶,就一直沒做。這星期一,趕緊趁著這股熱乎勁,也不是很忙,終於磨磨唧唧的寫了個小demo,(當然還有好多介面沒有使用)。 預計閱讀時間:5min 正文 ...


前言

更好的閱讀體驗請:我的微信小程式入門踩坑之旅

小程式出來也有一段日子了,剛出來時也留意了一下。不過趕上生病,加上公司里也有別的事,主要是自己犯懶,就一直沒做。這星期一,趕緊趁著這股熱乎勁,也不是很忙,終於磨磨唧唧的寫了個小demo,(當然還有好多介面沒有使用)。

預計閱讀時間:5min

正文

介紹

小程式的框架,挺像Vue的。

wxml

<view> Hello {{name}}! </view>
<button bindtap="changeName"> Click me! </button>

  


js部分
 

// This is our App Service.
// This is our data.
var helloData = {
name: 'WeChat'
}
 
// Register a Page.
Page({
data: helloData,
changeName: function(e) {
// sent data change to view
this.setData({
name: 'MINA'
})
}
})

  


開發者通過框架將邏輯層數據中的 name 與視圖層的 name 進行了綁定,所以在頁面一打開的時候會顯示 Hello WeChat!
 

當點擊按鈕的時候,視圖層會發送 changeName 的事件給邏輯層,邏輯層找到對應的事件處理函數
邏輯層執行了 setData 的操作,將 name 從 WeChat 變為 MINA,因為該數據和視圖層已經綁定了,從而視圖層會自動改變為 Hello MINA!

工具: 微信 web 開發者工具
我一般在這裡只預覽效果用。

app.json

app.json文件來對微信小程式進行全局配置,決定頁面文件的路徑、視窗表現、設置網路超時時間、設置多 tab 等。

改變pages里配置,會更改啟動程式時的主頁面。
window是設置頁面的視窗表現,包括狀態欄,導航欄顏色 等等。
tarbar是底部tab欄的表現。
官方還有 networkTimeout和 debug選項,在這裡沒有配置。
networkTimeout可以設置各種網路請求的超時時間。

 

{
"pages": [
"pages/index/other",
"pages/other/index",
"pages/logs/logs",
"pages/login/login",
"pages/douban/douban",
"pages/douban/user",
"pages/other/comment"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#3CB371",
"navigationBarTitleText": "Ed Glayxe",
"navigationBarTextStyle": "light",
"backgroundColor": "#3CB371"
},
"tabBar": {
"list": [{
"pagePath": "pages/index/index",
"text": "我的",
"iconPath": "images/tabList/my_a.png",
"selectedIconPath": "images/tabList/my_b.png"
}, {
"pagePath": "pages/logs/logs",
"text": "日誌",
"iconPath": "images/tabList/log_a.png",
"selectedIconPath": "images/tabList/log_b.png"
}, {
"pagePath": "pages/other/other",
"text": "段子",
"iconPath": "images/tabList/joke_a.png",
"selectedIconPath": "images/tabList/joke_b.png"
}, {
"pagePath": "pages/login/login",
"text": "登錄",
"iconPath": "images/tabList/Login_a.png",
"selectedIconPath": "images/tabList/Login_b.png"
}, {
"pagePath": "pages/douban/douban",
"text": "用戶列表",
"iconPath": "images/tabList/user_a.png",
"selectedIconPath": "images/tabList/user_b.png"
}]
}
}

 

  


頁面文件

app.js、app.json、app.wxss這三個文件是必不可少的文件。.js尾碼的是腳本文件,.json尾碼的文件是配置文件,.wxss尾碼的是樣式表文件。微信小程式會讀取這些文件,並生成小程式實例。這些都是公共文件。
在我的wxss里引入了weui的wxss 有的頁面使用了它的UI。

Pages 裡面是對應的頁面。每個對應的頁面里都有 相應的js wxml wxss文件。對文件進行配置。

在common文件夾了 寫了一個評論template 嘗試了一下引入模板。
在utils里封裝了一下內部的方法。

問題

在小程式里支持flex佈局,還是挺不錯的。
我有時佈局的時候都給寫個html文件,在瀏覽器里看看樣式。然後照搬到微信小程式里。但是我寫的頁面並不複雜。並不能完全的發現更多的不同。
在小程式里試圖層為view ,但它並不像div一樣,view 和text在一起會重疊。我覺得相當於 div和span。
還有一些CSS樣式並不支持。

數據渲染:

這個用flex佈局寫的,頁面比較簡單。

我記得昨天有個東西我找了好久,就是
“enablePullDownRefresh”: true。允許用戶下拉。
一開始我以為這是自己寫的。這是配置在json文件里。官方的文件幾乎沒怎麼看。。然後就尷尬了。

var util = require("../../utils/util.js");
var app = getApp();
 
Page({
data: {
textDataList: [],
tempid: 0,
lastid: 0
},
onLoad: function() {
util.alertLoading('數據載入中', 2000);
this.loadData();
},
refreshData: function() {
util.alertLoading('刷新中', 2000);
this.loadData();
 
},
loadData: function() {
var that = this;
var url = 'http://api.budejie.com/api/api_open.php';
var requireData = { a: 'list', c: 'data', type: '29' };
util.request(url, requireData, function(res) {
var newData = res.data;
that.setData({
textDataList: newData.list,
tempid: newData.list[0].id
})
console.log(that.data.tempid);
 
})
},
onReachBottom: function() {
util.alertLoading("載入中!", 2000);
console.log("載入這個沒做 = =!");
},
onPullDownRefresh: function() {
util.alertLoading("刷新中!", 1000);
var that = this;
var url = 'http://api.budejie.com/api/api_open.php';
var requireData = { a: 'list', c: 'data', type: '29' };
util.request(url, requireData, function(res) {
var newData = res.data;
that.setData({
textDataList: newData.list,
lastid: newData.list[0].id
})
console.log(that.data.lastid);
});
if (this.data.lastid === this.data.tempid) {
util.alertSuccess("已經是最新了", 1000);
}
}
})

  


後續
微信小程式思維導圖(來源於網路)

快下班了,其實寫之前我想寫的更詳細一點,但更多的介紹我想沒有比官方更清楚的。

我覺得最好的學習方式就是擼一遍代碼,比看10個demo有用的多。

時間倉促,頁面很簡單。也希望把你的demo分享給我互相學習。感謝你的閱讀,

Bye。

項目地址: https://github.com/miloers/WxSmall


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

-Advertisement-
Play Games
更多相關文章
  • 單例模式: 分析: 1、單例模式,從字面意思上理解,“單例”,即只有唯一一個實例,通常情況下,定義一個類,然後通過new ClassName()方式來產生具體對象,然而這樣,破壞了一個類只有一個實例,怎麼處理該問題呢?將類的具體化放在類的構造函數來完成。 2、如上方式解決了單例問題,然而,外界如何才 ...
  • 本文地址 原文地址 對於大型網站技術的理解,可以從架構技術原理的組織方式以架構要素作為維度,從系統性能、可用性、伸縮性、擴展性、安全性幾個角度闡述網站架構的技術要點。還有另一種較為直觀的組織方式,是從不同架構層次所使用的網站架構技術這個維度進行描述的。 網站系統架構層次如下圖所示: 這個網站架構層次 ...
  • 很實用的一款插件jQuery瀑布流從不同方向載入3種效果演示線上預覽 下載地址 實例代碼 <section class="grid-wrap"> <ul class="grid swipe-right" id="grid"> <li> <a href="#"><img src="/api/jq/57 ...
  • 一、HTML5新增屬性 1.1、contextmenu contextmenu的作用是指定右鍵菜單。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="div1" ...
  • 本文介紹了css3中的box-sizing屬性,在這之前讀者需要預備知識width的範圍。 瀏覽器的支持情況 box-sizing屬性 box-sizing屬性可以有三個值:content-box(defalut),border-box屬性。 <style> div{ width:100px; he ...
  • 1)在折線圖中,有時我們不想讓太多折線顯示,那麼就隱藏,點擊legend區域文字再顯示。 比如我們要隱藏的折線叫”聯盟廣告“,代碼如下 在series中依然有它相關的數據 這樣,當我們點擊的時候,折線就顯示了。 2)折線坐標軸太粗,不夠細?顏色不好看? 那麼,可以這樣改 y軸也同理。 3)分隔線顏色 ...
  • 目錄 一、HTML5概要 1.1、為什麼需要HTML5 1.2、什麼是HTML5 1.3、HTML5現狀及瀏覽器支持 1.4、HTML5特性 1.5、HTML5優點與缺點 1.5.1、優點 1.5.2、缺點 1.6、HTML5效果展示 1.7、HTML5學習與開發工具 1.7.1、基礎要求 1.7. ...
  • 因為項目需要,要求實現類似力導圖效果的圖,我就瞄上了echarts。 註意事項1:由於我的項目要部署到內網,所以js文件要在本地,網上大多力導圖都是echarts2的,而其又依賴zrender基礎庫,下載的echarts2是2.2.7版本,但是去zrender官網下載的2.1版本,用起來說版本最低要 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...