描述
开 本: 32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302472766丛书名: 移动开发丛书
本书适合微信小程序开发初学者,企业微信小程序开发者、公众号运营者及移动互联网开发人员阅读,也适合有一定开发基础但对微信小程序项目开发不熟悉的程序员使用。
目 录
第1章 初识小程序 1
1.1 小程序是什么 2
1.1.1 小程序的优点 2
1.1.2 小程序的开放能力 2
1.1.3 小程序的前景 3
1.2 小程序开发文档与开发工具 4
1.2.1 小程序开发文档 4
1.2.2 微信Web开发者工具 5
1.2.3 开发工具Tips 8
1.3 大事记 11
1.4 “一秒钟有多长”小游戏 12
1.4.1 游戏规则 12
1.4.2 下载与运行 13
1.4.3 界面、样式与脚本 14
1.5 小结 18
第2章 开发框架配置和逻辑层 19
2.1 开发框架简介 20
2.1.1 底层实现 20
2.1.2 小程序与HTML 5的区别与联系 21
2.1.3 小程序概览 22
2.2 注册程序与页面 23
2.2.1 注册程序 23
2.2.2 注册页面 23
2.2.3 页面的路由 24
2.3 项目架构 24
2.4 配置 26
2.4.1 全局配置 26
2.4.2 页面配置 29
2.5 小技巧 30
2.5.1 页面路由时传递参数 30
2.5.2 下拉刷新 31
2.6 小结 32
第3章 开发框架视图层 33
3.1 样式语言WXSS 34
3.1.1 WXSS的引入方式 34
3.1.2 尺寸单位 37
3.1.3 选择器 41
3.2 标签语言WXML 44
3.2.1 WXML数据绑定与渲染 44
3.2.2 WXML模板与引用 47
3.2.3 WXML事件绑定 48
3.3 小结 51
第4章 组件与API 52
4.1 组件 53
4.1.1 视图容器 54
4.1.2 基础内容 55
4.1.3 表单组件 57
4.1.4 导航 58
4.1.5 媒体组件 59
4.1.6 其他组件 61
4.2 API 62
4.2.1 网络 62
4.2.2 文件 64
4.2.3 设备 65
4.2.4 导航 66
4.2.5 分享 67
4.2.6 获取小程序页面二维码 67
4.2.7 小程序模板消息 70
4.2.8 公众号模板消息打开相关小程序 72
4.2.9 公众号自定义菜单点击打开相关小程序 75
4.2.10 移动App分享小程序页面 80
4.3 Flex布局 81
4.3.1 flex-direction属性 83
4.3.2 flex-wrap属性 84
4.3.3 flex-flow属性 85
4.3.4 justify-content属性 86
4.3.5 align-items属性 87
4.3.6 align-content属性 90
4.3.7 项目属性 92
4.4 小结 94
第5章 博客园客户端——新闻资讯类小程序 95
5.1 项目介绍 96
5.1.1 项目结构 96
5.1.2 项目部署 97
5.1.3 项目配置 97
5.2 server端及API接口 99
5.2.1 博客列表API 100
5.2.2 全文内容API 102
5.2.3 新闻列表API 103
5.3 博客列表页 105
5.3.1 界面 106
5.3.2 博客模板 106
5.3.3 逻辑 108
5.4 博客详情页 110
5.4.1 界面 111
5.4.2 逻辑 112
5.5 新闻列表页 113
5.5.1 界面 114
5.5.2 新闻模板 114
5.5.3 逻辑 115
5.6 新闻详情页 117
5.6.1 界面 118
5.6.2 逻辑 118
5.7 公共JS脚本 119
5.7.1 公共配置 119
5.7.2 解析 119
5.8 小结 124
第6章 测测你是三国杀中的谁——调查测试类小程序 125
6.1 数据结构 126
6.1.1 JSON介绍 126
6.1.2 问题和答案的数据结构 127
6.2 项目结构 130
6.2.1 起始页 131
6.2.2 测试页 132
6.2.3 结果页 134
6.2.4 辅助JS 135
6.3 小结 136
第7章 微餐厅——餐饮管理系统 137
7.1 项目部署 138
7.1.1 搭建开发环境 138
7.1.2 上传代码 138
7.1.3 导入数据库 139
7.1.4 预览小程序 140
7.2 服务器端介绍 140
7.2.1 数据库设计 140
7.2.2 管理后台介绍 142
7.2.3 API接口 144
7.3 微信授权登录 145
7.3.1 微信登录 145
7.3.2 服务器端:code换取session_key 146
7.3.3 数据签名加密 148
7.4 在线排号页 149
7.4.1 服务器端接口 150
7.4.2 小程序端实现 150
7.5 确认取号页 153
7.5.1 服务器端接口 154
7.5.2 小程序端实现 154
7.6 我的排号 158
7.6.1 服务器端接口 158
7.6.2 小程序端实现 159
7.7 查看菜单 162
7.7.1 服务器端接口 162
7.7.2 小程序端实现 162
7.8 小结 165
附录A 小程序接入指南 166
附录B 延伸阅读 169
附录C 开发工具常用快捷键 172
闫小坤 2017年3月于北京
6.2 项目结构完整代码可以查看下载资源的ch06/sgs。项目结构如图6-4所示。 图6-4项目有3个page:起始页、测试页、结果页。项目的配置文件如下:文件:app.json1 {2 “pages”:[3 “pages/sgs/index”,4 “pages/sgs/show”,5 “pages/sgs/result”6 ],7 “window”:{8 “backgroundTextStyle”:”light”,9 “navigationBarBackgroundColor”: “#fff”,10 “navigationBarTitleText”: “测测你是三国杀里的谁”,11 “navigationBarTextStyle”:”black”12 }13 }6.2.1 起始页起始页的界面如图6-1所示。程序的主体是显示三国杀封面图,并显示“开始测试”按钮。参考程序:pages/sgs/index.wxml1 2 3 测测你是三国杀里的谁4 5 6 7 8 点击 “开始测试”按钮进入测试页面。参考程序:pages/sgs/index.js1 //index.js2 //获取应用实例3 var app = getApp()4 Page({5 //事件处理函数6 start: function() {7 wx.navigateTo({8 url: ‘../sgs/show’9 })10 }11 })6.2.2 测试页测试页的界面如图6-2所示。程序的主体是展示一系列题目供用户回答,并显示“下一题”按钮。参考程序:pages/sgs/ show.wxml1 2 3 {{answer.question}}4 5 6 10 14 15 16 17 第4到16行定义一个form表单,内置两个单选框供用户选择。第15行定义一个用于提交的button按钮,绑定到formSubmit方法。用户点击“下一题”后,会根据JSON数据跳到下一题,或者进入结果页。参考程序:pages/sgs/ show.js1 //show.js2 var sgsdata = require(‘../../utils/sgsdata.js’)3 //获取应用实例4 var app = getApp()5 Page({6 data: {7 answers:{},8 answer:{},9 checked_0:false,10 checked_1:false11 },12 //表单提交事件处理函数13 formSubmit: function(e) {14 var nextId = e.detail.value.nextId;15 if(nextId == “”){16 return;17 }18 if(nextId.indexOf(‘result’) != -1){//result_N show result19 var results = nextId.split(‘_’);20 wx.navigateTo({21 url: ‘../sgs/result?id=’ results[1]22 })23 }else{24 this.setData({25 checked_0:false,26 checked_1:false,27 answer:this.data.answers[nextId]28 29 });30 }31 },32 onLoad: function () {33 var ans = sgsdata.getAnswer();34 this.setData({35 answers:ans,36 answer:ans[0]37 });38 }39 })6.2.3 结果页结果页的界面如图6-3所示。程序的主体是展示答案,包括人物角色、图片、性格解读。参考程序:pages/sgs/result.wxml1 2 3 4 你是三国杀中的{{result.name}}5 6 7 8 {{result.text}}9 10 对应的js逻辑如下:参考程序:pages/sgs/result.js1 //result.js2 var sgsdata = require(‘../../utils/sgsdata.js’)3 //获取应用实例4 var app = getApp()5 Page({6 data: {7 result:{}8 },9 onLoad: function (options) {10 var id = options[‘id’]11 var results = sgsdata.getResult();12 this.setData({13 result:results[id]14 });15 }16 })第10行,通过options获取上一个页面传递过来的参数。对应的WXSS如下:参考程序:pages/sgs/result.wxss1 /**result.wxss**/2 .result_container {3 height: 100%;4 display: flex;5 flex-direction: column;6 align-items: center;7 justify-content: space-between;8 box-sizing: border-box;9 } 10 11 .result_title{12 margin-bottom: 20rpx;13 }14 .result_content{15 margin-top: 10rpx;16 padding: 10rpx;17 border: 1px solid #F8F8FF;18 }第2行result_container定义测试结果的容器样式。第11行result_title定义测试结果的标题样式。第14行result_content定义测试结果的解读样式。6.2.4 辅助JSutils/sgsdata.js用于保存问题和结果的json数据。根据小程序框架模块化的要求,我们提供两个对外接口:? getAnswer提供所有问题数据。? getResult提供所有结果数据。参考程序:utils/sgsdata.js1 function getAnswer(){2 var data = [{“id”:1,”question”:”比起循规蹈矩但有理可据的常规工作,你更喜欢去做些含有风险性但收益可观的创造性活动。”,”answer”:[{“option”:”A”,”text”:”是”,”action”:”result_A”},{“option”:”B”,”text”:”否”,”action”:”3″}]},…………];3 return data;4 }5 6 function getResult(){7 var result = {“A”:{“name”:”吕蒙”,”img”:”../../images/lvmeng.jpg”,”text”:”你是一个富有志向而又深谋远虑的人,喜欢为自己制定高瞻远瞩的长远目标,为实现终的胜利甘愿选择隐忍的生活方式,不管过程有多艰辛多漫长你都甘之如饴。你享受生活带来的充实感,善于观察生活中的细节,做事会带有很明确的目的性。你用深藏不露诠释了一种深邃的进取。”}},…………};8 return result;9 }10 11 module.exports = {12 getAnswer: getAnswer,13 getResult:getResult14 }6.3 小 结本章通过编写“测测你是三国杀里的谁”项目向读者介绍了JSON的基本知识,包括如何在页面路由中传递数据、form表单的使用、如何使用图片。本章的项目是一个通用方案,读者可以自行修改问题和答案的逻辑和数据,创造新的调查测试游戏。
评论
还没有评论。