学习小程序开发有一段时间了,也自己试着上线小程序,只不过我的是个人版,做了个旅行日记功能的小程序,然后腾讯不让上线(企业版貌似可以,交300块嘛)。
一、申请开发账号
首先,要有一个独立的邮箱,这里推荐网易163邮箱,每天可以申请一个,足够用了。
其次,前往微信公众平台的小程序分类中进行注册,链接。
再次,进行邮箱激活,填入小程序名和小程序的logo,可以临时弄一个,之后发布前更改,不过名字这种东西很容易重复,所以起个名字很难。
最后,下载开发环境,安装后,填入APPID。
二、官方DEMO
1、文件列表
简单说明下:
(1)每个page都有js(代码逻辑),json(配置数据),wxml(界面可视化搭建,类似安卓的xml),wxss(类似网页的css,与wxml配合,控制显示的样式)
(2)总的配置项在app层,公共部分,比如背景颜色,标题
app.json修改window里面的属性可以修改标题、标题栏颜色、字体及字体颜色等
app.wxss修改page里面的属性可以统一修改页面背景色等
app.js是一些启动相关的,如注册登录(一般直接用微信的用户名和头像就好),在onLaunch里编码就行
(3)一些公共的接口函数,如网络请求和响应,数据计算等,统一放在util文件夹下的js脚本中
(4)project.config.json,一些配置相关的,开发工具配置的记录部分,比如appid啥的在这里
2、首页
我喜欢从直观的部分看起,这个因人而异,通常呢,我们做APP有一些控件什么的,这里view是基类,button是按钮,image是图片,text是文字,简单易懂,里面有些方法随后介绍吧。
class标签的作用是跟wxss文件配合的,用来确定唯一的显示样式,一会儿解释。
bindtap绑定点击事件。后面的是函数名,在js里实现。
wx:if是逻辑处理是用的,当然也有else前缀wx可以当做命名空间理解吧,这里只提一下,所有鲜红色的是属性,后面是属性值,类似键值对。
3、代码讲解
下面斜体是我加的。
//index.js
//获取应用实例
const app = getApp() 定义在根类上的,通过这个实例可以访问APP这个实例的全局变量和全局方法
Page({
data: {
motto: 'Hello World',
userInfo: {},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo')
}, 上面这些事本页面的全局变量,都放在data这个属性里
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
}, 这是个函数,细心的会发现在1里有这个函数名,可以被屏幕点击事件触发页面跳转
onLoad: function () {
if (app.globalData.userInfo) { 获取全局的userInfo内容
this.setData({
userInfo: app.globalData.userInfo,
hasUserInfo: true
}) 向data成员变量赋值并刷新页面
} else if (this.data.canIUse){
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
app.userInfoReadyCallback = res => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
} else {
// 在没有 open-type=getUserInfo 版本的兼容处理
wx.getUserInfo({
success: res => {
app.globalData.userInfo = res.userInfo
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
}
},
getUserInfo: function(e) {
console.log(e)
app.globalData.userInfo = e.detail.userInfo
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
}
})
4、本地存储
程序中出现了,随口说说,微信给每个小程序开了本地缓存(10M),当然可以将照片等以文件的形式存手机中,这个没有限制。
在app.js中的onLaunch有一段
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
取出key是logs的本地存储的值,然后在开头添加当前时间再重新覆盖回去。当然,这里最好存一些数据,和简单的图片,别存太多图片,大图用网络加载比较好。现在很多云支持外链,而且前期开发流量啥的免费。后面我会介绍我用的云的。
总结:
毕竟是helloworld,确实不复杂,或者很多知识点我没有get到,你们也可以找个交流群,很多大神会帮助你的。