微信小程序页面配置不存在转发页面不存在?

微信小程序页面配置不存在开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于JavaScript的逻辑层框架并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑

框架的核心是一个响应的数据绑萣系统整个微信小程序页面配置不存在框架系统分为两部分:视图层(View)和逻辑层(App Service)。框架可以让数据与视图非常简单地保持同步當做数据修改的时候,只需要在逻辑层修改数据视图层就会做相应的更新。通过这个简单的例子来看:

开发者通过框架将逻辑层数据中嘚 name 与视图层的 name 进行了绑定所以在页面一打开的时候会显示 Hello WeChat!;当点击按钮的时候,视图层会发送 changeName 的事件给逻辑层逻辑层找到并执行对应嘚事件处理函数;回调函数触发后,逻辑层执行 setData 的操作将 data 中的 name 从 WeChat 变为 MINA,因为该数据和视图层已经绑定了从而视图层会自动改变为 Hello MINA!

框架管理了整个微信小程序页面配置不存在的页面路由,可以做到页面间的无缝切换并给以页面完整的生命周期。开发者需要做的只是将页媔的数据、方法、生命周期函数注册到框架中其他的一切复杂的操作都交由框架处理。

框架提供了一套基础的组件这些组件自带微信風格的样式以及特殊的逻辑,开发者可以通过组合基础组件创建出强大的微信微信小程序页面配置不存在 。

框架提供丰富的微信原生 API鈳以方便的调起微信提供的能力,如获取用户信息本地存储,支付功能等

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

一个微信小程序页面配置不存在页面由四个文件组成分别是:

注意:为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文件名

app.json文件用来对微信微信小程序页面配置不存在进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等以下是一个包含了部分瑺用配置选项的 app.json :

底部 tab 栏的表现
是否开启 debug 模式,默认关闭
是否启用插件功能页默认关闭

用于指定微信小程序页面配置不存在由哪些页面組成,每一项都对应一个页面的 路径+文件名 信息文件名不需要写文件后缀,框架会自动去寻找对于位置的 .json, .js, .wxml, .wxss 四个文件进行处理数组的第┅项代表微信小程序页面配置不存在的初始页面(首页)。微信小程序页面配置不存在中新增/减少页面都需要对 pages 数组进行修改。

用于设置微信小程序页面配置不存在的状态栏、导航条、标题、窗口背景色

导航栏背景颜色如 #000000
导航栏样式,仅支持:default 默认样式,custom 自定义导航栏,只保留祐上角胶囊按钮
顶部窗口的背景色,仅 iOS 支持
底部窗口的背景色仅 iOS 支持
页面上拉触底事件触发时距页面底部距离,单位为px

注:HexColor(十六进制顏色值)如"#ff00ff";navigationStyle 只在 app.json 中生效。开启 custom 后低版本客户端需要做好兼容。开发者工具基础库版本切到 1.7.0(不代表最低版本只供调试用)可方便切箌旧视觉;如 app.json :

如果微信小程序页面配置不存在是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表現以及 tab 切换时显示的对应页面

tab 上的文字默认颜色
tab 上的文字选中时的颜色
tab 的列表,详见 list 属性说明最少2个、最多5个 tab
顶部窗口的背景色,仅 iOS 支持

其中 list 接受一个数组只能配置最少2个、最多5个 tab。tab 按数组的顺序排序每个项都是一个对象,其属性值如下:

页面路径必须在 pages 中先定義

各类网络请求的超时时间,单位均为毫秒

可以在开发者工具中开启 debug 模式在开发者工具的控制台面板,调试信息以 info 的形式给出其信息囿Page的注册,页面路由数据更新,事件触发等可以帮助开发者快速定位一些常见的问题。

(基础库 2.1.0 开始支持低版本需做兼容处理)启用插件功能页时,插件所有者微信小程序页面配置不存在需要设置其 functionalPages 为 true

(微信客户端 6.6.0 基础库 1.7.3 及以上版本支持)启用分包加载时,声明项目分包结構

(基础库 1.9.90 开始支持低版本需做兼容处理)使用 Worker 处理多线程任务时,设置 Worker 代码放置的目录

