色老头一区二区三区_国产精品制服诱惑_欧美日韩天天操_国产制服91一区二区三区制服

×

網站建設

當前位置:首頁 > 龍鼎新聞 > 行業新聞 >

微信小程序項目代碼結構及說明

作者:龍鼎網絡發布時間:2021-01-30 23:03:33瀏覽次數:15386文章出處:晉城自適應網站制作

4.1,項目代碼結構

點擊開發者工具上側導航的“編輯器”,我們可以看到這個項目,已經初始化并包含了一些簡單的代碼文件。最關鍵也是必不可少的,是 app.js、app.json、app.wxss 這三個。其中,.js后綴的是腳本文件,.json后綴的文件是配置文件,.wxss后綴的是樣式表文件。微信小程序會讀取這些文件,并生成小程序實例。

下面我們簡單了解這三個文件的功能,方便修改以及從頭開發自己的微信小程序。

? 1、app.js是小程序的腳本代碼。我們可以在這個文件中監聽并處理小程序的生命周期函數、聲明全局變量。調用框架提供的豐富的 API,如本例的同步存儲及同步讀取本地數據。

2、? app.json 是對整個小程序的全局配置。我們可以在這個文件中配置小程序是由哪些頁面組成,配置小程序的窗口背景色,配置導航條樣式,配置默認標題。注意該文件不可添加任何注釋。

3、app.wxss 是整個小程序的公共樣式表。我們可以在頁面組件的 class 屬性上直接使用 app.wxss 中聲明的樣式規則。

  我們注意到,在實例程序的代碼中還有2個文件夾,一個是pages,一個是style,其中style是放通用樣式的一個文件夾,pages是存放所有頁面的文件夾。我們著重講一下這個pages.

4.2,小程序頁面文件構成

 在這個示例中,我們有七個頁面,index 頁面,即歡迎頁,他們都在 pages 目錄下。微信小程序中的每一個頁面的【路徑+頁面名】都需要寫在 app.json 的 pages 中,且 pages 中的第一個頁面是小程序的首頁。

 每一個小程序頁面是由同路徑下同名的四個不同后綴文件的組成,如:index.js、index.wxml、index.wxss、index.json。.js后綴的文件是腳本文件,.json后綴的文件是配置文件,.wxss后綴的是樣式表文件,.wxml后綴的文件是頁面結構文件。

? index.wxml 是頁面的結構文件:

復制代碼
 1 <!--index.wxml-->
 2 <view class="container">
 3 
 4   <!-- 用戶 openid -->
 5   <view class="userinfo">
 6     <button 
 7       open-type="getUserInfo" 
 8       bindgetuserinfo="onGetUserInfo"
 9       class="userinfo-avatar"
10       style="background-image: url({{avatarUrl}})"
11     ></button>
12     <view>
13       <text>jackson影琪</text>
14 </view> 
15 </view> 
16 
17 <view class="text-title">
18       <text>Hello world</text>
19 </view>  
20 </view>
復制代碼

? 本例中使用了<view/><button/><text/>來搭建頁面結構,綁定數據和交互處理函數。

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

