小程序基础[04]-小程序框架页面级文件

本文介绍小程序项目中的页面级文件,这些文件的作用,以及具体的配置字段和使用方式。

小程序中的页面级文件主要有四种类型,即每个页面都应该由4个文件组成。

小程序中同一框架页面的这四个文件必须具有相同的路径和文件名,当小程序启动进入或页面跳转的时候,小程序内部会自动根据app.json配置路径来找到对应的资源进行加载和渲染。单个页面的四个文件分别是:

控制页面逻辑的.js文件,必要的
控制页面结构的.wxml文件,必要的。
控制页面样式的.wxss文件,非必要的。
控制页面配置的.json文件,非必要的(如果创建那么使用{}表示空)。

1.0 配置文件(.json)

每个页面均可以拥有一个页面配置文件,该文件是json格式的,在进行配置的时候一定要严格遵守json数据的规范。

如果我们在小程序项目中新建-page,那么会自动创建默认的json文件,但该文件并非是必须的。

页面级别JSON文件配置项等同于app.json文件中的window配置项,它只能控制当前页面的窗口表现。

在渲染页面的时候,页面级文件中的window配置项会覆盖app.json中相同的配置项。

这里列出页面配置文件中的部分配置项:

{
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#110e1e",
    "navigationBarTitleText": "我的页面",
    "navigationBarTextStyle": "white",
    "backgroundTextStyle":"#e02"
  }

2.0 样式文件(.wxss)

小程序中的样式文件后缀名称是.wxss。

WXSS(WeiXin Style sheets)是基于CSS扩展的样式语言,用于描述WXML的组件样式。WXSS决定WXML的组件应该怎么显示,它具有CSS的大部分特性,并在CSS的基础上扩展了尺寸单位和样式导入等特性。

尺寸单位

因为CSS中原有的尺寸单位在不同尺寸的屏幕中不能完美的实现元素的按比例缩放,所有WXSS在CSS尺寸单位的基础上拓展了两种尺寸单位。rem和rpx这两种单位本身都是相对单位,在渲染的时候最终会被换算为px。

❏ rem ,全称为root em
❏ rpx ,全称为reponsive pixel

WXSS规定所有屏幕的宽度均为20rem。

 iphone6 屏幕实际宽度为375px,则20rem = 375px,那么在iphone6中,1rem = 18.75px
 iPhoneXS Max屏幕实际宽度为414px,则20rem = 414px,那么在iPhoneXS Max中,1rem = 20.7px

WXSS规定所有屏幕的宽度均为750rpx。

 iphone6 屏幕实际宽度为375px,则750rpx = 375px,那么在iphone6中,1rpx = 0.5px
 iPhoneXS Max屏幕实际宽度为414px,则750rpx = 414px,那么在iPhoneXS Max中,1rpx = 0.552px

选择器

CSS选择器用于选择需要应用样式的元素。
WXSS仅实现了CSS中的部分选择器,使用规则和CSS选择器基本一致,目前支持的选择器有:

选择器 样例 样例描述
.class .intro 选择所有拥有 class="intro" 的组件(类选择器)
#id #firstname 选择拥有 id="firstname" 的组件(id 选择器)
element view 选择所有 view 组件(标签选择器)
element, element view, checkbox 选择所有的 view 组件和所有的 checkbox 组件(并列)
::after view::after 在 view 组件后边插入内容( 伪元素选着器 )
::before view::before 在 view 组件前边插入内容( 伪元素选着器 )

3.0 结构文件(.wxml)

WXMLWeiXin Markup Language)是小程序专用的一套标记语言,同html类似用于展示并渲染界面。

WXML的渲染原理和React Native基本一致,它用一套标记语言在不同平台被解析为不同端的渲染文件。

WXML标记语言最终总是会转换为宿主端对应的语言,所以在小程序开发中WXML里使用的标签(组件)只能是小程序定义的而不能使用自定义标签,如此才能够保证页面在转译的时候能够被正确处理。

4.0 逻辑文件(.js)

这是一个JavaScript文件,里面写JavaScript代码。

页面的逻辑文件主要负责:设置初始化数据注册当前页面生命周期函数注册事件处理函数等

小程序的逻辑层文件都是JavaScript文件,整个项目中所有的这些JavaScript文件包括app.js最终都将被打包成一个js文件,该文件在小程序启动的时候运行,直到小程序销毁。小程序中每个页面的逻辑文件都拥有独立的作用域,这些JavaScript文件运行在独立的JavaScript引擎中。

注意:因为小程序中的JavaScript文件在独立的JavaScript引擎中运行,所以不能使用前端开发中的DOM操作,没有document和window等对象,自然也无法使用jQuery等框架。

这里列出页面中默认生成的JavaScript代码:


    Page({
      //页面的初始数据
      data: {},
      //生命周期函数--监听页面加载
      onLoad: function (options) { },
      //生命周期函数--监听页面初次渲染完成
      onReady: function () { },
      //生命周期函数--监听页面显示
      onShow: function () {},
      //生命周期函数--监听页面隐藏
      onHide: function () { },
      //生命周期函数--监听页面卸载
      onUnload: function () {},
      //页面相关事件处理函数--监听用户下拉动作
      onPullDownRefresh: function () { },
      //页面上拉触底事件的处理函数
      onReachBottom: function () { },
      //用户点击右上角分享
      onShareAppMessage: function () { }
    })

在页面的js文件中,通过Page函数来注册页面,该函数接收一个Object类型的参数,该对象中的内容主要分成页面的初始数据(data属性)、生命周期函数和事件处理函数等。

在页面的js文件中,可以通过var app = getApp()的方式来获取全局的小程序实例对象(在app.js文件中通过App函数注册的对象)。小程序框架以页面栈的形式维护了当前的所有页面,可以通过getCountPages函数来获取当前页面栈的实例,该实例以数组形式按照栈的顺序给出,第一个元素为首页最后一个元素为当前页(可以通过索引来获取)。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容