欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

taro如何開(kāi)發(fā)微信小程序

這篇文章主要為大家展示了“taro如何開(kāi)發(fā)微信小程序”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“taro如何開(kāi)發(fā)微信小程序”這篇文章吧。

創(chuàng)新互聯(lián)專(zhuān)注于岳塘網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供岳塘營(yíng)銷(xiāo)型網(wǎng)站建設(shè),岳塘網(wǎng)站制作、岳塘網(wǎng)頁(yè)設(shè)計(jì)、岳塘網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造岳塘網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供岳塘網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

開(kāi)發(fā)環(huán)境

操作系統(tǒng):Window 10
Taro版本:v0.0.69
Node版本:v8.11.1
github地址: https://github.com/Harhao/miniProgram

運(yùn)行效果

taro如何開(kāi)發(fā)微信小程序 

目錄分析

src 是主要的開(kāi)發(fā)目錄,各個(gè)文件實(shí)現(xiàn)功能如下所示:

├─.idea
│ └─libraries
├─.temp
├─config
└─src
 ├─assets
 │ └─images
 ├─components (公用組件)
 │ ├─Brandbar
 │ ├─Selectbar
 │ ├─Specialbar
 │ └─Toptab(電影詳情分類(lèi))
 └─pages
 | ├─cinema(影院列表)
 | ├─cinemaDetail(影院詳情頁(yè))
 | ├─content(電影介紹)
 | ├─detail(電影詳情頁(yè))
 | ├─map(影院地圖定位頁(yè))
 | ├─movies(電影列表頁(yè))
 | ├─order(電影票訂單頁(yè))
 | ├─person(用戶(hù)登錄頁(yè))
 | ├─position(地理位置選擇頁(yè))
 | ├─search(電影/影院搜索頁(yè))
 | ├─seat(影院座位頁(yè))
 | └─user(用戶(hù)中心)
 |__app.js(入口配置文件)
 |__app.scss
 |__index.html

入口配置文件 app.js 分析

Movies 列表頁(yè)是微信小程序的首頁(yè),下面代碼中config配置的是小程序中所有使用的頁(yè)面定義路由。下面重點(diǎn)介紹幾個(gè)比較重要的關(guān)鍵點(diǎn)微信小程序頁(yè)。

import Taro, { Component } from "@tarojs/taro";
import Movies from "./pages/movies/movies";
import "./app.scss";
class App extends Component {
 config = {
 //訪問(wèn)路由文件定義
 pages: [
  "pages/movies/movies",
  "pages/person/person",
  "pages/cinema/cinema",
  "pages/position/position",
  "pages/search/search",
  "pages/detail/detail",
  "pages/content/content",
  "pages/cinemaDetail/cinemaDetail",
  "pages/map/map",
  "pages/seat/seat",
  "pages/user/user",
  "pages/order/order"
 ],
 //小程序頂部設(shè)置
 window: {
  backgroundTextStyle: "light",
  navigationBarBackgroundColor: "#e54847",
  navigationBarTitleText: "貓眼電影",
  navigationBarTextStyle: "white",
  enablePullDownRefresh: true
 },
 //底部tab導(dǎo)航欄配置
 tabBar: {
  color: "#333",
  selectedColor: "#f03d37",
  backgroundColor: "#fff",
  borderStyle: "black",
  list: [
  {
   pagePath: "pages/movies/movies",
   text: "電影",
   iconPath: "./assets/images/index.png",
   selectedIconPath: "./assets/images/index_focus.png"
  },
  {
   pagePath: "pages/cinema/cinema",
   text: "影院",
   iconPath: "./assets/images/themeOld.png",
   selectedIconPath: "./assets/images/theme.png"
  },
  {
   pagePath: "pages/person/person",
   text: "我的",
   iconPath: "./assets/images/person.png",
   selectedIconPath: "./assets/images/personSelect.png"
  }
  ]
 }
 };
 render() {
 // Movies小程序入口文件
 return <Movies />;
 }
}

Taro.render(<App />, document.getElementById("app"));

Movies 電影列表頁(yè)