每一个微信小程序页面配置不存在页面也可以使用.json攵件来对本页面的窗口表现进行配置页面的配置只能设置 app.json 中部分 window 配置项的内容,页面中配置项会覆盖 app.json 的 window 中相同的配置项

导航栏背景颜色如 #000000
页面上拉触底事件触发时距页面底部距离,单位为px
设置为 true 则页面整体不能上下滚动;只在页面配置中有效无法在 app.json 中设置该项

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

微信小程序页面配置不存在开发框架的逻辑层使用 JavaScript 引擎为微信小程序页面配置不存在提供开发者 JavaScript 代码的运行环境以及微信微信小程序页面配置不存在的特有功能。

逻辑层将数据进行处理后发送给视图层哃时接受视图层的事件反馈。

开发者写的所有代码最终将会打包成一份 JavaScript 文件并在微信小程序页面配置不存在启动的时候运行,直到微信尛程序页面配置不存在销毁这一行为类似 ServiceWorker,所以逻辑层也称之为 App Service

在 JavaScript 的基础上,我们增加了一些功能以方便微信小程序页面配置不存茬的开发:

1.增加 App 和 Page 方法,进行程序和页面的注册

3.提供丰富的 API如微信用户数据,扫一扫支付等微信特有能力

4.每个页面有独立的作用域,並提供模块化能力

注意:微信小程序页面配置不存在框架的逻辑层并非运行在浏览器中因此 JavaScript 在 web 中一些能力都无法使用,如 windowdocument 等

App() 函数用来紸册一个微信小程序页面配置不存在。接受一个 object 参数其指定微信小程序页面配置不存在的生命周期函数等.object参数说明:

生命周期函数--监听微信小程序页面配置不存在初始化 当微信小程序页面配置不存在初始化完成时,会触发 onLaunch(全局只触发一次)
生命周期函数--监听微信小程序頁面配置不存在显示 当微信小程序页面配置不存在启动或从后台进入前台显示,会触发 onShow
生命周期函数--监听微信小程序页面配置不存在隐藏 当微信小程序页面配置不存在从前台进入后台会触发 onHide
当微信小程序页面配置不存在发生脚本错误,或者 api 调用失败时会触发 onError 并带上错誤信息
当微信小程序页面配置不存在出现要打开的页面不存在的情况,会带上页面信息回调该函数
开发者可以添加任意的函数或数据到 Object 参數中用 this 可以访问

前台、后台定义: 当用户点击左上角关闭,或者按了设备Home离开微信微信小程序页面配置不存在并没有直接销毁,而是進入了后台;当再次进入微信或再次打开微信小程序页面配置不存在又会从后台进入前台。需要注意的是:只有当微信小程序页面配置鈈存在进入后台一定时间或者系统资源占用过高,才会被真正的销毁

关闭微信小程序页面配置不存在(基础库版本1.1.0开始支持): 当用戶从扫一扫、转发等入口(场景值为, )进入微信小程序页面配置不存在,且没有置顶微信小程序页面配置不存在的情况下退出微信小程序页媔配置不存在会被销毁。

微信小程序页面配置不存在运行机制在基础库版本 1.4.0 有所改变: 上一条关闭逻辑在新版本已不适用

打开微信小程序頁面配置不存在的query
当场景为从另一个微信小程序页面配置不存在或公众号或App打开时返回此字段
来源微信小程序页面配置不存在或公众号戓App的 appId
来源微信小程序页面配置不存在传过来的数据,scene=1037或1038时支持
公众号 profile 页相关微信小程序页面配置不存在列表 返回来源公众号 appId
返回来源公众號 appId
返回来源微信小程序页面配置不存在 appId
返回来源微信小程序页面配置不存在 appId
返回来源公众号 appId

(基础库 1.9.90 开始支持低版本需做兼容处理)当要打開的页面并不存在时,会回调这个监听器并带上以下信息:

打开不存在页面的 query
是否本次启动的首个页面(例如从分享等入口进来,首个頁面是开发者配置的分享页面)

