小程序之注册配置详解

本文主要介绍微信小程序的框架页面结构。

小程序目录结构

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page
一个小程序主体部分由三个文件组成,必须放在项目根目录下

文件 可选性 描述
app.js 必须项 小程序逻辑(注册入口)
app.json 必须项 小程序公共设置(路由配置以及 app 窗口设置)
app.wxss 可选项 小程序公共样式表

一个 小程序页面由四个文件组成,分别是

文件 可选性 描述
wxml 必须项 应用模块结构
wxss 可选项 应用模块样式表
json 可选项 应用模块的窗口配置
js 必须项 应用模块逻辑

配置

app.json 文件对微信小程序进行全局配置,决定页面文件的路径,窗口表现,设置网络超时时间,设置多个 tab 等。

{
  "pages": [
    "page/index/index",
    "page/logs/index"
  ],
  "window": {
    "navigationBarTitleText": "Demo"
  },
  "tabBar": {
    "list": [{
      "pagePath": "page/index/index",
      "text": "首页"
    }, {
      "pagePath": "page/logs/logs",
      "text": "日志"}]
    },
    "networkTimeout": {
      "request": 10000,
      "downloadFile": 10000
    },
    "debug": true
}

app.json 配置项列表

文件 类型 可选性 描述
pages StringArray 必选项 设置页面路径
window Object 可选项 设置默认页面的窗口
tabBar Object 可选项 设置底部 tab 的表现
networkTimeout Object 可选项 设置网络超时时间
debug Boolean 可选项 设置是否开启 debug 模式

pages
接受一个字符串数组,来指定小程序由那些页面组成,每一项代表页面的信息,数组的第一项代表小程序的初始页面。
小程序新增、减少页面,都需要对 pages 数组进行修改。
window 用于设置小程序的状态栏、导航条、标题、窗口背景色

文件 描述
navigationBarBackgroundColor 导航背景色 例:#000000
navigationBarTextStyle 导航栏标题颜色,仅支持black/white
navigationBarTitleText 导航栏标题文字内容
backgroundColor 窗口的背景色 例:#ffffff
backgroundTextStyle 下拉背景字体、 loading 图的样式,仅支持 dark/light
enablePullDownRefresh 是否开启下拉刷新 例:false

页面.json 只能设置 window 相关的配置项,以决定本页面窗口表现,所以无需写 window 这个关键字。

tabBar
如果我们小程序是一个多 tab 应用,那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。
tabBar 是一个数组,只能配置最少 2 个,最多 5 个 tab,tab 按数组的顺序排序。

文件 可选性 描述
color 必选项 tab上文字默认颜色
selectedColor 必选项 tab上文字选中时的颜色
backgroundColor 必选项 tab的背景色
borderStyle 可选项 tab上边框的颜色,仅支持 black/white
list 必选项 tab的列表,详见 list 属性

其中 list 接受一个数组,数组中的每一项都是一个对象,其属性如下:

文件 可选性 描述
pagePath 必选项 页面路径,必须在 pages 中先定义
text 必选项 tab上按钮文字
iconPath 必选项 图片路径,icon 大小限制为 40kb
selectedIconPath 必选项 选中时的图片路径,icon 大小限制为 40kb

networkTimeout
设置各种网络请求超时时间

文件 可选性 描述
request 可选项 wx.request 的超时时间,单位毫秒
connectSocket 可选项 wx.connectSocket 的超时时间,单位毫秒
uploadFile 可选项 wx.uploadFile 的超时时间,单位毫秒
downloadFile 可选项 wx.downloadFile 超时时间,单位毫秒

debug
可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有 Page 的注册,页面路由,数据更新,事件触发 。

小程序框架与 MVC 简述

小程序框架

小程序划分为视图层(View)和逻辑层(AppService)的两层框架,并在视图层和逻辑层之间提供数据传输和事件系统。严格意义上,按照 MVC 的框架模式而言,小程序的逻辑层包含 MVC 中的 Model 以及 Controller.

MVC 简述

View 有两层作用,其一是负责从 Model层接收、渲染和显示数据;其二是负责接受和传递数据到 Controller 层;
Controller 也有两层作用,其一是接收 View 层抑或是请求 URL传递的表单数据,并对表单数据进行控制校验,其二是处理用户交互体验效果,比如在 View 进行动画效果设置、滚动加载体验等;
Model 层,负责接受 Controller传输的数据并对数据进行逻辑处理后返回给 View 层。

MVC 优点

其一,分层的设计有助于管理复杂的应用程序,将数据逻辑与界面显示分离,有助于后期针对相应的层级维护和管理;
其二,简化分组开发,能够独让负责不同业务模块的开发者进行模块化功能开发,并行推进项目进度.
小程序入口文件 app.js、 app.json 以及 app.wxss.

app.js,小程序入口配置
 App({
 onLaunch: function() {
 //小程序生命周期初始化,全局加载(调用)一次,一般是用于程序启动时加载应用共享资源,
 },
 onShow: function() {
 //当小程序启动,或从`后台进入前台显示`,会触发 onShow,监听小程序显示,会被调用多次
 },
 onHide: function() { //当小程序从前台进入后台时,会触发 onHide 事件,会被调用多次

},
 globalData: 'I am global data'
})

