目录分析

src是主要的开发目录,各个文件实现功能如下所示:

  1. ├─.idea
  2. └─libraries
  3. ├─.temp
  4. ├─config
  5. └─src
  6. ├─assets
  7. └─images
  8. ├─components (公用组件)
  9. ├─Brandbar
  10. ├─Selectbar
  11. ├─Specialbar
  12. └─Toptab
  13. └─pages
  14. | ├─cinema(影院列表)
  15. | ├─cinemaDetail(影院详情页)
  16. | ├─content(电影介绍)
  17. | ├─detail(电影详情页)
  18. | ├─map(影院地图定位页)
  19. | ├─movies(电影列表页)
  20. | ├─order(电影票订单页)
  21. | ├─person(用户登录页)
  22. | ├─position(地理位置选择页)
  23. | ├─search(电影/影院搜索页)
  24. | ├─seat(影院座位页)
  25. | └─user(用户中心)
  26. |__app.js(入口配置文件)
  27. |__app.scss
  28. |__index.html

入口配置文件app.js分析

Movies列表页是微信小程序的首页,下面代码中config配置的是小程序中所有使用的页面定义路由。下面重点介绍几个比较重要的关键点微信小程序页。

  1. import Taro, { Component } from "@tarojs/taro";
  2. import Movies from "./pages/movies/movies";
  3. import "./app.scss";
  4. class App extends Component {
  5. config = {
  6. //访问路由文件定义
  7. pages: [
  8. "pages/movies/movies",
  9. "pages/person/person",
  10. "pages/cinema/cinema",
  11. "pages/position/position",
  12. "pages/search/search",
  13. "pages/detail/detail",
  14. "pages/content/content",
  15. "pages/cinemaDetail/cinemaDetail",
  16. "pages/map/map",
  17. "pages/seat/seat",
  18. "pages/user/user",
  19. "pages/order/order"
  20. ],
  21. //小程序顶部设置
  22. window: {
  23. backgroundTextStyle: "light",
  24. navigationBarBackgroundColor: "#e54847",
  25. navigationBarTitleText: "猫眼电影",
  26. navigationBarTextStyle: "white",
  27. enablePullDownRefresh: true
  28. },
  29. //底部tab导航栏配置
  30. tabBar: {
  31. color: "#333",
  32. selectedColor: "#f03d37",
  33. backgroundColor: "#fff",
  34. borderStyle: "black",
  35. list: [
  36. {
  37. pagePath: "pages/movies/movies",
  38. text: "电影",
  39. iconPath: "./assets/images/index.png",
  40. selectedIconPath: "./assets/images/index_focus.png"
  41. },
  42. {
  43. pagePath: "pages/cinema/cinema",
  44. text: "影院",
  45. iconPath: "./assets/images/themeOld.png",
  46. selectedIconPath: "./assets/images/theme.png"
  47. },
  48. {
  49. pagePath: "pages/person/person",
  50. text: "我的",
  51. iconPath: "./assets/images/person.png",
  52. selectedIconPath: "./assets/images/personSelect.png"
  53. }
  54. ]
  55. }
  56. };
  57. render() {
  58. // Movies小程序入口文件
  59. return <Movies />;
  60. }
  61. }
  62.  
  63. Taro.render(<App />, document.getElementById("app"));

Movies电影列表页

getCities()是获取当前定位的城市的路由,因为在猫眼电影小程序抓包中没有抓取到获取当前定位的地址接口,所以在猫眼电影H5端获取到了所有城市的数据。之前用了easyMock模拟数据接口,现在不能使用了。不过现在在微信小程序的云开发,可以把数据模拟上去。其中TopTab是正在热映和即将上映的两个分类总的组件。

  1. // movies页
  2. export default class Movies extends Component {
  3. config = {
  4. navigationBarTitleText: "猫眼电影"
  5. };
  6. constructor(props) {
  7. super(props);
  8. }
  9. componentDidMount() {
  10. this.getCities();
  11. }
  12. getCities() {
  13. Taro.request({
  14. url:
  15. "https://www.easy-mock.com/mock/5ba0a7f92e49497b37162e32/example_copy/cities_copy_1541385673090",
  16. method: "GET",
  17. header: {
  18. Accept: "application/json, */*",
  19. "Content-Type": "application/json"
  20. }
  21. }).then(res => {
  22. if (res.statusCode == 200) {
  23. let data = res.data.data.data.data;
  24. Taro.setStorageSync("cities", data);
  25. }
  26. });
  27. }
  28. render() {
  29. return (
  30. <View className="movies">
  31. <Toptab />
  32. </View>
  33. );
  34. }
  35. }

Toptab分类页

其中即将上映和正在热映,做了一个tab组件主要重点的代码是:

  1. <View className="tabItemContent" hidden={this.state.currentNavtab === 0?false:true}>
  2. <!-- 正在热映情况-->
  3. </View>
  4. <View className="tabItemContent" hidden={this.state.currentNavtab === 1?false:true}>
  5. <!--即将上映情况-->
  6. </View>