开发者可以在 onPageNotFound 回调中进行重定向处理但必须在回调中同步处理,异步处理(例如 setTimeout 异步执行)无效

1.如果開发者没有添加 onPageNotFound 监听,当跳转页面不存在时将推入微信客户端原生的页面不存在提示页面

2.如果 onPageNotFound 回调中又重定向到另一个不存在的页面,將推入微信客户端原生的页面不存在提示页面并且不在回调 onPageNotFound

全局的 getApp() 函数可以用来获取到微信小程序页面配置不存在实例。

4.通过 getApp() 获取实例の后不要私自调用生命周期函数。

发现栏微信小程序页面配置不存在主入口“最近使用”列表
顶部搜索框的搜索结果页
发现栏微信小程序页面配置不存在主入口搜索框的搜索结果页
单人聊天会话中的微信小程序页面配置不存在消息卡片
群聊会话中的微信小程序页面配置鈈存在消息卡片
公众号 profile 页相关微信小程序页面配置不存在列表
聊天顶部置顶微信小程序页面配置不存在入口
顶部搜索框搜索结果页“使用過的微信小程序页面配置不存在”列表
自动化测试下打开微信小程序页面配置不存在
添加好友搜索框的搜索结果页
顶部搜索框微信小程序頁面配置不存在快捷入口
体验版微信小程序页面配置不存在绑定邀请页
微信连Wi-Fi状态栏
客服消息列表下发的微信小程序页面配置不存在消息鉲片
公众号会话下发的微信小程序页面配置不存在消息卡片
公众号会话下发的文字链
微信聊天主界面下拉,“最近使用”栏
长按微信小程序页面配置不存在右上角菜单唤出最近使用历史
发现栏微信小程序页面配置不存在主入口“我的微信小程序页面配置不存在”列表
微信聊天主界面下拉,“我的微信小程序页面配置不存在”栏

可以在 App 的 onLaunch 和 onShow 中获取上述场景值部分场景值下还可以获取来源应用、公众号或微信小程序页面配置不存在的appId

Tip: 由于Android系统限制,目前还无法获取到按 Home 键退出到桌面然后从桌面再次进微信小程序页面配置不存在的场景值,對于这种情况会保留上一次的场景值

Page(Object) 函数用来注册一个页面。接受一个 Object 类型参数其指定页面的初始数据、生命周期函数、事件处理函數等

生命周期回调—监听页面加载
生命周期回调—监听页面显示
生命周期回调—监听页面初次渲染完成
生命周期回调—监听页面隐藏
生命周期回调—监听页面卸载
页面相关事件处理—监听用户下拉动作
页面上拉触底事件的处理函数
页面滚动触发事件的处理函数
当前是 tab 页时,點击 tab 时触发
开发者可以添加任意的函数或数据到 Object 参数中在页面的函数中用 this 可以访问

Object 内容在页面加载时会进行一次深拷贝,需考虑数据大尛对页面加载的开销;示例代码:

data 是页面第一次渲染使用的初始数据页面加载时,data 将会以JSON字符串的形式由逻辑层传至渲染层因此data中的數据必须是可以转成JSON的类型:字符串,数字布尔值,对象数组。渲染层可以通过 WXML 对数据进行绑定示例代码:

页面加载时触发。一个頁面只会调用一次可以在 onLoad 的参数中获取打开当前页面路径中的参数

打开当前页面路径中的参数

页面显示/切入前台时触发

页面初次渲染完荿时触发。一个页面只会调用一次代表页面已经准备妥当,可以和视图层进行交互

页面隐藏/切入后台时触发。 如 navigateTo 或底部 tab 切换到其他页媔微信小程序页面配置不存在切入后台等。

监听用户下拉刷新事件

2.可以通过wx.startPullDownRefresh触发下拉刷新,调用后触发下拉刷新动画效果与用户手動下拉刷新一致。

监听用户上拉触底事件

2.在触发距离内滑动期间,本事件只会被触发一次

监听用户滑动页面事件。

页面在垂直方向已滾动的距离(单位px)

监听用户点击页面内转发按钮(<button> 组件 open-type="share")或右上角菜单“转发”按钮的行为并自定义转发内容。

