(一)基础篇

学习小程序开发有一段时间了,也自己试着上线小程序,只不过我的是个人版,做了个旅行日记功能的小程序,然后腾讯不让上线(企业版貌似可以,交300块嘛)。

一、申请开发账号

首先,要有一个独立的邮箱,这里推荐网易163邮箱,每天可以申请一个,足够用了。

其次,前往微信公众平台的小程序分类中进行注册,链接

再次,进行邮箱激活,填入小程序名和小程序的logo,可以临时弄一个,之后发布前更改,不过名字这种东西很容易重复,所以起个名字很难。

最后,下载开发环境,安装后,填入APPID。


微信小程序开发设置中有本小程序的APPID


IDE中新建小程序填入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到,你们也可以找个交流群,很多大神会帮助你的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容