復制代碼
  1 //index.js
  2 const app = getApp()
  3 
  4 Page({
  5   data: {
  6     avatarUrl: './user-unlogin.png',
  7     userInfo: {},
  8     logged: false,
  9     takeSession: false,
 10     requestResult: ''
 11   },
 12 
 13   onLoad: function() {
 14     if (!wx.cloud) {
 15       wx.redirectTo({
 16         url: '../chooseLib/chooseLib',
 17       })
 18       return
 19     }
 20 
 21     // 獲取用戶信息
 22     wx.getSetting({
 23       success: res => {
 24         if (res.authSetting['scope.userInfo']) {
 25           // 已經授權,可以直接調用 getUserInfo 獲取頭像昵稱,不會彈框
 26           wx.getUserInfo({
 27             success: res => {
 28               this.setData({
 29                 avatarUrl: res.userInfo.avatarUrl,
 30                 userInfo: res.userInfo
 31               })
 32             }
 33           })
 34         }
 35       }
 36     })
 37   },
 38 
 39   onGetUserInfo: function(e) {
 40     if (!this.logged && e.detail.userInfo) {
 41       this.setData({
 42         logged: true,
 43         avatarUrl: e.detail.userInfo.avatarUrl,
 44         userInfo: e.detail.userInfo
 45       })
 46     }
 47   },
 48 
 49   onGetOpenid: function() {
 50     // 調用云函數
 51     wx.cloud.callFunction({
 52       name: 'login',
 53       data: {},
 54       success: res => {
 55         console.log('[云函數] [login] user openid: ', res.result.openid)
 56         app.globalData.openid = res.result.openid
 57         wx.navigateTo({
 58           url: '../userConsole/userConsole',
 59         })
 60       },
 61       fail: err => {
 62         console.error('[云函數] [login] 調用失敗', err)
 63         wx.navigateTo({
 64           url: '../deployFunctions/deployFunctions',
 65         })
 66       }
 67     })
 68   },
 69 
 70   // 上傳圖片
 71   doUpload: function () {
 72     // 選擇圖片
 73     wx.chooseImage({
 74       count: 1,
 75       sizeType: ['compressed'],
 76       sourceType: ['album', 'camera'],
 77       success: function (res) {
 78 
 79         wx.showLoading({
 80           title: '上傳中',
 81         })
 82 
 83         const filePath = res.tempFilePaths[0]
 84         
 85         // 上傳圖片
 86         const cloudPath = 'my-image' + filePath.match(/\.[^.]+?$/)[0]
 87         wx.cloud.uploadFile({
 88           cloudPath,
 89           filePath,
 90           success: res => {
 91             console.log('[上傳文件] 成功:', res)
 92 
 93             app.globalData.fileID = res.fileID
 94             app.globalData.cloudPath = cloudPath
 95             app.globalData.imagePath = filePath
 96             
 97             wx.navigateTo({
 98               url: '../storageConsole/storageConsole'
 99             })
100           },
101           fail: e => {
102             console.error('[上傳文件] 失敗:', e)
103             wx.showToast({
104               icon: 'none',
105               title: '上傳失敗',
106             })
107           },
108           complete: () => {
109             wx.hideLoading()
110           }
111         })
112 
113       },
114       fail: e => {
115         console.error(e)
116       }
117     })
118   },
119 
120 })
復制代碼

index.wxss 是頁面的樣式表:

復制代碼
  1 /**index.wxss**/
  2 
  3 page {
  4   background: #f6f6f6;
  5   display: flex;
  6   flex-direction: column;
  7   justify-content: center;
  8 }
  9 .userinfo, .uploader, .tunnel {
 10   margin-top: 40rpx;
 11   height: 140rpx;
 12   width: 100%;
 13   background: #fff;
 14   border: 1px solid rgba(0, 0, 0, 0.1);
 15   border-left: none;
 16   border-right: none;
 17   display: flex;
 18   flex-direction: row;
 19   align-items: center;
 20   transition: all 300ms ease;
 21 }
 22 
 23 .userinfo-avatar {
 24   width: 100rpx;
 25   height: 100rpx;
 26   margin: 20rpx;
 27   border-radius: 50%;
 28   background-size: cover;
 29   background-color: white;
 30 }
 31 
 32 .userinfo-avatar:after {
 33   border: none;
 34 }
 35 
 36 .userinfo-nickname {
 37   font-size: 32rpx;
 38   color: #007aff;
 39   background-color: white;
 40   background-size: cover;
 41 }
 42 
 43 .userinfo-nickname::after {
 44   border: none;
 45 }
 46 
 47 .uploader, .tunnel {
 48   height: auto;
 49   padding: 0 0 0 40rpx;
 50   flex-direction: column;
 51   align-items: flex-start;
 52   box-sizing: border-box;
 53 }
 54 
 55 .uploader-text, .tunnel-text {
 56   width: 100%;
 57   line-height: 52px;
 58   font-size: 34rpx;
 59   color: #007aff;
 60 }
 61 
 62 .uploader-container {
 63   width: 100%;
 64   height: 400rpx;
 65   padding: 20rpx 20rpx 20rpx 0;
 66   display: flex;
 67   align-content: center;
 68   justify-content: center;
 69   box-sizing: border-box;
 70   border-top: 1px solid rgba(0, 0, 0, 0.1);
 71 }
 72 
 73 .uploader-image {
 74   width: 100%;
 75   height: 360rpx;
 76 }
 77 
 78 .tunnel {
 79   padding: 0 0 0 40rpx;
 80 }
 81 
 82 .tunnel-text {
 83   position: relative;
 84   color: #222;
 85   display: flex;
 86   flex-direction: row;
 87   align-content: center;
 88   justify-content: space-between;
 89   box-sizing: border-box;
 90   border-top: 1px solid rgba(0, 0, 0, 0.1);
 91 }
 92 
 93 .tunnel-text:first-child {
 94   border-top: none;
 95 }
 96 
 97 .tunnel-switch {
 98   position: absolute;
 99   right: 20rpx;
100   top: -2rpx;
101 }
102 
103 .disable {
104   color: #888;
105 }
106 
107 .service {
108   position: fixed;
109   right: 40rpx;
110   bottom: 40rpx;
111   width: 140rpx;
112   height: 140rpx;
113   border-radius: 50%;
114   background: linear-gradient(#007aff, #0063ce);
115   box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
116   display: flex;
117   align-content: center;
118   justify-content: center;
119   transition: all 300ms ease;
120 }
121 
122 .service-button {
123   position: absolute;
124   top: 40rpx;
125 }
126 
127 .service:active {
128   box-shadow: none;
129 }
130 
131 .request-text {
132   padding: 20rpx 0;
133   font-size: 24rpx;
134   line-height: 36rpx;
135   word-break: break-all;
136 }
137 .text-title{
138 margin-top: 50%;
139 }
140 .text-title text{
141   font-size: 96rpx;
142   font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
143 }
復制代碼

頁面的樣式表是非必要的。當有頁面樣式表時,頁面的樣式表中的樣式規則會層疊覆蓋 app.wxss 中的樣式規則。如果不指定頁面的樣式表,也可以在頁面的結構文件中直接使用 app.wxss 中指定的樣式規則。

? index.json 是頁面的配置文件:

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

復制代碼
 1 {
 2   "pages": [
 3     "pages/index/index",
 4     "pages/userConsole/userConsole",
 5     "pages/storageConsole/storageConsole",
 6     "pages/databaseGuide/databaseGuide",
 7     "pages/addFunction/addFunction",
 8     "pages/deployFunctions/deployFunctions",
 9     "pages/chooseLib/chooseLib"
10   ],
11   "window": {
12     "backgroundColor": "#F6F6F6",
13     "backgroundTextStyle": "light",
14     "navigationBarBackgroundColor": "#F6F6F6",
15     "navigationBarTitleText": "jackson影琪",
16     "navigationBarTextStyle": "black"
17   }
18 }
復制代碼

運行結果如下:

手機預覽

? 開發者工具上側菜單欄,點擊"預覽",掃碼后即可在微信客戶端中體驗。

客戶評價

專業的網站建設、響應式、手機站微信公眾號開發

© 2010-2020 龍鼎網絡 版權所有 晉ICP備14008335號-1

注冊號:140502200020561

公眾號 微信聯系

手機版 進入手機版

色老头一区二区三区_国产精品制服诱惑_欧美日韩天天操_国产制服91一区二区三区制服
久久久噜久噜久久综合| 99精品人妻少妇一区二区| 欧美日韩国产成人在线观看| 国产精品美女主播| 久久精品中文字幕| 国产精品无码一区二区在线| 国产精品色悠悠| 国产精品久久成人免费观看| 国产精品视频在线观看| 国产成人精品优优av| 久久99久久精品国产| 色偷偷av亚洲男人的天堂| 日韩中文字幕网| 国产精品视频福利| 精品自在线视频| 亚洲中文字幕无码av永久| 亚洲成人午夜在线| 五月婷婷综合色| 少妇人妻无码专区视频| 日本免费高清不卡| 欧美影院在线播放| 免费高清在线观看免费| 国产专区一区二区三区| 国产三级精品在线不卡| 国产伦精品免费视频| 91精品久久香蕉国产线看观看| 不卡一区二区三区四区五区| 久久久人成影片一区二区三区 | 国产精品综合不卡av| www日韩在线观看| 国产成人黄色av| 国产精品久久中文字幕| 亚洲综合中文字幕在线| 日韩av三级在线| 欧美日韩国产精品一卡| 国产精品一区二区三区毛片淫片 | 精品成在人线av无码免费看| 亚洲国产精品久久久久爰色欲 | 7777精品久久久大香线蕉小说| 九色91国产| 欧美猛少妇色xxxxx| 亚洲精品国产系列| 国内精品视频在线| 高清国产一区| 国产精品无码人妻一区二区在线 | 激情成人开心网| 97久久久久久| 国产精品视频成人| 最新中文字幕久久| 日韩a∨精品日韩在线观看| 国产中文字幕乱人伦在线观看| 91精品黄色| 国产精品久久久久久久久男| 欧美一区二区三区精美影视| 免费看黄色a级片| 91精品91久久久久久| 免费97视频在线精品国自产拍| 都市激情久久久久久久久久久| 激情一区二区三区| 国产成人a亚洲精品| 欧美日本在线视频中文字字幕| 日韩经典在线视频| 91精品啪在线观看麻豆免费| 精品视频9999| 欧美成人精品欧美一级乱| 91精品国产高清自在线| 国产精品久久久久久久电影| 日本一区二区黄色| 91精品久久香蕉国产线看观看| 久久躁狠狠躁夜夜爽| 欧美日韩一区二区视频在线| 91精品成人久久| 欧美精品电影在线| 狠狠久久综合婷婷不卡| 久久99精品久久久水蜜桃| 亚洲国产精品久久久久爰色欲| 国产情侣第一页| 国产精品美女网站| 欧洲熟妇精品视频| 久久久久综合一区二区三区| 亚洲精品人成| 国产美女被下药99| 国产精品黄页免费高清在线观看| 欧美有码在线观看视频| 久久久久免费精品国产| 欧美一级视频免费在线观看| 91精品啪aⅴ在线观看国产 | 美女av一区二区| 国产亚洲欧美另类一区二区三区| 国产精品日日做人人爱| 日韩国产在线一区| www.日韩不卡电影av| 日韩精品久久一区二区| 国产成人精品免费视频| 日本wwwcom| 色婷婷综合久久久久| 日韩免费观看网站| 日韩在线高清视频| 欧美亚洲激情在线| 国产精品久久波多野结衣| 国外色69视频在线观看| 国产精品久久精品国产| 国产欧美日韩亚洲精品| 欧美精品videos性欧美| 国产精品午夜国产小视频| 亚洲电影一二三区| 久久精品香蕉视频| 欧美主播一区二区三区美女 久久精品人 | 久久精品男人天堂| 欧美伊久线香蕉线新在线| 精品国产欧美一区二区三区成人| 明星裸体视频一区二区| 欧美另类第一页| 99国内精品久久久久久久软件| 亚洲国产精品女人| 日韩亚洲精品电影| 国产欧美欧洲在线观看| 亚洲精品国产精品久久| www亚洲精品| 国产无套粉嫩白浆内谢的出处| 欧美精品久久久久久久| 91av一区二区三区| 欧美一区三区二区在线观看| 久久久国产一区二区三区| 蜜桃日韩视频| 亚洲精品日韩av| 日韩一区二区欧美| 国产午夜精品视频一区二区三区| 一本一本a久久| 日韩有码在线电影| 国产日产久久高清欧美一区| 亚洲影院色在线观看免费| 久久99导航| 国产自产女人91一区在线观看| 亚洲在线视频福利| 久久久久久久久久久久久久久久久久av | 日本三级中文字幕在线观看| 国产精品乱子乱xxxx| 成人av播放| 欧美亚州在线观看| 亚洲色成人www永久在线观看| 久草热久草热线频97精品| 国产婷婷一区二区三区| 日韩高清国产一区在线观看| 精品免费日产一区一区三区免费 | 68精品久久久久久欧美| 国模杨依粉嫩蝴蝶150p| 日韩一区国产在线观看| 国产精品高清网站| 久久精品美女| 国产精品中文久久久久久久| 青青草原av在线播放| 亚洲不卡中文字幕无码| 国产精品第一视频| 日韩中文字幕在线视频播放| av无码精品一区二区三区| 黄色动漫网站入口| 欧美一区二区高清在线观看| 欧美成年人视频网站欧美| 日韩一区二区欧美| 成人羞羞国产免费| 免费av在线一区二区| 日韩欧美第二区在线观看| 亚洲精品欧美日韩专区| 久久在线免费观看视频| 久久精品99久久香蕉国产色戒| 91久久精品美女高潮| 高清不卡一区二区三区| 国产午夜大地久久| 精品无人乱码一区二区三区的优势| 日韩免费观看视频| 日本一级黄视频| 亚洲www永久成人夜色| 亚洲一区二区三区精品动漫| 色综合久综合久久综合久鬼88| 久久精品亚洲一区| 久久精品国产99国产精品澳门| 久久久久久亚洲精品中文字幕| 91精品国产乱码久久久久久蜜臀 | 99视频国产精品免费观看| 国产无套内射久久久国产| 精品无人区一区二区三区竹菊| 欧美成ee人免费视频| 日韩精品 欧美| 日韩精品无码一区二区三区| 日本一道本久久| 欧美中文字幕在线视频| 欧美亚洲一级二级| 欧美亚洲免费在线| 欧美性受xxxx黑人猛交| 黄页网站在线观看视频| 国内自拍中文字幕| 国产有码在线一区二区视频| 国产自产精品| 国产精品一码二码三码在线| 国产伦精品一区二区三区免费视频| 国产精自产拍久久久久久蜜| av观看免费在线| 久久久福利视频| 日韩中文字幕视频在线|