其中currentNavTab控制即将上映和正在热映的section显隐,hidden是taro官方案例提供的推荐实现tab标签组件的方式。使用其他方法亦可。该页主要实现电影列表的影评价和推荐指数,价格等。微信小程序中基本所有接口都依赖于cityId,也就是在movies页获取定位地址。下面getMoviesOnList是获取真实线上猫眼电影的接口,需要伪造请求header

  1. getMoviesOnList(){
  2. let cityId = this.state.id
  3. Taro.showLoading({
  4. title:"加载中"
  5. });
  6. Taro.request({
  7. url:"https://m.maoyan.com/ajax/movieOnInfoList?token=",
  8. method:"GET",
  9. header:{
  10. "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}`
  11. }
  12. }).then(res=>{
  13. if(res.statusCode == 200){
  14. Taro.hideLoading();
  15. res.data.movieList.forEach((value)=>{
  16. let arr = value["img"].split("w.h");
  17. value["img"] = arr[0]+"128.180"+ arr[1]
  18. });
  19. this.setState({
  20. onList:res.data.movieList,
  21. startIndex:res.data.movieList.length,
  22. lastIndex:res.data.total -1,
  23. movieIds:res.data.movieIds
  24. });
  25. }else{
  26. this.setState({
  27. onList:null,
  28. movieIds:null
  29. })
  30. }
  31. })
  32. }

  

微信小程序命名规则的更多相关文章

  1. SayLove微信小程序

    目录 SayLove 表白墙微信小程序 程序结构 说明 程序效果图 配置过程 结语 云开发 quickstart 参考文档 SayLove 表白墙微信小程序 项目地址:https://github.c ...

  2. 微信小程序使用场景及取名“潜”规则

    微信小程序使用场景举例: 1.查看公交 2.登记.选座 3.订票 4.K歌.叫代驾 5.快递查询 6.查看天气 7.医院挂号.拿药.缴费 8.加油充电 9.政务服务 微信公众号“数据三观”认为,小程序 ...

  3. 微信小程序天坑--图片汉字命名

    图片用汉字命名的,在开发者工具中是显示的,但是,在真机的微信中,是不会显示的. 大写的尴尬,微信小程序开发者工具对于做微信的UI来说,就是一个天坑,在电脑上漂漂亮亮的,到手机上各种意想不到的情况.

  4. 微信小程序开发——活动规则类文案文件读取及自动转换为小程序排版代码

    前言: 最近做的小程序活动规则内容比较多,且一直处于修改中.由于小程序并不支持类似Html5中的预排版,所以,活动规则内容修改较大的时候,仍需要对新的内容用小程序的<text>组件做下排版 ...

  5. 微信小程序的应用及信息整合,都放到这里了

    微信小程序终于开始公测了,这篇文章也终于可以发布了. 这篇文章可以说是微信小程序系列三部曲最后一篇.8 月份,小程序推出前,我写了<别开发 app 了>详细阐述了为什么创业应该放弃原生 a ...

  6. 【腾讯Bugly干货分享】打造“微信小程序”组件化开发框架

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2nQzsuqq7Avgs8wsRizUhw 作者:Gc ...

  7. 公测后,微信小程序应用可能被拒原因.

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 34.0px "PingFang SC Semibold"; color: #23232 ...

  8. 开发一个微信小程序教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  9. 开发一个微信小程序项目教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

随机推荐

  1. 基于NopCommerce框架开发的微信小程序UrShop

    Urshop小程序商城 介绍 UrShop小程序商城 2.0发布啦,发布地址https://gitee.com/urselect/urshop UrShop 根据NopCommerce框架开发的,基于 ...

  2. iframe于iframe页面之间的函数相互调用

    因为iframe页面于包括父页面在内的其他页面通讯有跨域问题,所以只有在服务器环境下或者火狐浏览器下才能测试. 在iframe页面调用父页面的函数采用parent,例子:在父页面有一个say()函数, ...

  3. Django基础六之cookie和session

    Django基础六之cookie和session 目录 Django基础六之cookie和session 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 ...

  4. .NET6: 开发基于WPF的摩登三维工业软件 (10) - 机器人

    基于前文介绍的Ribbon界面.插件化.MVVM模式等内容,我们搭建了一个软件雏形.本文将综合之前的内容在RapidCAX框架中集成Robot组件,实现一个简单的机器人正向模拟模块. 1 目标 基于M ...

  5. WPF 布局之综合实例

    WPF 布局之综合实例 <Window x:Class="UniFormGridDemo.MainWindow" xmlns="http://schemas.mic ...

  6. 如何解决代码中if/else 过多的问题

    前言 if...else 是所有高级编程语言都有的必备功能.但现实中的代码往往存在着过多的 if...else.虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性.可维护 ...

  7. Mybaties——动态sql

    动态 SQL 是 MyBatis 的强大特性之一.如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表 ...

  8. vue学习过程总结(06) - vue的数据存储store

    这个不知道能怎么叫不?现在对这块很迷.以下为个人理解 store是状态管理,是一个对象,有其属性和方法. 常见的值有:state/mutations/actions/getters, 这几个值的意思: ...

  9. docker学习笔记(4)- 应用数据管理(容器外)

    简介 docker storage driver支持了image分层存储和容器可写层的存储管理,使用挂载主机目录的方式可以将数据存储在主机的文件系统上或内存中. 之前学习过镜像的分层存储,以Docke ...

  10. automake的使用2

    前言 如果你的入口文件main.c和依赖的文件不是在同一个目录中的,使用Autotools来管理项目的时候会稍微复杂一下. 在不同的目录下,项目会生成*.a文件的静态连接(静态连接相当于将多个.o目标 ...