热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

[解读小程序]菜谱查询+手机号吉凶查询Demo(一)

[解读小程序]菜谱查询+手机号吉凶查询Demo(一)分析的程序来源:http:blog.csdn.nety1258429182articledetails52666290还是

[解读小程序]菜谱查询+手机号吉凶查询Demo(一)

分析的程序来源:
http://blog.csdn.net/y1258429182/article/details/52666290
还是该作者的demo, 再次感谢.
github地址: https://github.com/StudyLifeTime/Eater-APP

因为是同一个作者的demo,有部分相同或者类似的功能将不再讲解.

预览效果图

>image>
view>

image组件有三种缩放模式: scaleToFill(不保持宽高比,拉伸填满image),aspectFill(保持宽高比,只保证短边完全显示,长边会被裁剪),aspectFit(保持宽高比,图片全部显示)
这里引用了两个样式container和img_splash. 样式的定义在splash.wxss中.

.container{
flex: 1; //flex 属性用于设置弹性盒模型对象的子元素如何分配空间
}

.img_splash{
width: 100%; //基于父元素宽度的百分比宽度
height: 100%;
}

这里的弹性盒子的flex属性和Android中的weight有些类似.

所有含有flex的项加起来,假如值是y,自己flex的值是x,则宽度占总数的比例为x/y.
flex 是 flex-grow、flex-shrink、flex-basis的缩写.

这里定义的.container类选择器会和在app.wxss中定义的.container的属性组合起来共同控制元素的样式, 如果是同名的属性, 那么将会app.wxss中的将会被覆盖.

.container {
height: 100%; //占父元素的高度的比例
display: flex; //弹性盒子
flex-direction: column; //纵向
align-items: center; //居中
justify-content: space-between; //各行之间留白
padding: 200rpx 0; //上下填充200rpx,左右填充0
box-sizing: border-box; //对元素指定宽度和高度包括padding和border的指定
}

splash.js

和之前的查询手机归属地一样, 就是创建动画, 执行动画等. 只不过这里初始大小只有原图的1/4. 1000ms之后再恢复原图大小.

    var animation = wx.createAnimation( {
duration: 1000,
timingFunction: 'ease-in-out',
transformOrigin: "0% 100%",
})
animation.scale( 0.5, 0.5).opacity(1).step()
// animation.opacity( 1 ).step()
this.setData( {
animationData: animation.export(),
})
setTimeout( function() {
animation.scale(1,1).step()
this.setData( {
animationData: animation.export(),
})
}.bind( this ), 1000 )

登录页 login

登录逻辑和之前的一模一样, 不再赘述.

查吉凶页 index

index.wxml

<view class="container">
<view class="userinfo">
<text class="query_result_tips">
{{result_tips}}text>
<text class="query_result">{{query_result}}text>
<input class="ipt_phone" placeholder="请输入查询的手机号" bindinput="bindKeyInput" />
<button class="btnQueryPhone" type="primary" bindtap="btnPhone">手机号查吉凶button>
<loading hidden="{{!loading}}">loading>
view>
view>

tips提示, 查询结果result的显示都采用了数据绑定.
这里引入了一个新的组件loading加载提示. 文档-加载提示
loading和toast的用法非常类似. 只是toast可以设置duration, 而loading没有. 也是采用数据绑定的方式控制显示和隐藏.

index.js

const app = getApp()
const APIURL = "http://apicloud.mob.com/appstore/lucky/mobile/query?key=17113fceca309&mobile="

var page = {
data: {
result_tips: '',
query_result: '无心插柳柳成荫,命中须有莫须有',
inputValue: "",
loading: false,
},
//查询手机归属地的方法
btnPhone: function() {
console.log( this.data.inputValue )
//调用网络请求
app.httpClient( APIURL + this.data.inputValue, (error, data) => {
// if(!data.result.value) return
console.log( data.result.conclusion)
this.setData({loading:true})
if(data.retCode == 200) {
this.setData( {
result_tips:'查询结果为如下: ',
query_result:data.result.conclusion,
loading:false
})
}
})

},
//输入绑定的方法
bindKeyInput: function( e ) {
this.setData( {
inputValue: e.detail.value
})

},
}

Page(page)

这里要说一下(error, data) =>{ //...}这是ES6语法中的arrow function. 展开来就是

function(error,data){
//...
}

这种形式和Java8引入的lambda表示式的写法很像.
前面写到在app.js中的回调

callback(null, res.data); //成功的回调
callback(error); //失败的回调

调用的都是该方法.

(error, data) => {
// if(!data.result.value) return
this.setData({loading:true})
if(data.retCode == 200) {
this.setData( {
result_tips:'查询结果为如下: ',
query_result:data.result.conclusion,
loading:false
})
}
}

作者说这是对网络请求的优化, 我并没有觉得. 并且网络请求的loading对话框, 不应该如此控制. 当然对于小程序来说, 我还是newbie. 仅保持怀疑的态度, 努力学习.

剩下菜谱查询的部分. to be continued …


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • HTTP 请求与响应详解
    本文深入探讨了HTTP请求和响应的结构,详细解释了每个部分的作用,并提供了相关示例。通过本文,读者可以全面理解HTTP协议中请求和响应的工作原理。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本报告涵盖了个人博客账号和码云账号的注册过程,以及对网络工程专业学习的反思与展望。通过回顾初入大学时的专业选择,分析当前的专业知识和技能水平,并对未来的职业规划进行了详细讨论。 ... [详细]
author-avatar
石隆雅雯79
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有