这是教程,也不是教程。css
能够先看Demo的操做动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCalc)html
自从微信小程序内测以来,个人网络信息几乎被它刷屏,一瞬间,都不知道发生了什么。特别是当晚有人熬夜吐血出教程,我勒个去,这么拼,感受不立马学习等会儿就会被别人踩死在这个行业。惶恐惶恐的过来几天,等到了国庆终于也能够跟风熬夜研究了。git
好吧,来吧,因此说菜鸟只会写计算器。。。。嗯,是的,我想不出什么好创意。下面介绍一下这个简易计算器,以及开发过程当中踩的一些坑吧。github
首先,什么Web开发者工具之类的、文档之类的,网上多的是,我就不重复了,已经不须要什么破解了,微信官方已经修改验证机制,没有APPID也能玩了,只不过部分功能受限。json
其次,微信小程序开发其实不难,在没掌握以前我也是不明觉厉,看似高大上。其实他相对咱们传统的写法更简单,高度封装了,按照他们的规则和规范来,写起来体验仍是很不错的。小程序
但由于没有权限,目前的微信小程序都是在开发者工具的模拟器中运行的,不知道在微信上真实状况如何。微信小程序
wxml是微信本身开发的一套标记语言,你能够直接看作是HTML文件也没问题,由于咱们的界面构建都是在这个文件里编写,只是没有HTML标签了,只有wxml标签了,而wxml标签数量也是不多的。
wxss是微信本身开发的一套样式文件格式,等同于咱们的CSS文件,写法也是同样的,只是换了个文件后缀,之前咱们怎么写CSS的在微信小程序中咱们依然怎么写。数组
wxml加上wxss咱们就能够构建出咱们想要的界面UI了。微信
xxx.js文件就是写JS的地方,每一个xxx.js对应一个同名的xxx.wxml文件,xxx.js文件必须有Page对象,哪怕该页面没有任何业务逻辑。输入Page微信Web开发者工具会自动生成一些列空方法待你实现,固然你能够不实现,只是把你把骨架搭好而已。网络
xxx.josn文件就是配置文件,通常是全局配置才用,好比根目录的app.josn
,定义了小程序由哪些页面构成,小程序导航Bar样式等,属性看名字就知道什么意思了。
pages
属性配置的是页面,第一个就是启动页,全部页面都必须在这里配置,若是你建了一个页面忘记在这里添加了,那么你会很郁闷的,应为到时候页面跳转的时候onLoad
方法不会执行,我就被这个浪费好多时间抓耳饶腮好奇不断。
看看下面的项目结构图,一个页面是一个文件夹,一个面一般都有js、wxml、wxss,wxml和js文件是必须的,能够有没有样式。
calc(计算器页面)、history(历史记录)、index(小程序首页、启动页)、logs(日志信息)、utils(js工具类),logs和utils是自带的,能够有能够没有。
这个简易计算器界面布局依然延续祖制,采用CSS Flexbox布局,貌似微信官方也是这么推荐的(官方文档中就是使用Flexbox)。
计算器的按键,都是用<text>
标签来作的,加上wxss样式便可,固然也能够直接用button组件。
wxml:
<view class="btnGroup"> <view class="item blue" bindtap="clickBtn" id="{{id9}}">9</view> <view class="item blue" bindtap="clickBtn" id="{{id8}}">8</view> <view class="item blue" bindtap="clickBtn" id="{{id7}}">7</view> <view class="item orange" bindtap="clickBtn" id="{{idj}}">-</view> </view>
这里bindtap
,看名字就知道是用来绑定事件的,跟咱们在HTML中使用onclick
一个道理。id={{id9}}
双大括号中的值来自js文件中data属性定义的同名属性
wxss:
.btnGroup { display: flex; flex-direction: row; flex: 1; width: 100%; background-color: #fff; } .item { width:25%; display: flex; align-items: center; flex-direction: column; justify-content: center; margin-top: 1px; margin-right: 1px; } .item:active { background-color: #ff0000; }
css就没什么好说的了,惟一须要注意的是微信提供了一个尺寸单位rpx
,responsive pixel ,能够根据屏幕宽度进行自适应,官网文档有详细解析。我在计算器的history页面也有使用:
view、text,大部分页面都是它俩哥们。
按钮(button),index页面的按钮“简易计算器”
图标(icon),计算机的历史记录安静使用的就是icon自带的图标之一。
标记方式调整页面(navigator)
图片(Image),首页头像
for循环,历史记录显示页面用到了,得从Storage中读取数据展现,而Storage中保存就是一个数组
<block wx:for="{{logs}}" wx:for-item="log"> <view class="item">{{log}}</view> </block>
wx.navigateTo,导航,跳转,在当前页面打开新页面
Storage,本地存储,保存计算历史记录用到了它
有setStorage、getStorage,同时还有带Sync结尾的异步方法
每新建一个页面必定要记得去app.josn的pages属性中添加,否则的话使用navigateTo
跳转到新页面后新页面的onLoad
方法不会执行。
微信小程序中没有window等JavaScript对象,因此在写JS前想好替代方案,好比本计算器就被坑大了,原本使用eval
函数能够方便的计算表达式,结果无法用,绕了好大的弯。
微信小程序中的JS并非真正的JS,wxss也并非真正的CSS,因此写的时候仍是要注意一下。
本计算器存在不完善和bug,由于重点不是实现所有功能,而是搞清楚微信小程序开发方法,因此非关注点不用在乎。
微信小程序整体来讲不难,官方的文档也写的很是好,认真阅读官方文档就好。
最后,欢迎小伙伴star或fork【微信小程序版简易计算器】进行参考和学习,因为本人水平有限,程序中或博客中若有不对或错误之处请留言指出,谢谢!
另外,个人github还有【微信小程序-豆瓣电影】项目,欢迎学习