getCities() 是獲取當(dāng)前定位的城市的路由,因?yàn)樵谪堁垭娪靶〕绦蜃グ袥](méi)有抓取到獲取當(dāng)前定位的地址接口,所以在貓眼電影H5端獲取到了所有城市的數(shù)據(jù)。之前用了 easyMock 模擬數(shù)據(jù)接口,現(xiàn)在不能使用了。不過(guò)現(xiàn)在在微信小程序的云開(kāi)發(fā),可以把數(shù)據(jù)模擬上去。其中TopTab是正在熱映和即將上映的兩個(gè)分類(lèi)總的組件。

// movies頁(yè)
export default class Movies extends Component {
 config = {
 navigationBarTitleText: "貓眼電影"
 };
 constructor(props) {
 super(props);
 }
 componentDidMount() {
 this.getCities();
 }
 getCities() {
 Taro.request({
  url:
  "https://www.easy-mock.com/mock/5ba0a7f92e49497b37162e32/example_copy/cities_copy_1541385673090",
  method: "GET",
  header: {
  Accept: "application/json, */*",
  "Content-Type": "application/json"
  }
 }).then(res => {
  if (res.statusCode == 200) {
  let data = res.data.data.data.data;
  Taro.setStorageSync("cities", data);
  }
 });
 }
 render() {
 return (
  <View className="movies">
  <Toptab />
  </View>
 );
 }
}

Toptab分類(lèi)頁(yè)

其中即將上映和正在熱映,做了一個(gè)tab組件主要重點(diǎn)的代碼是:

<View className="tabItemContent" hidden={this.state.currentNavtab === 0?false:true}>
 <!-- 正在熱映情況-->
 </View>
 <View className="tabItemContent" hidden={this.state.currentNavtab === 1?false:true}>
 <!--即將上映情況-->
 </View>

其中 currentNavTab 控制即將上映和正在熱映的 section 顯隱, hidden 是taro官方案例提供的推薦實(shí)現(xiàn)tab標(biāo)簽組件的方式。使用其他方法亦可。該頁(yè)主要實(shí)現(xiàn)電影列表的影評(píng)價(jià)和推薦指數(shù),價(jià)格等。微信小程序中基本所有接口都依賴(lài)于 cityId ,也就是在 movies 頁(yè)獲取定位地址。下面 getMoviesOnList 是獲取真實(shí)線上貓眼電影的接口,需要偽造請(qǐng)求 header

getMoviesOnList(){
 let cityId = this.state.id
 Taro.showLoading({
  title:"加載中"
 });
 Taro.request({
  url:"https://m.maoyan.com/ajax/movieOnInfoList?token=",
  method:"GET",
  header:{
  "Cookie":`_lxsdk_cuid=164b6cae2cac8-02b7b032f571b5-39614706-1fa400-164b6cae2cbc8; v=3; iuuid=1A6E888B4A4B29B16FBA1299108DBE9CA19FF6972813B39CA13A8D9705187374; revrev=76338a29; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; webp=true; __mta=3463951.1532075108184.1533098338076.1533118040602.20; _lxsdk=1A6E888B4A4B29B16FBA1299108DBE9CA19FF6972813B39CA13A8D9705187374; from=canary; selectci=true; __mta=3463951.1532075108184.1533118040602.1533118773295.21; _lxsdk_s=164f4f4c9e9-45e-d1b-46%7C%7C50; ci=${cityId}`
  }
 }).then(res=>{
  if(res.statusCode == 200){
  Taro.hideLoading();
  res.data.movieList.forEach((value)=>{
   let arr = value["img"].split("w.h");
   value["img"] = arr[0]+"128.180"+ arr[1]
  });
  this.setState({
   onList:res.data.movieList,
   startIndex:res.data.movieList.length,
   lastIndex:res.data.total -1,
   movieIds:res.data.movieIds
  });
  }else{
  this.setState({
   onList:null,
   movieIds:null
  })
  }
 })
 }

seat (影院座位頁(yè))

自己模擬實(shí)現(xiàn)了一個(gè)推薦座位與選座功能。為了實(shí)現(xiàn)座位信息選擇,使用了二維數(shù)組對(duì)座位信息已選和未選,其中0代表該處擁有座位、E代表該處為空。其中數(shù)組的行代表了影院的第幾排,嵌套的數(shù)組的索引代表了第幾列。

