最近微信小程序被炒得很火热,本人也抱着试一试的态度下载了微信web开发者工具,开发工具比较简洁,功能相对比较少,个性化设置也没有。了解完开发工具以后,顺便看了一下小程序的官方开发文档,大概了解了小程序的开发流程和一些经常使用的API。javascript
了解了小程序以后,本身就有了想要作一个小demo的冲动,虽然本身对小程序尚未作过不少实践,只是在官方例子上徘徊,可是仍是想作出点小东西。既然要作一个demo,天然须要到数据,本身有又不想独自搭建服务端,因此在网上搜索能够用来提供测试数据的免费api,最后我选择了豆瓣图书。豆瓣图书提供的api功能比较少,加上不开放appkey申请,因此没法操做用户数据。只能作点简单的图书查询和图书详细信息展现,这个demo只有两个页面,很是之简单。css
demo中用到的豆瓣图书api只有两个,一个是图书搜索,另外一个是获取图书详情。html
GET https://api.douban.com/v2/book/search
vue
参数 | 意义 | 备注 |
---|---|---|
q | 查询关键字 | q和tag必传其一 |
tag | 查询的tag | q和tag必传其一 |
start | 取结果的offset | 默认为0 |
count | 取结果的条数 | 默认为20,最大为100 |
返回status=200java
{ "start": 0, "count": 10, "total": 30, "books" : [Book, ...] }
GET https://api.douban.com/v2/book/:id
react
参数 | 意义 |
---|---|
:id | 图书id |
如下是具体图书的详情信息,部分demo中用不到的信息省略jquery
{ "id":"1003078", "title":"小王子", "alt":"https:\/\/book.douban.com\/subject\/1003078\/", "image":"https://img3.doubanio.com\/mpic\/s1001902.jpg", "author":[ "(法)圣埃克苏佩里" ], "publisher":"中国友谊出版公司", "pubdate":"2000-9-1", "rating":{"max":10,"numRaters":9438,"average":"9.1","min":0}, "author_intro":"圣埃克苏佩里(1900-1944)1900年,玛雅·戴斯特莱姆......", "catalog":"序言:法兰西玫瑰\n小王子\n圣埃克苏佩里年表\n" }
项目取名为DouBanBookApp,项目的结构小程序默认的结构同样web
DouBanBookApp pages index 首页 index.js index.wxml index.wxss detail 详情页 detail.js detail.wxml detail.wxss requests api.js API地址 request.js 网络请求 utils util.js 工具 app.js app.json app.wxss
应用的主调色参考了豆瓣app的色调,采用了偏绿色。ajax
首页顶部展现搜索输入框,用户输入图书名称,点击搜索按钮,展现图书列表。图书可能会不少,不能一会儿所有展现,须要用到分页,app上最多见的列表分页就是上拉加载模式,根据小程序提供的组件中,找到了一个比较符合场景的scroll-view组件,这个组件有一个下拉到底部自动触发的bindscrolltolower
事件。json
先制做出界面的静态效果,以后再整合API,因为本人对界面设计不敏感,因此随便弄了一个粗糙的布局,看得过去就好了,嘿嘿~~
index.wxml
<view class="search-container"> <input type="text" placeholder="输入书名搜索"></input><icon type="search" size="20"/> </view> <scroll-view scroll-y="true" style="width:100%;position:relative;top:40px;height:200px"> <view style="text-align:center;padding-top:50rpx;"> <icon type="cancel" color="red" size="40" /> <view><text>没有找到相关图书</text></view> </view> <view style="text-align:center;padding-top:50rpx;"> <icon type="search" size="60" /> <view><text>豆瓣图书</text></view> </view> <view class="header"> <text>图书 10本图书</text> </view> <view class="common-list"> <view class="list-item"> <view class="index-list-item"> <view class="cover"> <image class="cover-img" src="images/demo.png"></image> </view> <view class=