微信小程序入门篇(一)

小程序也已经出来有一段时间啦,对于一些想去学习又无从下手的朋友们,欢迎和代码君一起去学习一下小程序!

准备工作

  1. 下载开发工具:微信小程序开发工具

创建项目

  1. 添加项目

     

    创建项目1-1.png

  2. 如果没有AppID可以选择无AppID,项目名称可以随便起,因为入门教程我想教大家都比较想学的商城,所以直接叫商城啦,项目目录中的shopping是自己创建的新文件夹,空文件夹系统就会自动在shopping文件夹中创建整个项目架构,记得勾选quick start项目

    创建项目1-2.png

项目架构分析

  1. 整体架构:自动创建的项目就会以下架构目录
  • 红框1 :菜单栏
  • 红框2:界面效果显示
  • 红框3 :代码架构目录
  • 红框4 :代码栏

     

    项目架构1-1.png

  1. 着重对代码架构目录做介绍:app.js、app.json、app.wxss,这三个中前两个是必看的,前两个相当于目录,就好比你读一本书,都要先看一下目录,所以以后看别人项目的时候,首先先看app.js和app.json
  • app.js是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。调用框架提供的丰富的 API,如本例的同步存储及同步读取本地数据。
  • ​ app.json 是对整个小程序的全局配置。我们可以在这个文件中配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题。注意该文件不可添加任何注释。
  • app.wxss 是整个小程序的公共样式表。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。
  1. app.json解析:首先既然是.json所以一定是json格式,这里面包含两部分pageswindow,固定字段,pages就是整个小程序包含的页面,可以根据路径查找到对应的页面,window就是设置一些窗口样式,依次是配置小程序的窗口 背景字体样式,配置导航条背景样式,配置默认标题,及颜色

    项目架构3-1.png


    现学现用
  • 我要设置导航栏的标题为商城,字体为白色,背景为黑色要怎么做呐? 很简单吧,找到app.json把下面的代码替换到window里面就可以啦,要解释一下navigationBarBackgroundColor和navigationBarTextStyle都是支持rgb的,也就是说设置字体颜色navigationBarTextStyle为白色填入white其实也可以填入#fff,都是一样的效果
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#000",
    "navigationBarTitleText": "商城",
    "navigationBarTextStyle":"white"
  }
  • 我要增加一个界面怎么办呐? 同理只需在app.json里的pages属性加入你要的路径pages/addPage/addPage,你写好路径后系统会自动给你建好文件的
"pages":[
    "pages/index/index",
    "pages/logs/logs",
    "pages/addPage/addPage"
  ]

下图是解决以上两个问题的效果图,app.json就暂时解析到这里,记着我们在这里面有新添加一个界面addPage,后面会详细介绍这个界面的,篇幅限制,这个先搁置一下

项目架构3-2.png

  1. app.js解析:看后缀名.js就知道是JavaScript的代码,首先看一下App里面包含的几个方法onLaunch、getUserInfo、getUserInfo

    项目架构4-1.png

  • onLaunch方法是小程序启动的时候执行的方法
    var logs = wx.getStorageSync('logs') || [] 
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

看一下里面的代码,wx.以这个开头的都是系统封装好的方法,我们都可以直接调用,输入wx.,系统会自动提示出自带的方法,查询更多系统定义的方法请看微信API文档,这里篇幅限制不能全部介绍

项目架构4-2.png


好,回归正题,看着三句话代码,wx.getStorageSync是获取本地缓存的logs字段,logs.unshift代码是什么意思呐?unshift是js的知识,unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。所以大概能理解这三句话代码啦,大致是取本地缓存数据logs字段,插入最新时间,然后存储再次存入到缓存中的logs字段里,说了这么多,那Storage存储的数据在哪里呐,请看下图,会更好理解,找到菜单栏里的调试->Storage下就可以看到本地缓存的logs字段及数据,你也可以自行添加数据,然后调用wx.getStorageSync('key值') ,就可以获取数据啦

项目架构4-3.png

  • globalData全局变量数据,
  • getUserInfo自定义的方法用于获取用户信息,整体的代码意思就是如果用户信息为空就去调用微信的登录接口,登录成功后存储在全局变量globalData里,分析两处代码第一处var that = this,that=this,这个是js语法属性,this应该是引用本实例的一个值,它将它赋值给that的原因从下面的代码中可以判断出来js的一些特性。每一个方法是一个封闭函数,它的上一层实例即为this,所以如果一个方法A包含另一个方法B,在A中使用this指的是A的实例,在B中使用this应该是B的实例,即拥有B的A,所以在这里我们为了拿到A中的实例this,必须要赋一个值给that,让B能使用A的实例。在此demo中,上面的this指的是app这个实例,为了在下面的方法中可以使用app的实例,所以赋了that给this。还不明白that=this可以参考此文献,第二处是typeof cb == "function" && cb(this.globalData.userInfo),代码中两次调用此代码所以要剖析一下,cb是callback的缩写,翻译代码意思就是cb==function,要求cb为方法,并且回调cb方法,剩下的wx.login猜都能猜出来是微信封装好的登录方法啦

getUserInfo:function(cb){
    var that = this
    if(this.globalData.userInfo){
      typeof cb == "function" && cb(this.globalData.userInfo)
    }else{
      //调用登录接口
      wx.login({
        success: function () {
          wx.getUserInfo({
            success: function (res) {
              that.globalData.userInfo = res.userInfo
              typeof cb == "function" && cb(that.globalData.userInfo)
            }
          })
        }
      })
    }
  },
  globalData:{
    userInfo:null
  }
  1. app.wxss 我打算放在下一节和addPage页一起讲

总结

  1. 通过这个篇幅的介绍,我们了解了小程序的整体架构,学习了如何创建小程序,以及对小程序目录app.js、app.json详细的分析,下一篇将会详细讲解addPage的编写,敬请期待!
  2. 温故而知新,看文上面的文章,不能一带而过,要学会举一反三,下面我提几个问题,看看读者吸收的怎么样。能回答以下问题说明你读懂这篇文章啦,读不懂请查看上面的内容自行找答案
  • wx.login是什么?
    • that = this的作用?
  • 在哪里可以查到StorageSync本地缓存的数据?
  • 如何增加页面?
  • 在哪里设置导航栏的属性?



作者:代码君_Coder
链接:https://www.jianshu.com/p/e63be70e3ab9
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/qq_38332693/article/details/89739022