前台:指重新打开小程序显示,即从退出当前应用,用户又打开该应用
后台:是指退出小程序应用(并非完全退出或关闭),相当于按手机返回键退出当前应用,但是小程序还在所谓的【后台】运行
App() 必须在 app.js 中注册,且不能注册多个
不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例
不要在 onLaunch 的时候调用 getCurrentPage(),此时 page 还没有生成
通过 getApp() 获取实例之后,不要私自调用生命周期函数,即onLaunch,onShow,onHide这三个周期函数,自定义的函数是不属于周期函数范围内
app.json,小程序应用模块的路由配置、窗口以及 Tab 配置,#仅作为注释说明,实际配置应该去掉

 {
 "pages":[
 "page/index/index", ##page配置的数组的第一项作为小程序的初始页面 
 "page/logs/logs"
 ],

  "window":{
    # 配置导航条
    "navigationBarBackgroundColor":"#9084cc", ##背景颜色,HexColor 类型(16 进制颜色值)
    "navigationBarTextStyle":"dark",##标题颜色,仅支持 dark/white
    "navigationBarTitleText":"我的订单",##标题内容,String

    # 配置窗口
    "backgroundColor":"#909902",##窗口背景色,HexColor 类型
    "backgroundTextStyle":"dark",##下拉背景字体,String,仅支持 dark/light
    "enablePullDownRefresh"true,##是否开启下拉刷新
  },
  "tabBar":{
    "color":"", ##tab 上的文字颜色
    "selectedColor":"", ##tab 上的文字选中时的颜色
    "backgroundColor":"", ##tab 的背景色
    "borderStyle":"", ##tabbar 上边框的颜色, 仅支持 black/white

## tab 的列表,最少 2 个、最多 5 个 tab
    "list":[
     {
       "pagePath":"", ##页面路径,必须在 pages 中先定义
       "text":"", ##tab 上按钮文字
       "iconPath":"", ##图片路径,icon 大小限制为 40kb
       "selectedIconPath":"" ##选中时的图片路径,icon 大小限制为 40kb
     },
    ]
  },
## 时间单位 「毫秒」
  "networkTimeout":{
    "request":3000, ## wx.request 的超时时间
    "connectSocket":5000, ## wx.connectSocket 的超时时间
    "uploadFile":10000, ## wx.uploadFile 的超时时间
    "downloadFile":10000 ## wx.downloadFile 的超时时间
  },

## 开发者工具的控制台面板,调试信息以 info 的形式给出,
## 其信息有 Page 的注册,页面路由,数据更新,事件触发
 "debug":true
}

pages 是属于 Array 类型,Array 的每一项都是 url 的字符串,url 为相对根目录下的 module 路径,无需扩展名,框架会自动加载 module 下的js、 wxml、 wxss、 json 文件
配置的 pages 下的 module 的 js,wxss,json,wxml必须为相同的名称,框架会根据 module 名称自动加载上述的扩展名文件
tab 上的 list,最少 2 个、最多 5 个

**app.wxss **

app.wxss
 /**定义的样式将应用到小程序所有的模块中**/
 view,image,scroll-view,text{
 margin: 0px;
 padding: 0px;
 }
 .headerView{
 width: 100%;
 height: 32px;
 background: floralwhite;
 }

其他样式

尺寸单位

  • responsive pixel,即rpx,响应式像素,是一种能够提供各种设备都能阅读的一种设计方法,在微信小程序中,以 iphone6 作为屏幕标准,1rpx = 0.5px,微信小程序在底层会根据我们设定的 px来对屏幕自适应,有助于开发者更集中于开发,应用场景在设置间距、长宽等
  • root em,即 rem,是 css3 新定义的一种长度单位,相对于页面定义的 html 根元素来调整大小,与 em 相对父元素调整大小更兼具相对和绝对字体调整大小的优势,在微信小程序中,1rem = 750/20 rpx = 75px,规定标准的 iphone6 的宽度是 20rem,应用场景在于设置字体大小

样式导入
使用@import 语句可以导入外联样式表,@import 后跟需要导入的外联样式表的相对路径,用;表示语句结束
框架组件上支持使用 style、 class 属性来控制组件的样式

原文链接:http://layjoy.space/2017/01/14/wechat-2/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,314评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • 微信小程序之注册配置 小程序页面结构 pagespages/app.js(小程序注册入口)pages/app.js...
    疾风先生阅读 5,166评论 0 1
  • 昨天看了一下微信小程序官方文档,总结一下自己学习的个人心得. 首先从官方文档给的框架说起,微信小程序官方文档给出了...
    Mr大大大阅读 47,413评论 9 68
  • 在我没结婚之前,每当听到别人提起一家三口,在我的脑海中总会浮现出一个美丽的画面: 三个人手拉着手,海风吹拂着母亲的...
    女钢铁侠阅读 4,143评论 53 42

友情链接更多精彩内容