当前位置: 首页 > news >正文

React Native探索(二)Atom+Nuclide安装、配置与调试

相关文章
React Native探索系列
前言
上一篇文章我们搭建了开发环境,并写了个Hello World。这一节我们来学习React Native的开发IDE:Atom+Nuclide的安装、配置与调试。本文所讲的内容只适用于Mac平台。

1.开发IDE选择

React Native的开发IDE有很多种,比如FaceBook 官方推荐的 Atom+Nuclide、Android Studio的同门WebStorm(收费)、Sublime Text 3、Visual Studio Code和Deco。这里Atom+Nuclide和Deco目前并不支持Windows平台。笔者折腾了一段时间Sublime Text 3,折腾各种插件直到一脸懵逼。WebStorm和Android Studio很像,并没觉得他有什么优势可以收费(可以破解)。最终我选择了Atom+Nuclide,主要有以下几个原因:

  • 良好的代码提示功能和错误检查机制。
  • Debugger和React Inspector可以替代Chrome来进行调试工作。
  • FaceBook 官方推荐。

React Native开发平台我建议使用Mac,能省不少心(开发Android我也建议用Mac来开发)。

2.准备工作

在安装Atom+Nuclide前需要先安装watchman和 flow。
watchman是 facebook 的一个开源项目,用来监视文件并且记录文件的改动情况,当文件变化时它可以触发一些操作。

brew install watchman复制代码

flow 是一个开源的JavaScript静态类型检查器,用来发现 JS 程序中的类型错误。

brew install flow复制代码

3.Atom+Nuclide安装

Atom是Github推出的一款开源编辑器,可以直接去官网atom.io/下载它,安装过程很简单…

安装Nuclide

接下来安装Nuclide,Nuclide是Facebook在Atom的基础上开发的一个插件IDE,可以用来开发React Native、iOS 和 Web应用。我们打开Atom,点击顶部菜单栏的Atom->Preferences,在Settings中的Install界面搜索nuclide,搜索到nuclide后点击Install按钮。如下图所示。

因为我已经安装了Nuclide,所以没有Install按钮。安装过程可能需要很长的时间,安装完毕后重新打开Atom会发现顶部菜单栏多了Nuclide一栏,说明Nuclide安装成功。

安装Nuclide相关依赖包

在Settings中点击Packages界面,点击顶部菜单栏的Packages-> Settings View->Manage Packages也能进入Packages界面。在Packages界面搜索nuclide,并点击nuclide的Settings按钮,如下图所示。

在nuclide的Settings中勾选Install Recommended Packages On Startup选项,并在Path to Flow executable输入flow 路径,flow 路径一般情况下都是:/usr/local/bin/flow,你可以在终端输入which flow 命令来进行查询。

重启 Atom,这些依赖包便会开始自动安装。


可以看到nuclide需要很多的依赖包,如果这些依赖包有哪个没有安装成功,Atom会给出提示,我们在Settings的Install界面进行搜索安装就可以了。
安装完成后会看到界面上多了一条额外的ToolBar。

配置flow

这时我们通过Add Project Folder来打开我们已有的React Native工程,如下图所示。


这时我们在终端进入React Native工程目录,执行flow语句来查看flow是否正常运行,如果发现系统的flow版本与工程配置的flow版本不一致,则打开工程中的 .flowconfig文件,查看flow的版本。

这里发现flow的版本为0.42,则在终端输入如下命令:

npm install flow-bin@0.42 -g复制代码

再次在终端输入flow,发现flow运行正常。接着在js文件的最上方加入/*@flow*/或者//@flow,这样flow就可以开始检查了。我们随便加入些错误语句来进行测试,如下图所示。

需要注意的是,网上的文章都是在index.ios.js做的测试,这是没问题的,如果在index.android.js中做测试则会发现flow不好用,这是因为在 .flowconfig文件有如下语句:

[ignore]
; We fork some components by platform
.*/*[.]android.js复制代码

所有的以.android结尾的js文件的flow检查都会失效,如果去掉该语句则会报100多个error,目前在index.android.js上笔者没有先到好的解决方案,如果有人有解决方案,不吝赐教。

4.调试程序

在终端进入项目目录并输入如下命令安装程序:

react-native run-android复制代码

Debugger调试程序

使用快捷键 command + shift + p 打开输入框,输入debugging,并选择Nuclide React Native:Start Debugging:

QQ图片20170506152236.jpg

这时Atom弹出Debugger界面,并等待进行Debugger。我们通过Command+M进入模拟器的开发菜单,选择Debug JS Remotely。


这时Debugger界面进入了debug状态,我们在程序中打上断点,通过按2次R键来Reload界面,程序就会停留在断点位置,如下图所示。

React Inspector

使用快捷键 command + shift + p 打开输入框,输入insp,并选择Nuclide React Inspector:Toggle:

如果连接的是SDK自带的模拟器,稍等片刻就会在React Inspector中出现如下界面,它会将当前界面的UI 层次结构显现出来。

参考资料
Nuclide关于React Native英文文档
React Native - 开发工具Atom+Nuclide详解(安装、使用、代码调试)
学习 React Native for Android:环境搭建
React Native 开发之 IDE 选型和配置
React Native开发之IDE(Atom+Nuclide)安装,运行,调试


欢迎关注我的微信公众号,第一时间获得博客更新提醒,以及更多成体系的Android相关原创技术干货。
扫一扫下方二维码或者长按识别二维码,即可关注。

相关文章:

  • Apple本地认证(密码+Touch id)
  • Nutch's Modeling
  • MySQL触发器使用详解
  • pt-duplicate-key-checker检查数据库的重复索引
  • 悄悄地说一个bug
  • 最短路径之Dijkstra算法
  • nyoj 14 会场安排问题
  • 使用Fetch
  • padding的使用
  • 【extjs6学习笔记】0.2 准备:类库结构
  • 欢迎报名第三届中国移动互联网测试开发大会
  • python+selenium自动化测试(六)
  • The based of tuning
  • 《Spring 5 官方文档》5. 验证、数据绑定和类型转换(一)
  • oracle DDL
  • ES6指北【2】—— 箭头函数
  • 《深入 React 技术栈》
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • C++入门教程(10):for 语句
  • Javascript弹出层-初探
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Laravel5.4 Queues队列学习
  • node 版本过低
  • pdf文件如何在线转换为jpg图片
  • Python - 闭包Closure
  • React Transition Group -- Transition 组件
  • React-redux的原理以及使用
  • Redis字符串类型内部编码剖析
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 对超线程几个不同角度的解释
  • 码农张的Bug人生 - 初来乍到
  • 数据结构java版之冒泡排序及优化
  • 微信小程序填坑清单
  • 小程序01:wepy框架整合iview webapp UI
  • 在Unity中实现一个简单的消息管理器
  • 自动记录MySQL慢查询快照脚本
  • linux 淘宝开源监控工具tsar
  • 阿里云ACE认证之理解CDN技术
  • ​【已解决】npm install​卡主不动的情况
  • ​2021半年盘点,不想你错过的重磅新书
  • ​渐进式Web应用PWA的未来
  • #HarmonyOS:Web组件的使用
  • (007)XHTML文档之标题——h1~h6
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (九)信息融合方式简介
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON