hbuilderx 开发微信小程序(咋避免层级调试的麻烦)

发布日期:2024-06-15 06:30浏览次数:

好家伙,微信小程序层级调试,伤不起啊!

大家好,我是你们的小编,今天咱们来聊聊一个让微信小程序开发者头疼的—层级调试。

层级调试啥意思?说人话!

层级调试,通俗来说就是当你的小程序页面结构比较复杂,有多层嵌套关系时,在微信开发者工具里调试起来就很麻烦。因为每次调试,都要一层一层点击菜单导航到目标页面,贼费劲!

举个栗子,假设你的小程序有这么一个目录结构:

|- pages

|- index.vue(入口页面)

|- user

|- info.vue(个人信息页面)

|- order

|- list.vue(订单列表页面)

|- detail.vue(订单详情页面)

当你需要调试 order/detail.vue 页面时,就需要在开发者工具的菜单栏里依次点击:

pages -> order -> detail

繁琐不说,还容易点错。

微信开发者工具为啥不能直接跳到目标页面?

理论上,微信开发者工具是可以直接定位到目标页面的,但是实际操作中却不行,这是因为:

1. 微信官方限制:微信小程序采用了沙盒机制,开发者工具无法直接访问沙盒内的小程序文件。

2. HBuilderX 等第三方工具限制:这些工具为了保证小程序的稳定性,也对直接访问沙盒文件进行了限制。

虽然不能直接定位目标页面,但微信开发者工具提供了另一种调试方式——启动模式。

启动模式可以配置为 header 或 list,其中:

1. header:在调试器顶部显示页面的层级结构,可以快速切换到目标页面。

2. list:在调试器右侧显示页面的列表,可以按顺序切换到目标页面。

不过,这两种方式都只能切换到当前页面的一级子页面,如果目标页面是多级嵌套的,那就只能一层一层往下点咯。

听说 HBuilderX 有个神技,可以避免层级调试的麻烦?

没错!HBuilderX 推出了一个强力外挂——代码块。

代码块可以让开发者直接在 HBuilderX 中执行自定义代码,从而实现在调试器中直接跳转到目标页面的功能。

如何使用 HBuilderX 代码块实现层级调试?步骤如下:

1. 在 HBuilderX 工具栏中选择 工具 -> 代码块设置 -> vue 代码块。

2. 打开 vue.json 设置文件。

3. 在 vue.json 文件中添加以下代码:

json

"console": "console.log('代码块被触发了!')",

"block": [

"match": "navigateTo",

"doc": "前往新页面,调用时保留当前页面,若页面不存在则自动创建并跳转至新页面。",

"params": [

"name": "url",

"type": "String",

"doc": "需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。路径必须从 navigateTo URL 路由能力开放的页面开始",

"required": true

"sample": "navigateTo('/pages/cardid/importinfo')",

"code": "console.log('navigateTo 方法被调用了!')\nuni.navigateTo({url:params.url})"

"match": "redirectTo",

"doc": "关闭当前页面,跳转到应用内的非 tabBar 的页面。",

"params": [

"name": "url",

"type": "String",

"doc": "需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。路径必须从 redirectTo URL 路由能力开放的页面开始",

"required": true

"sample": "redirectTo('/pages/cardid/importinfo')",

"code": "console.log('redirectTo 方法被调用了!')\nuni.redirectTo({url:params.url})"

"match": "navigateBack",

"doc": "关闭当前页面,返回到上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。",

"params": [

"name": "delta",

"type": "Number",

"doc": "需要返回的页面数,如果 ∆ 等于 1,则返回上一页面。",

"required": true

"sample": "navigateBack({delta: 2})",

"code": "console.log('navigateBack 方法被调用了!')\nuni.navigateBack({delta: params.delta})"

"match": "reLaunch",

"doc": "关闭所有页面,打开到应用内的某个页面。",

"params": [

"name": "url",

"type": "String",

"doc": "需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。路径必须从 reLaunch URL 路由能力开放的页面开始",

"required": true

"sample": "reLaunch('/pages/index/index')",

"code": "console.log('reLaunch 方法被调用了!')\nuni.reLaunch({url:params.url})"

4. 保存 vue.json 文件。

注意:

1. navigateTo、redirectTo、navigateBack、reLaunch 是微信小程序提供的页面导航 API。

2. block 数组中的第一个代码块匹配的是 navigateTo API,开发者可以根据需要添加其他匹配代码块。

3. url 参数是需要跳转的页面路径。

这样设置有什么好处?

使用 HBuilderX 代码块的好处多多:

1. 快速定位目标页面:开发者可以直接在代码块中指定跳转的页面路径,从而实现一键跳转。

2. 简化调试流程:避免了层层点击菜单的繁琐过程,大大提高了调试效率。

3. 扩展性强:开发者可以根据需要添加更多自定义代码块,满足不同的调试需求。

代码块使用示例:

在需要跳转到 order/detail.vue 页面的代码中添加以下代码:

javascript

uni.navigateTo({url: '/pages/order/detail'})

当调试器执行到此代码时,HBuilderX 代码块就会自动触发,直接跳转到 order/detail.vue 页面。

我不会设置,有现成的吗?

当然有!小编特地为大家准备了一份代码块设置的宝典,拿走不谢:

json

"match": "navto",

"doc": "前往新页面,调用时保留当前页面,若页面不存在则自动创建并跳转至新页面。",

"params": [

"name": "url",

"type": "String",

"doc": "需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。路径必须从 navigateTo URL 路由能力开放的页面开始",

"required": true

"code": "console.log('navto 方法被调用了!')\nuni.navigateTo({url:params.url})"

"match": "redto",

"doc": "关闭当前页面,跳转到应用内的非 tabBar 的页面。",

"params": [

"name": "url",

"type": "String",

"doc": "需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。路径必须从 redirectTo URL 路由能力开放的页面开始",

"required": true

"code": "console.log('redto 方法被调用了!')\nuni.redirectTo({url:params.url})"

"match": "back",

"doc": "关闭当前页面,返回到上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。",

"params": [

"name": "delta",

"type": "Number",

"doc": "需要返回的页面数,如果 ∆ 等于 1,则返回上一页面。",

"required": true

"code": "console.log('back 方法被调用了!')\nuni.navigateBack({delta: params.delta})"

如果您有什么问题,欢迎咨询技术员 点击QQ咨询