[
 [0,0,0,0,0,0],
 [E,0,0,E,0,0],
 [0,0,0,0,0,0],
 [E,0,0,E,0,0]
]

初始化座位信息, https://m.maoyan.com/ajax/seatingPlan?timestamp=${Date.now()} 獲取貓眼電影線上座位信息接口, cityId 是當(dāng)前定位城市ID, ci 是影院ID。 initParams 是獲取線上座位信息接口, seatData 是獲取到的影院座位信息,需要對(duì)座位信息做進(jìn)一步的加工。遍歷座位信息,如果字段 st 為N,則arr設(shè)置為0(代表具有座位并未選),為E則為該處不具有座位。

initParams(){
 const params = this.$router.params;
 const self = this;
 Taro.setNavigationBarTitle({
  title:params.cinemaName
 })
 Taro.showLoading({
  title:"加載中..."
 });
 Taro.request({
  url:`https://m.maoyan.com/ajax/seatingPlan?timestamp=${Date.now()}`,
  method:'post',
  header:{
  'Cookie': 'uuid_n_v=v1; iuuid=26F6BA50506A11E9A973FDD3C7EBDF0E29C7297EC72D4F77A53F9445EF0EE9F3; webp=true; ci=20%2C%E5%B9%BF%E5%B7%9E; _lxsdk_cuid=169be42cf28c8-098c7e821e63bd-2d604637-3d10d-169be42cf29c8; _lxsdk=26F6BA50506A11E9A973FDD3C7EBDF0E29C7297EC72D4F77A53F9445EF0EE9F3; from=canary; uid=124265875; token=9P1-5VoykD_qrpBxpTvSoVhMwzQAAAAAJwgAAE2za6eVZdI-oORrTHb8dP4JEMYCiza0zSSNoRkHx4qajm2Nu6ClhU00u5A1avIySg; __mta=250960825.1553675243337.1553675275840.1553675275842.6; user=124265875%2C9P1-5VoykD_qrpBxpTvSoVhMwzQAAAAAJwgAAE2za6eVZdI-oORrTHb8dP4JEMYCiza0zSSNoRkHx4qajm2Nu6ClhU00u5A1avIySg; _lxsdk_s=169be42cf2b-ca7-4ca-570%7C%7C14'
  },
  data:{
  cityId:params.cityId,
  ci:params.ci,
  seqNo:params.seqNo
  }
 }).then(res=>{
  if(res.statusCode ==200){
  Taro.hideLoading();
  const seatData = res.data.seatData;
  const seatArray = [];
  seatData.seat.sections[0].seats.map(item=>{
   let arr = [];
   item["columns"].map(seat=>{
   if(seat["st"] == "N"){
    arr.push('0');
   }else{
    arr.push('E')
   }
   })
   seatArray.push(arr);
  })
  self.setState({
   seatData:seatData,
   seatArray:seatArray
  });
  }
 })
 }

做了影院座位信息是否為空篩選之后,接下來(lái)就是選座功能。其中影院座位的選擇與取消使用了 buySeat 進(jìn)行保存。 selectSeat 函數(shù)是選擇座位, row :代表選擇第幾行, column 代表第幾列, item 是該座位是否被選的信息(0為未選表示可選擇、2為已選表示不可再選)

selectSeat(row,column,item){
 const self = this;
 const arr = this.state.seatArray;
 // item代表該座位是否可選
 if(item == 0){
  if(self.state.buySeat.length ==4){
  Taro.showToast({
   title: '最多選擇4個(gè)座位',
   duration: 2000
  })
  return false;
  }else{
  let buySeat = self.state.buySeat;
  arr[row][column]= '2';
  buySeat.push({
   "row":row,
   "column":column
  });
  self.setState({
   buySeat:buySeat,
   seatArray:arr
  })
  }
 }else{
  arr[row][column]= '0';
  const buySeat = this.state.buySeat;
  let tmpArr = this.state.buySeat;
  buySeat.map((value,index)=>{
  if(value["row"]== row && value["column"]== column){
   tmpArr.splice(index,1);
   self.setState({
   buySeat:tmpArr,
   seatArray:arr
   })
  }
  })
 }
 }