注意:只有定义了此倳件处理函数右上角菜单才会显示“转发”按钮

转发事件来源。button:页面内转发按钮;menu:右上角转发菜单
页面中包含组件时返回当前的url

此事件需要 return 一个 Object,用于自定义转发内容返回内容如下:

// 来自页面内转发按钮

基础库 1.9.0 开始支持,低版本需做兼容处理

被点击tabItem的序号从0开始
被点击tabItem的页面路径
被点击tabItem的按钮文字

Page 中还可以定义组件事件处理函数。在渲染层的组件中加入事件绑定当事件被触发时,就会执行 Page 中萣义的事件处理函数

基础库 1.2.0 开始支持,低版本需做兼容处理

到当前页面的路径类型为String。

setData 函数用于将数据从逻辑层发送到视图层(异步)同时改变对应的 this.data 的值(同步)。

setData引起的界面更新渲染完毕后的回调函数

其中 key 可以以数据路径的形式给出支持改变数组中的某一项或對象的某个属性,如 array[2].messagea.b.c.d,并且不需要在 this.data 中预先定义

1.直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致

2.仅支持设置可 JSON 化嘚数据。

3.单次设置的数据不能超过1024kB请尽量避免一次设置过多的数据。

4.请不要把 data 中任何一项的 value 设为 undefined 否则这一项将不被设置并可能遗留一些潜在问题。

在微信小程序页面配置不存在中所有页面的路由全部由框架进行管理

框架以栈的形式维护了当前的所有页面 当发生路由切換的时候,页面栈的表现如下:

当前页面出栈新页面入栈
页面不断出栈,直到目标返回页
页面全部出栈只留下新的 Tab 页面
页面全部出栈,只留下新的页面

getCurrentPages() 函数用于获取当前页面栈的实例以数组形式按栈的顺序给出,第一个元素为首页最后一个元素为当前页面

Tip:不要尝試修改页面栈,会导致路由以及页面状态错误

对于路由的触发方式以及页面生命周期函数如下:

微信小程序页面配置不存在打开的第一个頁面

Tab 切换对应的生命周期(以 A、B 页面为 Tabbar 页面C 是从 A 页面打开的页面,D 页面是从 C 页面打开的页面为例):

触发的生命周期(按顺序)

4.页面底部的 tabBar 甴页面决定即只要是定义为 tabBar 的页面,底部都有 tabBar

5.调用页面路由带的参数可以在目标页面的onLoad中获取

在 JavaScript 文件中声明的变量和函数只在该文件Φ有效;不同的文件中可以声明相同名字的变量和函数,不会互相影响

通过全局函数 getApp() 可以获取全局的应用实例,如果需要全局的数据可鉯在 App() 中设置如:

可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块模块只有通过 module.exports 或者 exports 才能对外暴露接口。

1.exports 是 module.exports 的一个引用因此在模块里边随意更改 exports 的指向会造成未知的错误。所以更推荐开发者采用 module.exports 来暴露模块接口除非你已经清晰知道这两者的关系。

2.微信尛程序页面配置不存在目前不支持直接引入 node_modules , 开发者需要使用到 node_modules 时候建议拷贝出相关的代码到微信小程序页面配置不存在的目录中

在需要使用这些模块的文件中,使用 require(path) 将公共代码引入

框架的视图层由 WXML 与 WXSS 编写由组件来进行展示。

将逻辑层的数据反应成视图同时将视图层的倳件发送给逻辑层。

WXS(WeiXin Script) 是微信小程序页面配置不存在的一套脚本语言结合 WXML,可以构建出页面的结构

组件(Component)是视图的基本组成单元

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统可以构建出页面的结构。

用以下一些简单的例子来看看 WXML 具有什么能力:

数据绑定使用 Mustache 語法(双大括号)将变量包起来可以作用于:

2.组件属性(需要在双引号之内)

3.控制属性(需要在双引号之内)

4.关键字(需要在双引号之内)

特别注意:不要直接写 checked="false",其计算结果是一个字符串转成 boolean 类型后代表真值

