《React Native》之程序调试篇

??代码调试,在程序开发的过程中尤为重要,能协助开发者快速定位问题。

??此文重点介绍React Native开发的程序调试工具及过程。

??呼出Developer Menu对话框,如下图所示:

Android物理设备或者IOS物理设备 : 摇晃手机呼出。

Android模拟器:Command? + M

IOS模拟器:Command? + D

开发者菜单在release(生成环境)不会被呼出。

程序调试我们分成三类:

  1. 内容预览,调试效果
  2. Bug查找,断点调试
  3. 性能分析

内容预览,调试效果

??当开发者对JS代码进行改变之后,需要预览程序改变之后的效果。

在开发者菜单中有ReloadEnable Live ReloadEnable Hot Reloading 能帮助我们对效果进行预览,那么他们的区别是什么呐?

Reload

??手动更新改变,每次改变之后,点击Reload,不需要重新编译程序,实时加载应用的JS代码,但需要确保React Packager处于运行状态。

Enable Live Reload

??动态加载更新,不需要手动触发,但是会重新打开启动页,开发者需要重新找到你要调试的页面。

Enable Hot Reloading

??热加载,相对于Enable Live Reload更省时省力,当开发者修改代码后点击保存,会自己将增量更新到程序中,搜索操作在当前调试页面进行。


Bug查找,断点调试

首先,了解ReactNative的ErrorsWarning

Errors

??这是一种自定义的Error,通过console.error("我是一个异常,你信不信","异常提示");这句代码实现。使用例如我们使用Promise进行异步回调,到执行到PromiseonRejected时,如果不知道是什么原因导致的,可以通过如下代码进行错误输出。

xxx.then((result) => {
      ...
    },(error) => {
       console.error(error, error.message && error.message)
    }
);

如此,在执行到这部分代码时,如果发生异常,就是显示如上的红色Errors页面。另外Error标题下面会带有调用栈 可以帮助定位问题。

Warnings

同上,Warnings也可以通过console.warn()自定义。

通过console.ignoredYellowBox = [‘Warning: ...‘]可以忽略每个提示的展示。

Debug JS Remotely

在Developer Menu对话框中选中Debug JS Remotely,即可通过Chrome Developer Tools工具调试程序。选中后将打开网址为http://localhost:8081/debugger-ui的网页。

如果使用mac电脑,快捷键??J打开Google调试工具。

或者

点击Google Chrome -- 更多工具 -- 开发者工具 能够打开如下图所示的界面。

下面分三个部分进行解释。

第一部分

1)、项目源码,所有的JS文件都在这里展示;
2)、JS程序入口;
3)、Bundle文件地址;
4)、调试使用的JS程序;
6)、bundle所在服务器,localhost本地服务,例子中的项目没有远程服务(no domain)。

第二部分:主面板

Elements:用来查看当前页面的HTML结构和CSS样式

Console:控制台输出

Sources:源码展示

NetWork:网络请求的头文件信息,请求参数,返回值等信息

Timeline: 时间花费统计 command + E生成新的时间线。需要先录制,然后进行分析,得出GPU的渲染时间,总共脚本的执行时间,各项任务的时间占比。

Profiles:查看CPU运行时间、内存占用等。

Application: 应用信息,包括基本信息、本地存储、Session存储、

Cookie、数据库等信息。

Security:安全性信息

Audits: 优化页面,提升加载速度时用来数据量化。

??通过上面的介绍,如果对于断点调试ConsoleSources是主要面板;在调试的过程中如果有网络请求,可以通过NetWork进行分析;如果对项目进行优化,可通过TimelineProfilesAudits进行优化点查找和优化前后对比,从而优化结论;AppLication面板展示应用存储相关的数据,方面查看。

第三部分 断点调试区

使用起来与`Android Studio`的调试非常的接近,用起来也很亲切。
1)、 加断点,直接点击行号即可,当程序执行到这段代码时,暂停,等待开发者操作。
2)、 从左到右依次为恢复脚本执行、调到下一个函数调用的地方、单步执行、跳出当前函数。
3)、 调用栈,方便断点分析。

注: 在2中有Pause on Exceptions,意思是当程序出现异常时,暂停执行,自动定位到出问题行,这对我们调试程序非常有帮助,建议打开。


性能分析

??在Google Chrome 调试工具的介绍中提到的TimelineProfiles,可以协同做性能分析,如Timeline提供的信息如下:

查看指定时间段内的应用执行花费的总时间,以及哪部分占用的时间最多,从而重点优化。

