先预览一下效果

欢迎扫码查看

码云地址: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. [英中双语] Pragmatic Software Development Tips 务实的软件开发提示

    Pragmatic Software Development Tips务实的软件开发提示 Care About Your Craft Why spend your life developing so ...

  2. Hadoop Archives档案

    HDFS 并不擅长存储小文件,因为每个文件最少一个 block,每个 block 的元数据都会在 NameNode 占用内存,如果存在大量的小文件,它们会吃掉NameNode 节点的大量内存. Had ...

  3. linux系统参数

    vm.swappiness = 清理掉cache给新的程序用当然可以, 但也带来了新的问题, 也就是如果这些(原来cache里的)数据还要使用, 又得重新cache. 产生了新的IO, 新的wait. ...

  4. linu常用命令链接

    linux命令大全ps命令详解: http://www.jb51.net/LINUXjishu/151851.html Linux禁止ping以及开启ping的方法: http://www.cnblo ...

  5. 运维不仅仅是懂Linux就行,还需要知道这些……

    运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,最近看一个报道说,windows的服务器占了47.71%.嗯,向windows运维人员致敬.当然我们这篇文章不是说运维除了懂Linu ...

  6. 学习Road map Part 01 数学

    方法: 结合编程软件 matlab / octave / python / maxima / ruby 线性代数 向量.行列式 线性方程组 LU 分解 特征值.对角化 特征值算法

  7. Java 中 Vector 和 ArrayList 的区别

    首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体 ...

  8. SOJ3266 Birthday

    Time Limit: 1000MS Memory Limit: 65536 K Description Today is Windy's birthday. What can I say? Inpu ...

  9. 程序中实现两个DataTable的Left Join效果(修改了,网上第二个DataTable为空,所处的异常)

    public static DataTable Join(DataTable First, DataTable Second, DataColumn[] FJC, DataColumn[] SJC) ...

  10. js 模拟百度关键字搜索与跳转

    测试效果: css样式: ul{ display:none; } html代码: <input type="text" id="text" /> & ...