關於微信小程序的一些總結

mpvue?html

 

 

{{}} 在vue和小程序中的區別?vue

    01 小程序中{{}}和vue中的{{}}用法基本一致,能夠顯示data中的數據,能夠寫表達式node

    不同的地方?jquery

    01 小程序的{{}}能夠寫在屬性中git

    02 小程序的{{}}不能使用方法的調用github

 

 

微信小程序中的 wx:keyweb

    01 wx:for 能夠遍歷數組中的數據ajax

    02 wx:for  必定要指定wx:key,否則會報一個警告
sql

    03 wx:key  的值有兩種方式
mongodb

        若是遍歷的值是一個對象,wx:key能夠是對象中某一個惟一的屬性 。 

        若是數組中的值是一個字符串,wx:能夠指定爲*this, *this表示字符串自己。

 

 

在微信小程序中註冊事件分爲兩種

    bind+事件:  bind註冊的事件會冒泡 

    catch+事件:   catch註冊的事件不會冒泡

 

在方法中如何放到data中的數據?

    大坑:在微信小程序中的數據,數據不是雙向綁定

    data中的數據發生了改變,視圖中的數據並無跟着改變

    直接修改 this.data 而不調用 this.setData 是沒法改變頁面的狀態的,還會形成數據不一致。

方法一
data: { msg:
"hellow 小程序" }, change(){ this.setData({ msg:'哈哈哈' //要修改的參數和值 }) }
經過 this.setData({ }) 方式進行修改,能夠實現雙向綁定

 

方法二  
data: { msg:
"hellow 小程序" }, change(){ // 修改msg的值 this.data.msg="你好啊" // 須要進行一次同步 this.setData(this.data) }

 

 

在小程序中將數據保存data有一個專用方法

this.setData({

  屬性名:新值

})

 

 

 

如何獲取input文本框的值?

    01經過e.detail.value

    02若是註冊事件的時候,想要傳遞參數,給當前元素添加自定義屬,經過e.currentTaget.dataset來獲取值。

 

js中的data中發生了改變,頁面中的數據並不會改變,調用setData同步才行

 

input框中的值發生了改變,js中的數據並不會跟着變,本身註冊事件,本身修改data中的數據。微信小程序中不支持雙向綁定

 

 微信支付

 https://blog.brain1981.com/1946.html

 

小程序的生命週期,app.js頁面(建立一個小程序的實例,只會調用一次)

//app.js   初始化小程序 , 作一些通用的操做
App({
// 小程序初始化的時候執行的鉤子函數,全局只會觸發一次
// 小程序中一次性的操做,均可以放到onLaunch中
// 好比: 登陸  獲取你的用戶信息
    onLaunch(){ //作登陸  獲取用戶信息等
        console.log('onLaunch','小程序初始化好了')
    },
// 只要小程序顯示出來了,就會執行
    onShow(){  
        console.log('onShow','小程序顯示了')
    },
// 小程序隱藏的時候觸發
    onHide(){
      console.log('onHide','小程序隱藏的時候')
    },
// 小程序腳本發生錯誤就會觸發
    onError(){
      // 能夠把錯誤的信息收集起來,放到數據庫
      console.log('onError','報錯了')
    },
// 小程序喲啊打開的頁面不存在的時候觸發
    onPageNotFound(){

    }
})

 

Page頁面(建立頁面)

// pages/index/index.js  
// page方法用來建立一個小程序的頁面
Page({
  
// 頁面加載的時候會執行onLoad,一次
  onLoad () {
      console.log('onLoad','頁面加載了')
  },

// 頁面顯示
  onShow () {//通常在這裏發送ajax
      console.log('onShow','頁面顯示的時候就會執行')
  },

// 頁面隱藏
  onHide () {
    console.log('onHide', '頁面隱藏的時候就會執行')
  },
  
  // 表示頁面已經渲染完了
  onReady (){//能夠發送ajax
    console.log('onReady', '頁面渲染完了')
    wx.setNavigationBarTitle({
      title: 'yyyy'
    })
  },
//  頁面卸載時候觸發
  onUnload () {

  }

})

 

     

 

小程序發送ajax請求

// pages/sy/sy.js
Page({
  data: {
    imgList: [],//用於存儲輪播圖數據
  },

  onShow: function () {
    wx.request({
      url: 'https://locally.uieee.com/slides', 
      method:'GET',
      dataType:'json',
      success:(res)=>{
        this.data.imgList=res.data
        //同步
        this.setData(this.data)
      }
  })
  }

})

 

 

 

微信開發工具下載地址

     https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

 

建立項目

 

 

 

 

 

1  微信公衆平臺 :   https://mp.weixin.qq.com/

 

 

 

2 小程序祕鑰  AppID  :   左側導航欄----開發---開發設置

 

 

 

雲開發  

詳情----調試基礎庫 2.2.5

注意事項:每個小程序項目不能超過2M

 

 

 

 

 

 

 

微信小程序中常見的標籤  wxml

<view></view> 至關於html中的 div塊級元素
<text></text> 文本,至關於 span函內元素
<image></image> 至關於 <img src=''/>
<form></form> 表單
 
文本標籤
selectable  是否能夠複製
 
圖片
<image src='' lazy-load='true'></image> 圖片懶加載
lazy-load='true' : 等圖片下載完成後再顯示圖片內容
圖片默認大小  320*240

 

wxss

(1)單位:rpx     -----響應式像素。能夠根據屏幕的寬度自適應調用圖片文字容器大小

(2)引入外部的樣式文件     @import './base.wxss'

 

關於RPX,移動端開發你使用的是什麼像素?

示例: iphone6(2)

邏輯像素 * dpr = 物理像素

iphone6    375px * 2 = 750rpx

 

 

 

小程序,引入其它樣式文件

    將項目公共樣式內容統一保存在一個文件中

style/common.wxss

@import  '../../style/common/wxss'

 

小程序開發文檔

https://developers.weixin.qq.com/miniprogram/dev/framework/

 

微信公衆平臺--小程序(重點)-第三方組件庫(樣式庫) 

 

 

雲開發兼容性

 

 

 

小程序第三方組件庫(樣式庫)

Vant Weapp

https://youzan.github.io/vant-weapp/#/intro

 -WeUI

 -iView Weapp

 

小程序 配置文件

project.config.json  項目配置文件

app.json                   項目全局配置文件

exam01.json    組件配置文件

 

app.json    全局配置文件

若是一個選項添加 app.json 中 全部的組局都會生效

 

 

微信小程序中 js 與 網頁 程序中 js有什麼區別?

    ECMA 基本類型: string  ;number; boolean;undefined ; null;

    ECMA 對象類型:Date ; Math ; RegExp ; Array ; Function ;...

    DOM/BOM 不能使用,小程序中寫  document.getElemnt會報錯

    

微信小程序循環  wx:for

    <view wx:for="{{數組名稱}}" wx:key="index"> {{item}} 當前對象 {{index}} 當前元素下標 </view>
    wx:for="{{循環數組名稱}}" wx:key="index" 數組元素下標(排序規則),快速排序

 

wx:if

    <view wx:if="{{condition}}"></view> condition:表達式 true false true 當前元素正常顯示 false 當前元素刪除

 

 

  if   elif   else

    <view wx:if="{{condition}}">111</view>                 // if

    <view wx:elif="{{condition}}">222</view>             // else if

    <view wx:else>333</view>            // else

 

hidden

    <view hidden="{{condition}}">內容</view>

    condition:表達式 true false

    true隱藏  false 顯示

   問題:何時使用if 何時使用hidden

   (1)若是此元素須要頻繁切換使用hidden

   (2)若是此元素在運行中不大可能改變則 wx:if 較好

 

微信公衆平臺--小程序--js/事件-事件

   pc端項目   屏幕寬度 > 970px 操做:鼠標鍵盤

   移動端項目 屏幕寬度 < 970px 操做:手指

 

移動端項目:

    touchstart  當手指觸碰到屏幕時發生的事件,無論幾根手指

    touchmove   當手指在屏幕上滑動的時候觸發

    touchend   當手指離開屏幕時候觸發

 

    zepto.js    至關於移動端的jquery

    tap   觸碰一次

    longtap 長按一次 超過350ms

    swipe  滑動

    swipeLeft 滑動

  

微信小程序事件分爲兩種

    小程序事件分爲兩種 

   (1)冒泡事件:當一個組件上事件被觸發後,該事件向父元素傳遞

 

   (2)非冒泡事件:當一個組件上事件被觸發後,不向父元素傳遞

 

 

  小程序綁定事件方式

 

 

-支持事件冒泡

 

     <view bind事件名="事件處理函數"></view>

 

    -不支持事件冒泡

 

     <view catch事件名="事件處理函數"></view>

 

 例子  

支持冒泡

 

    <view bindtap='handle2'>父元素
        <view bindtap='handle1'>子元素</view>
    </view>

 

不支持冒泡

   <view catchtap='handle2'>父元素
        <view catchtap='handle1'>子元素</view>
   </view>

 

 

 

小程序--生命週期(組件)

     組件生命週期:一個組件從建立開始到使用最後銷燬過程

  /* 組件建立成功後觸發一次 (1)發送ajax請求 (2)獲取傳遞參數 */ onLoad (options) { }, 

/* 組件渲染成功後觸發一次 */ onReady () { },

/* 顯示組件 */ onShow () { },
/* 隱藏組件 */ onHide () { }, /* 銷燬組件 */ onUnload () { },

 上拉加載  下拉刷新

  /**
   * --監聽用戶下拉動做  (用戶下拉操做,刷新操做)  下拉刷新
   *   小程序默認禁止 用戶下拉操做
   *   修改默認行爲,激活下拉。
   *      01 全局修改  app.json 文件 window 下 修改
   *                "enablePullDownRefresh": true  容許下拉
   *      02 當前組件修改 在當前組件的json文件中 修改
   *                "enablePullDownRefresh": true  容許下拉
   */                
  onPullDownRefresh () {
    console.log('下拉刷新')
  },

  /**
   * 頁面上拉觸底事件的處理函數  (上拉觸底,翻頁加載) 上拉加載
   */
  onReachBottom () {
      console.log('上拉加載')
  }

 

 

 

 

 

 

 

 

微信小程序組件跳轉  wx.redirectTo({}) -----不能返回,由於跳轉後把原先的組件銷燬了

利用 wx.redirectTo({}) 實現跳轉   

好比       組件1   跳轉到  組件 2。 會先卸載組件1  而後建立組件2

 

 

保留而且跳轉

 

      wx.navigateTo({

 

         url:"/pages/comment/comment"

 

      })

 

 

 

小程序--雲開發

    小程序與騰訊雲合做新方案[雲開發] 

    雲開發==[雲數據庫+雲存儲+雲函數]

 

雲數據庫:數據增長/刪除/修改/查詢....

雲存儲:上傳文件/下載文件/分享文件/管理文件....

 

雲函數:獲取appid/調用高級權限操做 (沒有跨域)

 

 

小程序--開通雲開發

  小程序開發工具-->"雲開發" 開通

  環境名稱:[web-test-01]英文 數字 -

  環境id:[] 自動生成環境複製下來

 

小程序--雲數據庫(mongodb nosql數據庫)  

   雲開發提供一個JSON數據庫提供2GB免費空間

 

關係型數據庫

文檔數據庫

數據庫 database

數據庫 database

表  table

集合 collection

行   row

記錄 record/doc

列   column

字段 field

 

  #關係型數據庫:適合複雜數據關係  企業內部軟件系統

  #文檔型數據庫:數據關係簡單 頻繁查詢,更新   app

 

數據類型

 

String 字符串

Number數字

Object 對象

Array數組

Bool   布爾

GeoPoint 地理位置點

Date   時間(客戶端)

NULL

 

 

小程序--雲數據庫操做

  (1)控制檯:  建立集合

  (2)雲函數

  (3)小程序操做:

 

經過小程序操做雲數據庫

(1)經過控制檯 建立集合  好比 web2008

(2)初始化默認數據庫

    const db = wx.cloud.database();

(3)向集合中添加新記錄

    db.collection('集合名稱').add(

      {

       data:{name:'zxh',age:'18'},

       success:function( res ){ },

       fail:function(err){ }

      }

    )

 

  add() 向集合中添加數據

  data:{} 數據

  success 添加成功回調函數

  fail    添加失敗回調函數

 

 

  常見錯誤:

   (1) -502005 database collection not exists

   #集合不存在 web1903

   緣由1:拼寫錯誤db.collection("拼寫錯誤")

   緣由2:沒有集合

   (2)若是建立二個環境

    const db = wx.cloud.database({

     env:"環境id"

    });

   env:環境

   (3) errCode: -501005 invalid env

   緣由:env:"環境id錯誤"

 

 

小程序操做雲數據庫--更新

 db.collection("集合名稱").doc("當前記錄id").update({

  data:{

    屬性名:值

  }

}).then( res=>{

  console.log(res)

} ).catch(err=>{

  console.log(err)

})

 

 

小程序操做雲數據庫--刪除

    db.collection("集合名稱").doc("記錄id") .remove().then(res=>{}).catch(err=>{})

    #注意事項:經過小程序一次只能刪除一條數據

 

 

小程序雲開發-雲數據庫--查詢

   (1)查詢全部數據

 db.collection("集合名稱").get().then(res=>{}).catch(err=>{})

     get:獲取查詢

     then:查詢成功後獲取返回內容

     res  查詢結果

     catch:查詢失敗

     err   失敗緣由

 

   (2)查詢指定數據

     db.collection("集合名稱").where({name:"jerry"}).get().then(res=>{}).catch(err=>{})

     where查詢條件

     get   獲取查詢

     then  查詢成功後獲取返回內容

     res    查詢結果

 

 

小程序雲開發-雲函數

   雲函數:特殊函數將其保存小程序雲上(騰訊雲)

   雲函數從功能不少優勢:權限高 完成複雜操做

 #注意事項:開發雲函數要求本地下載安裝nodejs v8.0 以上

 

 

小程序雲開發-雲函數-求和函數 sum

 

   (1)開發工具 coludfunctions

     鼠標右鍵->新建node.js雲函數

   (2)雲函數名稱 sumc

   (3)打開index.js

   (4)添加雲函數代碼

     exports.main = async (event,context)=>{

       return {

          sumc:event.i + event.j

        }

     }

     exports 導出    event 事件對象(獲取用戶參數)

     main   主函數  context 上下文對象(獲取用戶信息)

     async   導步(ES7語法)

   (5)上傳部署

     右擊建立並部署,雲端安裝依賴

   (6)測試雲函數

   (7)在小程序中調用開發雲函數

     wx.cloud.callFunction({   //調用雲函數

       name:"雲函數名",    //雲函數名

       data:{i:1,j:2}         //參數

     }).then(res=>{          //調用成功

       console.log(res);

     }).catch(err=>{         //調用失敗

       console.log(err);

     })

 

 

 

 

    #注意事項:若是你舊版本小程序工具沒有server-sdk報錯

 

    #右擊 countFunctions 在終端中打開

 

    #npm install --save wx-server-sdk@latest

 

 

 

    常見錯誤

    (1) Error: errCode: -404011 cloud function execution error

    緣由:

   -調用雲函數不存在 

  -調用去函數沒有上傳

-雲函數名子拼寫錯誤

 

 

 

小程序雲開發-雲函數-login 登陸

 

 

 

 

 

 

小程序雲開發-雲函數-批量刪除

    雲數據庫web2019 同名記錄 name:"zxy"

    雲函數目的:刪除name:"zxy"

    async:異步ES7 異步執行函數

    await:等待若是執行耗時任務啓動關鍵字等待任務

執行完

 

const cloud = require('wx-server-sdk')  
cloud.init()// 初始化 cloud
const db = cloud.database();//初始化雲數據庫

    exports.main = async  (event,context)=>{

      try{ // await 等刪完以後再返回結果

        return await db.collection("web2019").where({

            name:"zxy"

         }).remove();

      }catch(e){

         console.log(e);

      }

    }

 

 

 

小程序雲開發-雲存儲-5GB

    (1)用戶上傳文件流程

      -用戶選擇相冊或拍照

      -小程序上傳所選中圖片

      -雲存儲返回圖片 fileID  //在雲存儲圖片地址

    (2)開發流程

      -選擇圖片

wx.chooseImage({

  count: 1 , //一次選擇幾張圖片默認 9

  sizeType: ["original", "compressed"], //選中圖片類型 (原圖/壓縮)

  sourceType: ["album", "camera"], //圖片來源 (相冊/相機)

  success: function (res) { //選中圖片成功回調

  res.tempFilePaths //選中圖片地址,返回數組

  }

});

 

 -上傳圖片

wx.cloud.uploadFile();

       cloudPath: 上傳成功後新文件名

        filePath:   選中圖片名

        success:res=>{  上傳成功

        console.log(res.fileID); 

        上傳成功後返回指定文件路徑

}

例子:以下

Page({
  data: {},

 downP(){//自定義構造函數downP(){ }  wx.chooseImage({ count: 1 , //一次選擇幾張圖片默認 9 sizeType: ["original", "compressed"], //選中圖片類型 (原圖/壓縮)  sourceType: ["album", "camera"], //圖片來源 (相冊/相機) success: function (res) { //選中圖片成功回調 var list = res.tempFilePaths //選中圖片地址,返回數組 var file = list[0] //選中的圖片地址 wx.cloud.uploadFile({ //上傳圖片至雲存儲 cloudPath: +new Date()+".jpg", //時間戳起一個名字 filePath: file, //選中的要上傳的圖片地址 success: res => { console.log(res) console.log(res.fileID); //上傳成功後返回指定文件路徑  } }); } }); },

  onLoad: function (options) {},
  onReady: function () { },
  onShow: function () {},
  onHide: function () {},
  onUnload: function () {},
  onPullDownRefresh: function () {},
  onReachBottom: function () {},
  onShareAppMessage: function () {}
})

 

 

綜合例子

文件上傳與顯示功能:利用雲函數將圖片上傳到雲存儲,再將雲存儲中的圖片地址存儲到雲數據庫的集合中

    *雲數據庫建立集合 myphoto  目標:保存上傳文件fileID

    *建立組件 pages/myphoto/myphoto

    *添加按鈕 "上傳圖片"

    *將上傳文件fileID保存myphoto

    *建立按鈕 "顯示圖片"

    *獲取集合中myphoto 建立循環遍歷 fileID

    <image src="{{item.fileID}} "></image>

const db = wx.cloud.database(); //初始化默認數據庫 Page({ data: { // 經過this.setData({}) 添加數據 list:[] //雲存儲圖片fileID  }, showPic(){//此函數負責獲取myphoto集合全部記錄,而且顯示在模板中 db.collection("myphoto").get()//獲取集合中全部的記錄 .then(res => { var result = res.data console.log(result) this.setData({ //向data中添加數據  list:result }) }) .catch(err => { console.log(err)}) }, myupload(){ wx.chooseImage({//此函數負責選中圖片而且上傳至雲儲存,上傳成功後將圖片fileID保存myphoto集合中 count: 1, //一次選擇幾張圖片默認 9 sizeType: ["original", "compressed"], //選中圖片類型 (原圖/壓縮)  sourceType: ["album", "camera"], //圖片來源 (相冊/相機) success(res){ //選中圖片成功回調 var list = res.tempFilePaths //選中圖片地址,返回數組 var file = list[0] //選中的圖片地址 wx.cloud.uploadFile({ //上傳圖片至雲存儲 cloudPath: +new Date() + ".jpg", //時間戳起一個名字 filePath: file, //選中的要上傳的圖片地址  success(res){ var fID = res.fileID //上傳成功後返回指定文件路徑 db.collection('myphoto').add(//向集合中添加數據        {        data: { fileID : fID },        success(res){console.log(res)}, fail(err){ console.log(err) }       }     ) }, fail(err){ //上傳失敗 返回err  console.log(err) } }); }, fail(err){ console.log(err) } }); },

  onLoad: function (options) {
  },
  onReady: function () {
  },
  onShow: function () {

  },
  onHide: function () {

  },
  onUnload: function () {

  },
  onPullDownRefresh: function () {

  },

  /**
   * 頁面上拉觸底事件的處理函數
   */
  onReachBottom: function () {

  },

  /**
   * 用戶點擊右上角分享
   */
  onShareAppMessage: function () {

  }
})

 

 

環境id報錯,若是有兩個環境id,一直報錯,配置以下

 

 

小程序--商城項目-下載安裝vant 第三方庫

    有贊團爲vant網站

    https://youzan.github.io/vant-weapp

    (1)建立項目描述文件 package.json   默認沒有package.json,須要本身建立 如何建立? 以下

     右擊 miniprogram 目錄->選中在終端中打開

     輸入命令 npm init    回車 回車 ..

     #npm init 功能生成項目描述文件 package.json

     #執行成功後生成 package.json文件

 

    (2)經過npm 安裝vant 第三方組件庫

     右擊 miniprograme 目錄->選中在終端中打開

     輸入命令 npm i vant-weapp -S --production  回車

     #安裝成功看到文件夾 node_modules

     #右擊miniprograme 在硬盤打開

 

    (3)點擊工具菜單-->構建npm

     #node_modues內容複製一份 miniprogram_npm

     #常見錯誤 module .. not defined

     #請從新登陸

     解決:點擊工具菜單->構建npm

 

    (4)點擊工具菜單->詳情 (點擊右上角詳情)

     [*] 使用npm 模塊

 

    (5)在組件中配置要使用哪一個第三方組件,好比使用button

 

      "usingComponents": {

         "van-button": "vant-weapp/button/index"

      }

#注意:組件路徑修改與miniprogram_npm下目錄結構相同

    (6)在當前組件中使用button按鈕

      <van-button type="default">默認按鈕</van-button>

 

 

小程序--商城項目-娛樂

(1)電影列表從"豆瓣網"下載最新電影列表

    豆瓣網熱映電影列表

http://api.douban.com/v2/movie/in_theaters?apikey=0df993c66c0c636e29ecbb5344252a4a&start=0&count=10

    第一個部分:接口地址

    第二個部分:apikey=密鑰(別人開發者密鑰)

    第三個部分:start  第幾條記錄開始

               count 本次查詢幾條記錄

 

(2)如何獲取"豆瓣網"熱映電影列表-發送ajax請求

      小程序有二種請求數據方式

 

小程序端

雲函數

發送方法

wx.request({})

下載第三方ajax  (request)

協議支持

只支持https

根據第三方庫決定

是否備案

通過ICP備案

能夠不備案

域名個數

最多20

無限制

 

 

 

 

 

開發雲函數獲取"豆瓣"電影列表

      -建立雲函數 movielist3

      -點擊movielist3 鼠標右鍵->終端打開

      #注意下面命令有順序

      npm install --save request

      npm install --save request-promise

      #這次請求使用ajaxrequest-promise

      #上面庫是request-promise 依賴庫

 

開發雲函數

       (1)引入 request-promise

       var rp = require("request-promise");

       (2)導出建立main函數

       exports.main = async (event,context)=>{}

       event:事件對象保存請求參數

       context:上下文對象  用戶openid appid..

       (3)建立url 請求地址

       var url = `http://api..&start=${event.start}

          &count=${event.count}`;

       (4)rp(url)   返回查詢結果

 代碼以下

// 雲函數入口文件
const cloud = require('wx-server-sdk')  
cloud.init()
// 雲函數movellist3,此函數功能:向豆瓣網發送請求,獲取最新熱映電影列表
// 01 引入第三方ajax庫 request-promise
// 02 建立main函數
// 03 建立變量 url 請求地址
// 04 請求rp函數發送請求而且將豆瓣返回電影列表返回調用者
var rp = require("request-promise");
exports.main = async (event, context) => {
   return event
  var url = `http://api.douban.com/v2/movie/in_theaters?apikey=0df993c66c0c636e29ecbb5344252a4a&start=${event.start}&count=${event.count}`
  return rp(url)  //發送請求
  .then( res=>{   //請求成功
    return res
  } )
  .catch( err=>{
    console.log(err)
  } )
}

 

上拉加載

拼接

// pages/home/home.js
Page({
  data: {
    list:[]
  },
  loadMore(){
    wx.cloud.callFunction({   //調用雲函數
      name: "movielist3",    //雲函數名
      data: { start:this.data.list.lenght, count:10 } //參數
    }).then(res => {          //調用成功
      var obj = JSON.parse(res.result)//將字符串轉爲js對象
      var rows = obj.subjects;//保存電影列表的數據
      rows = this.data.list.concat(rows)//將電影列表數組拼接操做
      this.setData({
        list: rows  //保存電影列表subjects電影列表
      })
      console.log(obj.subjects)
    }).catch(err => {         //調用失敗
      console.log(err);

    })

  },
  onLoad: function (options) {
    this.loadMore() 
  },
  onReachBottom: function () {//頁面上拉觸底事件的處理函數
    this.loadMore()//發送請求下載下一頁的數據
  },
  onReady: function () {},
  onShow: function () {},
  onHide: function () {},
  onPullDownRefresh: function () {},
  onShareAppMessage: function () {

  }
})

 

 

商城--娛樂詳情完成-準備

    (1)建立組件 comment

    (2)建立雲函數getDetail3 獲取某部電影詳細信息

    (3)下載安裝兩個依據ajax

      npm install --save request          #依賴庫

      npm install --save request-promise   #請求庫

      #每一個雲函安裝本身所需依賴

    (4)檢查url 豆瓣電影詳情 url

      http://api.douban.com/v2/movie/subject/26794435?apikey=0df993c66c0c636e29ecbb5344252a4a

    (5)上傳部署雲函數

    (6)雲測試

 

 

小程序發送ajax

const cloud = require('wx-server-sdk')
cloud.init()
/* s
功能:發送ajax請求獲取豆瓣電影詳情內容
01引入第三方庫request-Promise
02建立main函數
03向豆瓣發送請求
04返回豆瓣電影詳情內容
*/
var rp = require("request-promise");  
exports.main = async (event, context) => {//event--接收參數, context--上下文對象 
  var url = `http://api.douban.com/v2/movie/subject/${event.id}?apikey=0df993c66c0c636e29ecbb5344252a4a`  
  return rp(url)  //發送請求
    .then(res => {return res} )//函數執行成功
    .catch( err => {console.log(err)} )
}

 

// 雲函數入口文件
const cloud = require('wx-server-sdk')  
cloud.init()
// 雲函數movellist3,此函數功能:向豆瓣網發送請求,獲取最新熱映電影列表
// 01 引入第三方ajax庫 request-promise
// 02 建立main函數
// 03 建立變量 url 請求地址
// 04 請求rp函數發送請求而且將豆瓣返回電影列表返回調用者
var rp = require("request-promise");
exports.main = async (event, context) => {
  var url = `http://api.douban.com/v2/movie/in_theaters?apikey=0df993c66c0c636e29ecbb5344252a4a&start=${event.start}&count=${event.count}`
  return rp(url)  //發送請求
  .then( res=>{   //請求成功
    return res
  } )
  .catch( err=>{
    console.log(err)
  } )
}

 

商城--娛樂詳情完成-開發(第三方組件庫 vant)

  https://youzan.github.io/vant-weapp/  文檔手冊

  (1)輸入框    

  (2)打分      

  (3)上傳按鈕  

  

商城--娛樂詳情完成-輸入框

  (1)查看手機

  (2)打開配置文件comment.json

  #刪除多餘目錄 path/to/dist

  {

  "usingComponents": {

    "van-field": "vant-weapp/field/index",

    "van-button": "vant-weapp/button/index",

    "van-rate": "vant-weapp/rate/index"

  }

 }

  (3)在模板中使用組件 comment.wxml

   <van-field

    value="{{ value }}"               //用戶輸入內容

    placeholder="請輸入用戶名"     //佔位符

    bind:change="onChange"        //輸入事件

  />

(4)在模板中使用組件 comment.js

  Page({

  data: {

    value: ''

  },

  onChange(event) {

    console.log(event.detail);

  }

});

 

背景虛化 效果

/* pages/comment/comment.wxss */
/* 1 電影背景圖片虛化效果 */
.detai-container{
   /* position: relative; */
    height: 400rpx;
    filter: blur(40rpx); /* 模糊濾鏡 */
    opacity: 0.9      /*透明度 */
}

/* 2 電影背景遮罩層,顯示電影背景底圖 */
.detail-mask{
    position: absolute;
    width: 100%;
    height: 400rpx;
    background: #333;   /* 深色的背景 */
    top:0;
    left: 0;
    z-index: -1;    /*顯示在底層*/
}

.detail-info{
    position: absolute;
    display: flex;    /*彈性佈局*/
    top:0;
    left: 0;
    width: 100%;
    height: 400rpx; /*高度與遮罩層一致*/
    padding: 20rpx
}

.detail-img{
  width: 280rpx;    /* 大圖寬度 */
  height: 90%;  /* 大圖高度 */
  margin-right: 24rpx;  /* 與右側文字間距 */
}

 

微信加載中

wx.showLoading({
title: '加載中...',
})
 
wx.hideLoading() //加載完調用
 
 
匹配圖片後綴的正則 
var suffix = /\.\w+$/.exec(item)[0]
相關文章
相關標籤/搜索