推薦座位功能實(shí)現(xiàn), getRecomment 是推薦位實(shí)現(xiàn),現(xiàn)在至于1人、2人、3人、4人推薦。情侶位實(shí)現(xiàn)沒(méi)有抓取到貓眼的推薦接口信息。

 selectAll(seats){
 const self = this;
 seats.map(item=>{
  let row = parseInt(item.rowId.split('0')[0]);
  let column = parseInt(item.columnId.split('0')[0]);
  let itemIndex = self.state.seatArray[row][column];
  self.selectSeat(row,column,itemIndex);
 })

 }
 getRecomment(recomment,num){
 switch(num){
  case 1:this.selectAll(recomment.bestOne.seats);break;
  case 2:this.selectAll(recomment.bestTwo.seats);break;
  case 3:this.selectAll(recomment.bestThree.seats);break;
  case 4:this.selectAll(recomment.bestFour.seats);break;
 }
 }

content電影詳情頁(yè)

電影詳情是一部電影簡(jiǎn)略介紹。主要實(shí)現(xiàn)了,電影主要簡(jiǎn)略描述和預(yù)告片的播放關(guān)閉,實(shí)現(xiàn)比較簡(jiǎn)單。 getDetailData 是獲取電影詳情數(shù)據(jù)接口。其中獲取到img路徑直接獲取不到圖片數(shù)據(jù),需要對(duì)路徑進(jìn)行改寫(xiě),如下代碼所示:

getDetailData(){
 Taro.showLoading({
  title:"加載中"
 });
 Taro.request({
  url:`https://m.maoyan.com/ajax/detailmovie?movieId=${this.state.params.id}`
 }).then(res=>{
  if(res.statusCode == 200){
  Taro.hideLoading();
  let data = res.data.detailMovie;
  let arr = data["img"].split("w.h");
  data["img"] = arr[0]+"128.180"+ arr[1];
  for(let index in data.photos){
   let photo = data.photos[index];
   let arr = photo.split('w.h');
   data.photos[index] = arr[0]+'180.140'+arr[1];
  }
  this.setState({
   detailMovie:data
  });
  }
 }).catch(err=>{
  console.log(err.message);
 })
 }

以上是“taro如何開(kāi)發(fā)微信小程序”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)標(biāo)題:taro如何開(kāi)發(fā)微信小程序
文章轉(zhuǎn)載:http://aaarwkj.com/article48/gpihhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、App開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、電子商務(wù)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
国产三级在线播放完整| 久久精品女人天堂av| 亚洲成人福利免费网站| 99久久精品人妻一区| 毛片一区二区三区免费看| 国产综合精品一区二区| 亚洲成人日韩欧美在线| 日韩精品一区中文字幕在线| 一二三日韩电影在线观看| 午夜香蕉av一区二区三区| 不卡av免费在线网址| 国产一区二区爽爽爽视频| 熟妇人妻精品一区二区三区颏| 久久熟女av一区二区三区| 伊人性伊人情亚洲综合| 成人av男人天堂东京热| 久久91亚洲精品久久91| 亚洲国产中文一区二区久久| 国产呦精品一区二区三区| 欧美精品欧美激情免费区| 亚洲伦理国产一国产二| 国产丝袜肉丝在线播放| 亚洲成人av在线蜜桃| 亚洲和欧洲一码二码区视频| 亚洲香蕉一区二区免费| 亚洲中文乱码一区二区| 日韩免费色视频一区| 久久亚洲av电影网站| 在线观看成人激情视频| 秒播视频午夜福利在线观看| 亚洲激情一区在线观看| 91国产视频在线观看免费| 全部网站免费在线观看等| 很黄很刺激的视频中文字幕 | 亚洲精品成人久久国产| 成年人午夜在线观看网址| 亚洲码欧美码一区二区三区| 免费观看国产性生活片| 国产亚洲欧美日韩看国产| 精品国产18禁99久久久久久| 免费无遮挡午夜视频网站|