微信开发之旅———Day2(小程序框架——上)

上次大概了解了一下微信开发是什么,安装了环境,注册了账号,创建了第一个项目并调戏了它一会~~

##框架结构
一个标准的项目目录结构

pages,顾名思义,是页面的意思,这个文件夹里汇总着所有的页面。pages文件夹下还有多个子文件夹,就是具体的每一个页面。而每一个页面文件夹下又有着.wxml、.wxss、.js和.json文件。

然后继续来看,除了pages,同一级目录下还有app.js 、app.json 、app.wxss 、project.config.json

##app.js

//app.js
App({
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  },
  globalData: {
    userInfo: null
  }
})

app.js文件是小程序的脚本代码,用来监听并处理小程序的生命周期函数、声明全局变量。对于app的注册来说,涉及到一个App()方法,用于对小程序进行初始化操作。

App()的参数及其描述

参数类型描述触发时机
onLaunchFunction生命周期函数——监听小程序初始化当小程序初始化完成,会触发onLaunch
onShowFunction生命周期函数——监听小程序显示当小程序启动,或从后台进入前台显示,会触发onShow
onHideFunction生命周期函数——监听小程序隐藏当小程序从前台进入后台,会触发onHide
onErrorFunction错误监听函数当小程序发生脚本错误,或者API调用失败时,会触发onError并带上错误信息
其他Any开发者自定义函数或数据

示例代码:

App({

  /**
   * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
   */
  onLaunch: function () {
    
  },

  /**
   * 当小程序启动,或从后台进入前台显示,会触发 onShow
   */
  onShow: function (options) {
    
  },

  /**
   * 当小程序从前台进入后台,会触发 onHide
   */
  onHide: function () {
    
  },

  /**
   * 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
   */
  onError: function (msg) {
    
  }
})

##app.wxss
是整个小程序的公共样式表,每一个页面都可以使用,但是页面优先级较高(也就是说,如果页面和这里的样式产生冲突,会优先采用页面的wxss配置)

/**app.wxss**/
.container {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  padding: 200rpx 0;
  box-sizing: border-box;
} 

##app.json
是整个小程序的全局配置,配置小程序由哪些页面组成,配置小程序的窗口背景色等等。(每新加一个页面,都要来这里注册一下!!!否则打不开!窗口背景色等窗体配置同wxss一样,页面会覆盖这里的全局配置)

{
  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  }
}

这里来详细介绍一下app.json的配置问题。

1.全局配置

配置项类型是否必填描述
pagesArray设置页面路径
windowObject设置默认页面的窗口表现
tabBarObject设置底部的tab表现
networkTimeoutObject设置网络超时时间
debugBoolean设置是否开启debug模式

2.window配置

对象类型默认值描述
navigationBarBackgroundColorHexColor#000000导航栏背景颜色
navigationBarTextStyleStringwhite导航栏标题颜色,支持black/white
navigationBarTitleTextString导航栏标题文字内容
backgroundColorHexColor#ffffff窗口背景色
backgroundTextStyleStringdark下拉背景字体、loading图样式,支持dark/light
enablePullDownRefreshBooleanfalse是否开启下拉刷新

3.tabBar配置

对象类型是否必填默认值描述
colorHexColor标签页上的文字默认颜色
selectColorHexColor标签页上文字选中时的颜色
backgroundColorHexColor标签页的背景色
borderStyleStringblack标签条上的框线颜色,支持black/white
listArray标签页列表,支持至少两个,至多五个标签页
positionStringbottom可选值bottom、top

4.networkTimeout配置

对象类型是否必填描述
requestNumberwx.request的超时时间,单位为ms
connectSocketNumberwx.connectSocket的超时时间,单位为ms
uploadFileNumberwx.uploadFile的超时时间,单位为ms
downloadFileNumberwx.downloadFile的超时时间,单位为ms

##project.config.json
这是一个小程序的基础配置文件,用来配置一些最基础的信息在里面,比如项目名啊,版本号啊,一些功能的启动啊等等等等

{
	"description": "项目配置文件",
	"packOptions": {
		"ignore": []
	},
	"setting": {
		"urlCheck": true,
		"es6": true,
		"postcss": true,
		"minified": true,
		"newFeature": true
	},
	"compileType": "miniprogram",
	"libVersion": "2.5.0",
	"appid": "wxc897608a4adfe2eb",
	"projectname": "test01",
	"debugOptions": {
		"hidedInDevtools": []
	},
	"isGameTourist": false,
	"condition": {
		"search": {
			"current": -1,
			"list": []
		},
		"conversation": {
			"current": -1,
			"list": []
		},
		"game": {
			"currentL": -1,
			"list": []
		},
		"miniprogram": {
			"current": -1,
			"list": []
		}
	}
}

##Q&A:

Q:页面文件夹一定要叫pages吗?
A:不是强制的,不用pages命名也可以。但是更推荐这样,会便于代码的查看和后期的维护。

Q:每个页面都有自己的配置,为什么还要全局配置呢,不是很多余吗?
A:当然不是啦,使用全局配置可以少写很多代码,提高代码的精简度,减少工作量~

上一篇:微信开发之旅———Day1(小程序初体验)
下一篇:微信开发之旅———Day3(小程序框架——下)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值