先预览一下效果

欢迎扫码查看

码云地址:https://gitee.com/mk_23/little_chen_xu.git

预览完成,首先进入app.json文件中配置参数,主要就是配置我们要用的页面在pages中写好,刷新后他会自动生成我们所需要的页面

"pages": [
"pages/hot/hot",
"pages/wait/wait",
"pages/search/search",
"pages/search/searchResult/searchResult",
"pages/top/top",
"pages/details/details",
"pages/personDetail/personDetail"
 
剩下的就是配置我们的底部导航,需要注意的是微信的导航图片是分为两个部分的一个相当于是点击的一个是点击后的所以我们一个菜单导航需要两张图片
 
"list": [
{
"pagePath": "pages/hot/hot",
"iconPath": "images/hot_icon.png",
"selectedIconPath": "images/hot_active_icon.png",
"text": "热映"
},
{
"pagePath": "pages/wait/wait",
"iconPath": "images/wait_icon.png",
"selectedIconPath": "images/wait_active_icon.png",
"text": "待映"
},
{
"pagePath": "pages/search/search",
"iconPath": "images/search_icon.png",
"selectedIconPath": "images/search_active_icon.png",
"text": "搜索"
},
{
"pagePath": "pages/top/top",
"iconPath": "images/top_icon.png",
"selectedIconPath": "images/top_active_icon.png",
"text": "口碑"
}
 
 
配置完成后进入我们刚刚配置生成的第一个目录

pages/hot/hot,这个将目录将是我们小程序的第一个页面也是我们的首页,下面具体来看我们的首页是怎么完成的。
1.进入hot.json,配置标题
{
"navigationBarTitleText": "正在热映"
}
2.进入hot.wxml开始写我们的第一个页面,在这里我用了模板,所以这个页面看起来并没有太多的东西。
 
<import src="../template/movie.wxml"/>
<block wx:if="{{showLoading}}">
<view class="loading">玩命加载中…</view>
</block>
<block wx:else>
<view class="film">
<template wx:for="{{movies}}" wx:for-item="movies" wx:key="movies" is="listNone" data="{{...movies}}"></template>
</view>
</block>
 
红色部分就是我们引入的模板,因为几乎每个页面的展示基本一样,为了方便起见,所以用了模板,这样也便于我们后期的维护与修改。我们的hot.wxss,同样也是引入

movie.wxss。
 
@import "../template/movie.wxss";
既然引入了他们俩个,那就具体来看看是什么样的。
首先是movie.wxml
<template name="listNone">
<view class="film-item" data-id="{{movieId}}" bindtap="filmDetail">
<view class="film-cover">
<image src="{{imgUrl}}" class="film-cover-img"></image>
<view class="film-rating">
<block wx:if="{{score}}">
{{score}}
</block>
<block wx:else>
暂无评分
</block>
</view>
</view>
<view class="file-intro">
<view class="film-title">{{title}}</view>
<view class="film-tag" >
<view class="film-tag-item" wx:for="{{genres}}" wx:for-item="genres" wx:key="genres">{{genres}}</view>
</view>
</view>
</view>
</template>
其次是我们的样式
这个样式使我们用了加载数据是初始化的页面也就是我们的等待页面,(等页面加载完成后,自动取消这个动态效果)
@import "../../comm/animation.wxss";
 
等这些都弄完了,我们来看一下最重要的东西,我们的hot.js
var app = getApp(); //引入全局函数(作用域)
var util = require("../../utils/util.js");
Page({
data: {
movies: [],
totalCount: 0,
isEmpty: true,
showLoading:true
},
onLoad: function(options) {
// 正在上映
var in_theaters = app.globalURrl.doubanUrl + '/v2/movie/in_theaters';
this.setData({
in_theaters: in_theaters,
showLoading: true
});
util.http(in_theaters, this.callback);
var timestamp = Date.parse(new Date());
wx.showNavigationBarLoading();
},
//上拉加载
onReachBottom: function () {
var nextUrl = this.data.in_theaters + "?start=" + this.data.totalCount + "&count=20";
util.http(nextUrl, this.callback);
wx.showNavigationBarLoading();
},
callback: function (res) {
// 处理数据
var movies = [];
for (var idx in res.subjects) {
var subject = res.subjects[idx];
var title = subject.title;
if (title.length >= 2) {
title = title.substring(0, 2) + "...";
}
var imgUrl = subject.images.large;
var score = subject.rating.average
var movieId = subject.id;
var genres = subject.genres;
var temp = {
title: title,
imgUrl: imgUrl,
score: score,
movieId: movieId,
genres: genres
}
movies.push(temp);
}
var totalMovies = [];
if (!this.data.isEmpty) {
totalMovies = this.data.movies.concat(movies);
} else {
totalMovies = movies;
this.data.isEmpty = false;
}
this.setData({
movies: totalMovies,
showLoading: false
});
this.data.totalCount += 20;
wx.hideNavigationBarLoading()
},
filmDetail: function(e) {
var data = e.currentTarget.dataset;
wx.navigateTo({
url: '../details/details?id=' + data.id
})
},
onShareAppMessage: function (res) {
return {
title: "电影潮讯",
path: '/pages/hot/hot'
}
}
})
 
 
上面红色部分是我们的全局函数与工具方法最后将介绍这两个
util.js
 
function http(url, callback) {
wx.request({
url: url,
header: {
"Content-Type": "applciation/xml"
},
method: 'GET',
success: function (res) {
var data = res.data;
callback(data);
}
})
}
module.exports = {
http: http
}
 
 
全局函数在我们的app.js中添加
 
app.js
App({
globalURrl: {
doubanUrl:'https://douban.uieee.com'
}
})
等这些完成后就可以看到我们的首页的样子了。下面这个用微信扫一下,将会看到我们要完成的最终样子。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

微信小程序 —— 仿制豆瓣(一)的更多相关文章

  1. 微信小程序访问豆瓣api403问题解决方发法

    微信小程序访问豆瓣api403问题解决方法一览:通过豆瓣api可以获取很多电影.书籍等的数据信息.昨晚上用微信小程序请求豆瓣api,竟然被豆瓣拒绝了.(豆瓣设置了小程序的访问权限):下面就跟着小编一起 ...

  2. 微信小程序demo豆瓣图书

    最近微信小程序被炒得很火热,本人也抱着试一试的态度下载了微信web开发者工具,开发工具比较简洁,功能相对比较少,个性化设置也没有.了解完开发工具之后,顺便看了一下小程序的官方开发文档,大概了解了小程序 ...

  3. 微信小程序访问豆瓣电影api400错误解决方法

    最近在跟着demo学习微信小程序,却卡在了第一步请求豆瓣电影api上,折腾了很久,代码如下: wx.request({ url : "https://api.douban.com/v2/mo ...

  4. 微信小程序之豆瓣电影

    此文是学习小程序第二天做出的一个小demo,调用了豆瓣电影的api,但是需要填上自己appId,现在项目的 目录如下图: 效果图如下: 在这个demo里面,我更改了小程序的navigationBar, ...

  5. 微信小程序访问豆瓣api报403错误解决方法

    通过豆瓣API可以获取很多电影.书籍的数据信息,今天在调用豆瓣正在上映电影接口的时候报403错误,原因是豆瓣设置了小程序的访问权限.如下: 解决方法是使用代理,将豆瓣API地址换成 https://d ...

  6. 如何用微信小程序模仿豆瓣首页

    程序思路: 用微信自带组件swiper来实现轮播图 用豆瓣提供的api(这里使用的电影api)来获取最近的电影数据[豆瓣api地址] 获取数据用微信的request方法,只需要提供豆瓣api的url链 ...

  7. 微信小程序开发豆瓣电影接口失效

    豆瓣旧API接口停用,使用以下接口代替 .获取正在热映的电影:https://douban.uieee.com/v2/movie/in_theaters访问参数:start : 数据的开始项 coun ...

  8. 微信小程序实现豆瓣读书

    个人练习项目,使用了scss+webstorm watcher来处理样式.整体上没有什么难点. github:https://github.com/axel10/wx-douban-read

  9. 微信小程序开源项目库汇总

    最近做了一个微信小程序开源项目库汇总,里面集合了OpenDigg 上的优质的微信小程序开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. UI组件 ...

随机推荐

  1. java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's 'value' attribute or make the default bootstrapper class available.

    1.前几天搭建单元测后,今天用其测试,结果报了这个问题.网上搜索后,刚开始以为原因是  Spring的 依赖版本的问题,我现在的依赖是: 因为其他的比如说 spring-content  spring ...

  2. centos 克隆系统放到别的机器上后出现网卡启动不了的情况

      1. Remove Network Manager from startup Services. #chkconfig NetworkManager off 2. Add Default Net ...

  3. Thrift学习笔记—IDL基本类型

    thrift 采用IDL(Interface Definition Language)来定义通用的服务接口,并通过生成不同的语言代理实现来达到跨语言.平台的功能.在thrift的IDL中可以定义以下一 ...

  4. July 14th 2017 Week 28th Friday

    A life without a dress rehearsal, every day is broadcast live. 人生没有彩排,每天都是现场直播. Every day when I pre ...

  5. LevelDB源码分析之:arena内存管理

    一.原理 arena是LevelDB内部实现的内存池. 我们知道,对于一个高性能的服务器端程序来说,内存的使用非常重要.C++提供了new/delete来管理内存的申请和释放,但是对于小对象来说,直接 ...

  6. 使用ant进行邮件发送,ant发送已存在的html文件

    Jenkins上使用发送邮件功能一直有问题,放弃Jenkins配置,使用ant的进行发送邮件,参考文档可以: https://www.jianshu.com/p/04cfce59890a 我这里是要发 ...

  7. The transaction log for database 'XXX' is full due to 'ACTIVE_TRANSACTION'.

    Msg 9002, Level 17, State 4, Line 4The transaction log for database 'Test' is full due to 'ACTIVE_TR ...

  8. [POI2015]KIN

    题目 感觉这种题好套路啊,怎么又是这个做法 癌不过怎么没有人和我一样些写套路做法,那干脆来写个题解吧 我们考虑枚举区间的右端点,这样我们只需要考虑从\(1\)到\(i\)的最大区间就好了 由于我们选择 ...

  9. Selenium应用代码(登录)

    这篇可以不看,主要是为了以后的应用代码(传参)做铺垫. import java.awt.Rectangle; import java.awt.image.BufferedImage;import ja ...

  10. PHP数组 转 对象/对象 转 数组

    /** * 数组 转 对象 * * @param array $arr 数组 * @return object */ function array_to_object($arr) { if (gett ...