小程序學習(二)基本結構與文件的類型


小程序學習(二)基本結構與文件的類型

注:因為一些原因,之前學習了一段小程序之后就斷了,沒有繼續學習。現在開始繼續學習小程序的開發。

學習一些新的東西,一般都是從官方給出的dome案例開始學習的,官方給出的Dome一般比較容易理解,也有一些詳細的注解和官方的說明文檔,學習起來比較快。下面就開始學習小程序官方給出的Dome。

因為小程序的功能更新很快,可能你看到這個文章的時候,小程序已經推出了很多的新的功能。所以功能還是以官方最新的Dome為准。

 

一、下載Dome   

官方Dome 下載地址 。我下載的版本是2017011

 

二、打開Dome項目

使用小程序開發工具打開官方的Dome。打開工具,選擇小程序開發,選擇添加一個項目,將Dome項目添加進來。

添加項目時要填寫AppID,當然也可以不填寫,但是沒有AppID,一些功能可能會體驗不了,所以建議還是申請一個小程序的賬號。

賬號申請的流程和工具的使用,請看上一篇文章 小程序學習(一)入門學習 ,也可以看官方給出的說明。

下面就是項目打開后的界面,首先要了解的是整個程序的目錄結構和文件

 

三、了解小程序項目結構

折騰半天,終於可以一睹小程序真面目了。

首先在根目錄下,有四個文件夾 image、page、util、vendor和四個文件app.js、app.json、app.wxss、config.js

從名稱名稱看,比較容易理解

image :存放圖片文件

page :存放頁面文件

util :一般存放一些公用、通用的工具

vendor :一般存放一些第三方的組件,插件

文件應該都認識,js文件,json文件,只有一個wxss比較陌生。

其中 .js后綴的是腳本文件,.json后綴的文件是配置文件,.wxss后綴的是樣式表文件 (一般前端的樣式文件是css,這個叫wxss,我理解為"微信ss")

 

app.js

是小程序的腳本代碼。我們可以在這個文件中監聽並處理小程序的生命周期函數、聲明全局變量。調用框架提供的豐富的 API。

可以理解成.Net中的Global文件。其中onLoauch、onShow、onHide、globalData分別為:頁面初始化、頁面顯示、頁面隱藏和全局數據。

getUserOpenId 是一個方法,獲取用戶的openId,給全局數據賦值。

 1 const openIdUrl = require('./config').openIdUrl
 2 
 3 App({
 4   onLaunch: function () {
 5     console.log('App Launch')
 6   },
 7   onShow: function () {
 8     console.log('App Show')
 9   },
10   onHide: function () {
11     console.log('App Hide')
12   },
13   globalData: {
14     hasLogin: false,
15     openid: null
16   },
17   // lazy loading openid
18   getUserOpenId: function(callback) {
19     var self = this
20 
21     if (self.globalData.openid) {
22       callback(null, self.globalData.openid)
23     } else {
24       wx.login({
25         success: function(data) {
26           wx.request({
27             url: openIdUrl,
28             data: {
29               code: data.code
30             },
31             success: function(res) {
32               console.log('拉取openid成功', res)
33               self.globalData.openid = res.data.openid
34               callback(null, self.globalData.openid)
35             },
36             fail: function(res) {
37               console.log('拉取用戶openid失敗,將無法正常使用開放接口等服務', res)
38               callback(res)
39             }
40           })
41         },
42         fail: function(err) {
43           console.log('wx.login 接口調用失敗,將無法正常使用開放接口等服務', err)
44           callback(err)
45         }
46       })
47     }
48   }
49 })

 

app.json

是對整個小程序的全局配置。我們可以在這個文件中配置小程序是由哪些頁面組成,配置小程序的窗口的背景色,配置導航條樣式,配置默認標題。

需要注意的一點是:該文件不可添加任何注釋,這個還是比較少見的。

 1 {
 2   "pages": [
 3     "page/component/index",
 4 
 5     "page/component/pages/view/view",
 6     "page/component/pages/scroll-view/scroll-view",
 7     "page/component/pages/swiper/swiper",
 8 
 9     "page/API/pages/storage/storage"
10   ],
11   "window": {
12     "navigationBarTextStyle": "black",
13     "navigationBarTitleText": "演示",
14     "navigationBarBackgroundColor": "#F8F8F8",
15     "backgroundColor": "#F8F8F8"
16   },
17   "tabBar": {
18     "color": "#7A7E83",
19     "selectedColor": "#3cc51f",
20     "borderStyle": "black",
21     "backgroundColor": "#ffffff",
22     "list": [{
23       "pagePath": "page/component/index",
24       "iconPath": "image/icon_component.png",
25       "selectedIconPath": "image/icon_component_HL.png",
26       "text": "組件"
27     }, {
28       "pagePath": "page/API/index",
29       "iconPath": "image/icon_API.png",
30       "selectedIconPath": "image/icon_API_HL.png",
31       "text": "接口"
32     }]
33   },
34   "networkTimeout": {
35     "request": 10000,
36     "connectSocket": 10000,
37     "uploadFile": 10000,
38     "downloadFile": 10000
39   },
40   "debug": false
41 }

pages:注明該小程序下面所有的頁面,官方的dome遠不止上面這些頁面,我這里只是選擇一部分貼出。

window:默認頁面的窗口的標題、樣式等信息

tabBar:底部導航的樣式、菜單數量、菜單的圖標和鏈接頁面等信息

networkTimeout:各種網絡請求的超時時間

debug:是否開啟調試模式

 

app.wxss

整個小程序的公共樣式表。在所有的小程序頁面上可以直接使用該文件里面的樣式。這個里面樣式的寫法和CSS樣式的寫法基本是一致的,也支持CSS3的一些特性。

 1 .demo-text-3{
 2   position: relative;
 3   align-items: center;
 4   justify-content: center;
 5   background-color: #F1F1F1;
 6   color: #353535;
 7   font-size: 36rpx;
 8 }
 9 .demo-text-3:before{
10   content: 'C';
11   position: absolute;
12   top: 50%;
13   left: 50%;
14   transform: translate(-50%, -50%);
15 }

 

 

config.js

小程序的配置文件。這個在之前的小程序中是沒有的。文件中主要的配置信息是一些連接服務器接口的地址。文件里推薦的騰訊雲的服務器,騰訊提供了現有的小程序后台的解決方案,可以直接部署在騰訊雲的服務器上使用。這里的相關配置也是參照騰訊提供的小程序后台設置的。有自己服務器的,也可以使用自己服務器上的后台接口地址。

 1  1 // 此處主機域名是騰訊雲解決方案分配的域名
 2  2 // 小程序后台服務解決方案:https://www.qcloud.com/solution/la
 3  3 
 4  4 var host = "14592619.qcloud.la"
 5  5 
 6  6 var config = {
 7  7 
 8  8     // 下面的地址配合雲端 Server 工作
 9  9     host,
10 10 
11 11     // 登錄地址,用於建立會話
12 12     loginUrl: `https://${host}/login`,
13 13 
14 14     // 測試的請求地址,用於測試會話
15 15     requestUrl: `https://${host}/testRequest`,
16 16 
17 17     // 用code換取openId
18 18     openIdUrl: `https://${host}/openid`,
19 19 
20 20     // 測試的信道服務接口
21 21     tunnelUrl: `https://${host}/tunnel`,
22 22 
23 23     // 生成支付訂單的接口
24 24     paymentUrl: `https://${host}/payment`,
25 25 
26 26     // 發送模板消息接口
27 27     templateMessageUrl: `https://${host}/templateMessage`,
28 28 
29 29     // 上傳文件接口
30 30     uploadFileUrl: `https://${host}/upload`,
31 31 
32 32     // 下載示例圖片接口
33 33     downloadExampleUrl: `https://${host}/static/weapp.jpg`
34 34 };
35 35 
36 36 module.exports = config
View Code

 