??在Developer Menu开发者菜单中有Show Perf Monitor选项,开启后在程序的又上角会展示当前页面执行帧率,在可滚动页面可以评测滚动的流畅性问题。

??好的,关于React Native调试相关的内容,就写到这里,如果发现好的内容,会继续进行完善,睡觉去了,晚安。

时间: 2024-12-09 14:31:39

《React Native》之程序调试篇的相关文章

(一)创建新的react native 应用程序

最近开始学习ReactNative了,首先了解下ReactNative React Native 官网首页介绍 React Native 使你能够使用基于 JavaScript 和 React 一致的开发体验在本地平台上构建世界一流的应用程序体验.React Native 把重点放在所有开发人员关心的平台的开发效率上——开发者只需学习一种语言就能轻易为任何平台高效地编写代码.Facebook 在多个应用程序产品中使用了 React Native,并将继续为 React Native 投资. Re

React Native 真机调试

iOS 真机调试 方法一:(从设备访问开发服务器) 首先,你的笔记本电脑和你的手机必须处于相同的 wifi 网络中. 打开 iOS 项目的 AppDelegate.m 文件 更改 jsCodeLocation 中的 localhost 改成你电脑的局域网IP地址 在 Xcode 中,选择你的手机作为目标设备,Run 即可 可以通过晃动设备来打开开发菜单(重载.调试等) 方法二:(使用离线包) 你也可以将应用程序本身的所有 JavaScript 代码打包.这样你可以在开发服务器没有运行时测试它,并

安装android Studio和运行react native项目(基础篇)

ANDROID_HOME环境变量 确保ANDROID_HOME环境变量正确地指向了你安装的Android SDK的路径. 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建 具体的路径可能和下图不一致,请自行确认. 你需要关闭现有的命令符提示窗口然后重新打开,这样新的环境变量才能生效. 测试安装 react-native init AwesomeProject cd AwesomeProject react-nativ

React Native真机调试

最近在尝试使用 React Native 做一些东西,发现真机调试还是有一些坑存在的. iOS 真机调试 首先,你要让调试用电脑和你的手机必须处于相同的 WiFi 网络中下 打开 iOS 项目的 AppDelegate.m 文件 更改 jsCodeLocation 中的 localhost 改成你电脑的局域网IP地址 在 Xcode 中,选择你的手机作为目标设备,Run 即可 可以通过晃动设备来打开开发菜单(重载.调试等) Android 真机调试 在 Android 设备上打开 USB deb

react native 远程js调试出现卡顿并出现黄色提示的解决方法

打开远程调试总会出现 这么一段话 Remote debugger is in a background tab which may cause apps to perform slowly-- 百度了一圈也没找到问题,感觉有点摸不着头脑 原来,只要把那个chrome的Tab页保持最前,窗口不要最小化就好了.

react native android模拟机调试

模拟机调试首先要确认你的环境变量的path中是不是有adb的路径,adb一般在android的adk目录下的platform-tools下,android目录默认是在c盘user/administrator(用户默认的话)/appdata/中 如果使用的是android studio自带的那个模拟器的话,可以这么玩 运行 C:\Users\Administrator\AppData\Local\Android\Sdk\emulator\emulator.exe -netdelay none -n

Native VS React Native VS 微信小程序

随着React Native和 微信小程序的出现,Native一家独大的局面出现裂痕,很多小公司使用已经正在着手微信小程序和React Native了,我公司就已经走上React Native之路.那么,React Native 和 Native 和 微信小程序 三者比较起来到底哪者更强呢?今天从适应性(适合什么项目).开发限制.软件迭代更新.成本角度谈谈自己对三者的看法. 个人角度: 适应性(适应什么项目) 大项目.游戏项目:Native 中大型项目:react native 小项目:微信小程

React Native:使用 JavaScript 构建原生应用 详细剖析

数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用——就在今天,Beta 版的仓库释出了! 基于 PhoneGap 使用 JavaScript 和 HTML5 开发 iOS 应用已经有好几年了,那 React Native 有什么牛的? React Native 真的很牛,让大家兴奋异常的主要原因有两点: 可以基于 React Native使用 JavaScript 编写应用逻辑,UI 则可以保持全是

React Native:使用 JavaScript 构建原生应用

[转载] 本篇为联合翻译,译者:寸志,范洪春,kmokidd,姜天意 数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用--就在今天,Beta 版的仓库释出了! 基于 PhoneGap 使用 JavaScript 和 HTML5 开发 iOS 应用已经有好几年了,那 React Native 有什么牛的? React Native 真的很牛,让大家兴奋异常的主要原因有两点: 可以基于 React Na