可以在 {{}} 内进行简单的运算,支持的有如下几种方式:

也可以在 Mustache 内直接进行組合构成新的对象或者数组

也可以用扩展运算符 ... 来将一个对象展开

如果对象的 key 和 value 相同,也可以间接地表达

注意:上述方式可以随意组匼,但是如有存在变量名相同的情况后边的会覆盖前面,如:

注意: 花括号和引号之间如果有空格将最终被解析成为字符串

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件

默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

使用 wx:for-item 可以指定数组当前元素的变量名使用 wx:for-index 可以指定数组当前下标的变量名:

wx:for 也可以嵌套,下边是一个九九乘法表

类似 block wx:if也可以将 wx:for 鼡在标签上,以渲染一个包含多节点的结构块例如:

如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中嘚项目保持自己的特征和状态(如 <input/> 中的输入内容<switch/> 的选中状态),需要使用 wx:key来指定列表中项目的唯一的标识符

wx:key 的值以两种形式提供

1.字符串,代表在 for 循环的 array 中 item 的某个 property该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变

2.保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需偠 item 本身是一个唯一的字符串或者数字如:当数据改变触发渲染层重新渲染的时候,会校正带有key的组件框架会确保他们被重新排序,而鈈是重新创建以确保使组件保持自身的状态,并且提高列表渲染时的效率

如不提供 wx:key,会报一个 warning 如果明确知道该列表是静态,或者不必关注其顺序可以选择忽略。

注意:当 wx:for 的值为字符串时会将字符串解析成字符串数组

注意: 花括号和引号之间如果有空格,将最终被解析成为字符串

因为 wx:if 是一个控制属性需要将它添加到一个标签上。如果要一次性判断多个组件标签可以使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性

注意: 并不是一个组件它仅仅是一个包装元素,不会在页面中做任何渲染只接受控制属性

因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染

同时 wx:if 也是惰性的,如果在初始渲染条件为 false框架什么也不做,在条件第一次变成真的时候才开始局部渲染

相比之下,hidden 就简单的多组件始终会被渲染,只是简单的控制显示与隐藏

一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗因此,如果需要频繁切换的情景下用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好

WXML提供模板(template)可以在模板中定义代码片段,然后在不同的地方调用

使用 name 属性作为模板的名字。然后在内定义代码片段如:

使用 is 属性,声明需要使用的模板然后将模板所需要的 data 传入,如:

is 属性可以使用 Mustache 语法来动态决定具体需偠渲染哪个模板:

模板拥有自己的作用域,只能使用 data 传入的数据以及模版定义文件中定义的 模块

事件是视图层到逻辑层的通讯方式

事件鈳以将用户的行为反馈到逻辑层进行处理。

事件可以绑定在组件上当达到触发事件,就会执行逻辑层中对应的事件处理函数

在组件中綁定一个事件处理函数

如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数

在相应的Page定义中写上相应的事件处理函數参数是event

可以看到log出来的信息大致如下:

在组件中绑定一个事件处理函数

事件分为冒泡事件和非冒泡事件:

1)冒泡事件:当一个组件上嘚事件被触发后,该事件会向父节点传递

2)非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递

WXML的冒泡事件列表:

掱指触摸动作被打断,如来电提醒弹窗
手指触摸后,超过350ms再离开如果指定了事件回调函数并触发了这个事件,tap事件将不被触发
手指触摸后超过350ms再离开(推荐使用longpress事件代替)

注:除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件,如

事件绑定的写法同组件嘚属性以 key、value 的形式。

value 是一个字符串需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡

自基础库版本 1.5.0 起,触摸类事件支持捕获阶段捕获阶段位于冒泡阶段之前,且在捕获阶段中事件到达节点的顺序与冒泡阶段恰好相反。需要在捕获阶段监听事件时可以采用capture-bind、capture-catch关键字,后者将中断捕获阶段和取消冒泡阶段

如無特殊说明,当组件触发事件时逻辑层绑定该事件的处理函数会收到一个事件对象

BaseEvent 基础事件对象属性列表:

触发事件的组件的一些属性徝集合
当前组件的一些属性值集合
触摸事件,当前停留在屏幕中的触摸点信息的数组
触摸事件当前变化的触摸点信息的数组

特殊事件: Φ的触摸事件不可冒泡,所以没有 currentTarget

type:代表事件的类型

timeStamp:页面打开到触发事件所经过的毫秒数

target:触发事件的源组件

事件源组件上由data-开头的洎定义属性组成的集合
事件组件上由data-开头的自定义属性组成的集合
距离文档左上角的距离,文档的左上角为原点 横向为X轴,纵向为Y轴
距離页面可显示区域(屏幕除去导航条)左上角距离横向为X轴,纵向为Y轴
距离 Canvas 左上角的距离Canvas 的左上角为原点 ,横向为X轴纵向为Y轴

detail:自萣义事件所携带的数据,如表单组件的提交事件会携带用户的输入媒体的错误事件会携带错误信息,详见组件定义中各个事件的定义

import鈳以在该文件中使用目标文件定义的template,如:

include 可以将目标文件除了 外的整个代码引入相当于是拷贝到 include 位置,如:

WXS(WeiXin Script)是微信小程序页面配置不存在的一套脚本语言结合 WXML,可以构建出页面的结构

1.wxs 不依赖于运行时的基础库版本可以在所有版本的微信小程序页面配置不存在中運行。

3.wxs 的运行环境和其他 javascript 代码是隔离的wxs 中不能调用其他 javascript 文件中定义的函数,也不能调用微信小程序页面配置不存在提供的API

4.wxs 函数不能作為组件的事件回调。

以下是一些使用 WXS 的简单示例:

<!-- 下面的 getMax 函数接受一个数组,且返回数组中最大的元素的值 -->

WXS 代码可以编写在 wxml 文件中的 标簽内或以 .wxs 为后缀名的文件内

每一个.wxs文件和标签都是一个单独的模块。每个模块都有自己独立的作用域即在一个模块里面定义的变量与函数,默认为私有的对其他模块不可见。一个模块要想对外暴露其内部的私有变量与函数只能通过 module.exports 实现

在微信开发者工具里面,右键鈳以直接创建 .wxs 文件在其中直接编写 WXS 脚本

exports: 通过该属性,可以对外共享本模块的私有变量与函数

在.wxs模块中引用其他 wxs 文件模块可以使用 require 函数。

引用的时候要注意如下几点:

1.只能引用 .wxs 文件模块,且必须使用相对路径

2.wxs 模块均为单例,wxs 模块在第一次被引用时会自动初始化为单唎对象。多个页面多个地方,多次引用使用的都是同一个 wxs 模块对象。

3.如果一个 wxs 模块在定义之后一直没有被引用,则该模块不会被解析与运行

当前 标签的模块名必填字段
引用 .wxs 文件的相对路径。仅当本标签为单闭合标签或标签的内容为空时有效

module 属性是当前 标签的模块名在单个 wxml 文件内,建议其值唯一有重复模块名则按照先后顺序覆盖(后者覆盖前者)。不同文件之间的 wxs 模块名不会相互覆盖

module 属性值的命名必须符合下面两个规则:

1.首字符必须是:字母(a-zA-Z),下划线(_)

2.剩余字符可以是:字母(a-zA-Z)下划线(_), 数字(0-9)

上面例子声明了┅个名字为 foo 的模块将 some_msg 变量暴露出来,供当前页面使用

src 属性可以用来引用其他的 wxs 文件模块

引用的时候,要注意如下几点:

1.只能引用 .wxs 文件模块且必须使用相对路径。

2.wxs 模块均为单例wxs 模块在第一次被引用时,会自动初始化为单例对象多个页面,多个地方多次引用,使用嘚都是同一个 wxs 模块对象

3.如果一个 wxs 模块在定义之后,一直没有被引用则该模块不会被解析与运行

<!-- 也可以直接使用单标签闭合的写法

模块呮能在定义模块的 WXML 文件中被访问到。使用 或 时 模块不会被引入到对应的 WXML 文件中

标签中,只能使用定义该 的 WXML 文件中定义的 模块

WXS 中的变量均為值的引用

没有声明的变量直接赋值使用,会被定义为全局变量

如果只声明变量而不赋值,则默认值为 undefined

变量命名必须符合下面两个規则:

首字符必须是:字母(a-zA-Z),下划线(_)

剩余字符可以是:字母(a-zA-Z)下划线(_), 数字(0-9)

以下标识符不能作为变量名:

WXS 主要有 3 种紸释的方法

// 方法一:单行注释 方法三:结尾注释即从 /* 开始往后的所有 WXS 代码均被注释

上述例子中,所有 WXS 代码均被注释掉了

方法三 和 方法② 的唯一区别是,没有 */ 结束符

加法运算(+)也可以用作字符串的拼接

0

在 WXS 中,可以使用以下格式的 if 语句 :

case 关键词后面只能使用:变量数芓,字符串

0
 
 
当表达式为 true 时循环执行语句或代码块。
 
WXS 语言目前共有以下几种数据类型:

number 包括两种数值:整数小数。

以上方法的具体使用請参考 ES5 标准

以上方法的具体使用请参考 ES5 标准

1.语法:布尔值只有两个特定的值:true 和 false。

以上方法的具体使用请参考 ES5 标准

1.语法:object 是一种无序的键徝对。使用方法如下所示:

//生成一个新的非空对象

function 支持以下的定义方式:

function 同时也支持以下的语法(匿名函数闭包等):

function 里面可以使用 arguments 关鍵词。该关键词目前只支持以下的属性:

length:返回函数的形参个数

array 支持以下的定义方式:

以上方法的具体使用请参考 ES5 标准。

生成 date 对象需要使用 getDate函数, 返回一个当前时间的对象

以上方法的具体使用请参考 ES5 标准。

flags:修饰符该字段只能包含以下字符:

以上方法的具体使用请参考 ES5 标准。

使用 typeof 也可以区分部分数据类型

console.log 方法用于在 console 窗口输出信息它可以接受多个参数,将它们的结果连接起来输出

以上属性的具体使用请参栲 ES5 标准

以上方法的具体使用请参考 ES5 标准。

以上属性的具体使用请参考 ES5 标准

以上属性的具体使用请参考 ES5 标准

以上属性的具体使用请参考 ES5 标准

以上方法的具体使用请参考 ES5 标准

WXSS 用来决定 WXML 的组件应该怎么显示。

为了适应广大的前端开发者WXSS 具有 CSS 大部分特性。同时为了更适合开发微信微信小程序页面配置不存在WXSS 对 CSS 进行了扩充以及修改。

与 CSS 相比WXSS 扩展的特性有:

建议: 开发微信微信小程序页面配置不存在时设计师鈳以用 iPhone6 作为视觉稿的标准。

注意: 在较小的屏幕上不可避免的会有一些毛刺请在开发时尽量避免这种情况

使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径用;表示语句结束

框架组件上支持使用 style、class 属性来控制组件的样式。

style:静态的样式统一写到 class 中style 接收动态的样式,在运行时会进行解析请尽量避免将静态的样式写进 style 中,以免影响渲染速度

class:用于指定样式规则,其属性值是样式规则Φ类选择器名(样式类名)的集合样式类名不需要带上.,样式类名之间用空格分隔

在 view 组件后边插入内容
在 view 组件前边插入内容

定义在 app.wxss 中的样式为全局样式,作用于每一个页面在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面并会覆盖 app.wxss 中相同的选择器。

}

2.原来的跳转js页面

3.上述代码无论怎麼编译都无法实现跳转到指定URL页面在查找相关资料后找出原因所在,原因如下:

出现不能跳转的原因是:js文件中跳转的URLtabBar中pagePath的路径《鈈能相同

4.修改无论哪个页面的路径,只要保证两个不相同就可以实现跳转笔者修改了跳转的pagePath为“pages/index/index"后,经测试完美跳转还有tabBar也完媄运行。

5.出现这样的状况笔者分析应该是微信自身出现的问题希望开发者以后在这一块多加注意。

}

我要回帖

更多关于 微信小程序页面配置不存在 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信