上面的一些都是一些全局的文件。下面看一下小程序頁面的文件結構。頁面一般都是存放Page文件夾下面,當然也可以存放在其他路徑下面。

小程序頁面主要分4個文件,分別為  index.js 、 index.json 、 index.wxml 、index.wxss。當我們創建一個小程序頁面時,會自動生成這4個文件。

 

index.js

頁面的腳本文件,在這個文件中我們可以監聽並處理頁面的生命周期函數、獲取小程序實例,聲明並處理數據,響應頁面交互事件等。

 1 //index.js
 2 //獲取應用實例
 3 const app = getApp()
 4 
 5 Page({
 6   data: {
 7     motto: 'Hello World',
 8     userInfo: {},
 9     hasUserInfo: false
10   },
11   //事件處理函數
12   bindViewTap: function() {
13     wx.navigateTo({
14       url: '../logs/logs'
15     })
16   },
17   onLoad: function () {
18     if (app.globalData.userInfo) {
19       this.setData({
20         userInfo: app.globalData.userInfo,
21         hasUserInfo: true
22       })
23     } else {
24       // 由於 getUserInfo 是網絡請求,可能會在 Page.onLoad 之后才返回
25       // 所以此處加入 callback 以防止這種情況
26       app.userInfoReadyCallback = res => {
27         this.setData({
28           userInfo: res.userInfo,
29           hasUserInfo: true
30         })
31       }
32     }
33   },
34   getUserInfo: function(e) {
35     this.setData({
36       userInfo: e.detail.userInfo,
37       hasUserInfo: true
38     })
39   }
40 })
View Code

 

index.json

頁面的配置文件。當有頁面的配置文件時,配置項在該頁面會覆蓋 app.json 的 window 中相同的配置項。如果沒有指定的頁面配置文件,則在該頁面直接使用 app.json 中的默認配置。

 1 //logs.js
 2 const util = require('../../utils/util.js')
 3 
 4 Page({
 5   data: {
 6     logs: []
 7   },
 8   onLoad: function () {
 9     this.setData({
10       logs: (wx.getStorageSync('logs') || []).map(log => {
11         return util.formatTime(new Date(log))
12       })
13     })
14   }
15 })
View Code

 

index.wxml

頁面的結構文件。頁面的編寫方式和HTML類似。不過里面的標簽種類不是很多。常用的就是view標簽,和div類似。下面使用到的標簽有 view、block、navigator、image 。

<view class="index">
  <view class="index-hd">
    <image class="index-logo" src="resources/kind/logo.png"></image>
    <view class="index-desc">以下將演示小程序接口能力,具體屬性參數詳見小程序開發文檔。</view>
  </view>
  <view class="index-bd">
    <view class="kind-list">
      <block wx:for-items="{{list}}" wx:key="{{item.id}}">
        <view class="kind-list-item">
          <view id="{{item.id}}" class="kind-list-item-hd {{item.open ? 'kind-list-item-hd-show' : ''}}" bindtap="kindToggle">
            <view class="kind-list-text">{{item.name}}</view>
            <image class="kind-list-img" src="resources/kind/{{item.id}}.png"></image>
          </view>
          <view class="kind-list-item-bd {{item.open ? 'kind-list-item-bd-show' : ''}}">
            <view class="navigator-box {{item.open ? 'navigator-box-show' : ''}}">
              <block wx:for-items="{{item.pages}}" wx:for-item="page" wx:key="*item">
                <navigator url="pages/{{page.url}}" class="navigator">
                  <view class="navigator-text">{{page.zh}}</view>
                  <view class="navigator-arrow"></view>
                </navigator>
              </block>
            </view>
          </view>
        </view>
      </block>
    </view>
  </view>
</view>

 

index.wxss

當前頁面使用的樣式表文件,這個樣式表和之前我們看到的app.wxss不同。這個樣式文件只對當前頁面生效。

 

 

以上就是小程序的基本結構以及常用文件的類型和作用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM