《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

截图

此文是我的出版书籍《React Native 精解与实战》连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理、React Native 组件布局、组件与 API 的介绍与代码实战,以及 React Native 与 iOS、Android 平台的混合开发底层原理讲解与代码实战演示,精选了大量实例代码,方便读者快速学习。

书籍还配套了视频教程「80 节实战课精通 React Native 开发」,此视频课程建议配合书籍学习,书籍中原理性的东西讲解的比较清晰,而视频教程对于组件、API 等部分的代码实战开发讲解比较直观。

书籍相关所有资料请访问:http://rn.parryqiu.com

本章将对开发过程中依赖的基础框架 Node.js 进行介绍,并深入讲解为什么使用到了此框架。同时我们将开始配置 React Native 的开发环境,并对最好用的代码编辑器 Visual Studio Code 以及相关高效开发插件做了详细地介绍。

2.1 Node.js 简介

此小节对 Node.js、npm 进行了介绍,以及对为什么需要使用到 Node.js 框架进行了介绍。

2.1.1 Node.js 简介

关于对于 Node.js 的定义,官网(https://nodejs.org)给出的定义如下。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm,是全球最大的开源库生态系统。
虽然只有几句话,但是已经很清楚地描述了 Node.js 以及 npm 的概念。
Node.js 本身不是一个新的开发语言,也不是一个 JavaScript 框架,而是一个 JavaScript 的运行时。底层为 Google Chrome V8 引擎,并在此基础上进行了封装,可用于创建快速、高效、可扩展的网络应用。Node.js 采用事件驱动与非阻塞 I/O 模型,以使得 Node.js 轻量并高效。
图 2-1 为 Node.js 的架构图,可以看到底层使用 C/C 编写。

  • Chrome 的V8 引擎为 C 开发,负责将 JavaScript 代码转换成机器码,所以引擎的整体执行效率非常高。Google Chrome 浏览器的底层使用的就是此 V8 引擎;
  • 线程池是完全使用 C 语言实现、全特性的异步 I/O 库 libeio,用于执行异步的输入输出、文件描述符、数据处理、sockets 等;
  • libev 是在 Node.js 内部运行的 event loop,最早用于类 Linux 系统。event loop 是一个让多线程执行更加高效的程序结构;
  • 这些框架实现的语言不一样,有 C,有 C ,还有 JavaScript,那么将这些代码整合在一起就是 Node bindings 做的事情;
  • 最上层是使用 Node.js 开发时接触到的应用层,Node.js 提供了一系列标准的 JavaScript 类库供开发者使用。

截图
图 2-1 Node.js 架构图

2.1.2 npm 简介

npm 是 Node.js 的包生态系统,是最大的开源生态系统。你可以理解为基于 Node.js 框架,全世界的开发者提交了各种各样的功能类库到 npm 中,其他开发者在开发过程中需要使用的大部分功能都可以在 npm 中找到已存在的库,完全不需要自己再重复去“造轮子”。
npm 官网(https://www.npmjs.com/)目前(2018 年 3 月)npm 上已有六十多万个包,是一个非常大的宝库,你可以下载、使用、学习各种类库,当然,你也可以贡献自己的类库到 npm 中供其他开发者使用。
你可以在 npm 中直接搜索你在开发过程中需要使用到的任何功能库,假设你需要一些关于 cookie 处理的 JavaScript 类库,图 2-2 就是在 npm 中搜索 cookie 相关类库的结果。使用 npm 库是你使用 React Native 开发 App 肯定会接触到的一个过程。

截图
图 2-2 npm 中搜索类库

2.1.3 React Native 与 Node.js 关系

Node.js 提供了很多的系统级的如文件操作、网络编程等特性,并且是事件驱动、异步编程的。React 构建于 Node.js 之上,其实本质上 React 也是 npm 包中的一个,React Native 也是 npm 包之一,只不过是功能非常强大的包而已。所以整个的框架都构建于 Node.js 之上,并且 Node.js 还提供了海量的类库,在这个完整的生态系统下开发,过程将变得更加高效,在后续的章节学习中将会慢慢体会到此生态系统的价值。

2.2 React Native 开发环境配置

此小节我们将开始配置 React Native 的开发环境,包括 Node.js 的安装与 React Native 的安装,并介绍代码编辑器 Visual Studio Code 以及高效开发插件的安装,工欲善其事必先利其器,搭建一个完美的开发环境,学习起来才会更加顺畅。

2.2.1 安装 Node.js

Node.js 提供了多个平台的安装文件,同时也表明掌握了 Node.js,可以开发出很多跨平台的应用。
在图 2-3 的下载地址(https://nodejs.org/en/download/)中,显示了 Node.js 目前可以下载安装的平台。

截图
图 2-3 Node.js 下载页面

你可以根据自身不同的开发环境,下载对应的版本安装即可。Node.js 官方推荐下载 LTS 版本,LTS 俗称长效版,框架整体的变更不频繁、稳定可靠,一般用于上线版本,当然学习环境的安装也推荐安装此版本。
如果需要安装其他的版本,在此下载页面的底部有 Previous Releases 链接,可查看到 Node.js 已发布的所有版本安装包。
下面以 macOS 系统下的安装为例,进行 Node.js 的安装。Windows 等其他平台下载对应的安装包安装即可,整个过程没有需要特别配置的地方,只要注意 Node.js 的安装包分为 32 位和 64 位,下载你电脑对应的安装包即可,且需要安装最低版本为 4.0 以上的 Node.js。
这里演示的是 Node.js 6.11.3 版本的安装,如图 2-4,双击安装包进行安装,界面会有当前安装包包含的 Node.js 版本和 npm 版本的提示。

截图
图 2-4 安装 Node.js 的版本提示

安装程序后续会需要确认 Node.js 的 License,点击同意即可。安装程序同时会提示占用的系统空间,继续下一步。如图 2-5,安装程序会进行安装,安装完成后,会在界面中提示 Node.js 和 npm 最终安装的路径,你需要检查你系统的全局变量是否已包含了对应的目录,一般都是默认配置好的。

截图
图 2-5 Node.js 安装完成的提示信息

在 Node.js 安装完成后,可以通过命令行检查 Node.js 以及 npm 有没有安装成功。打开 macOS 的终端或者 Windows 系统下的命令行工具,输入命令 node –v 可以查看到当前安装成功的 Node.js 版本信息,输入 npm –v 可以查看到当前连带安装的 npm 版本信息。
运行结果如图 2-6 所示,至此说明 Node.js 框架安装成功。

截图
图 2-6 命令行查看 Node.js 和 npm 的版本信息

2.2.2 安装 React Native

在安装 React Native 框架之前,我们需要安装监控文件变更的组件 watchman,便于后期 React Native 项目的打包更新时提高性能之用。
在命令行中输入命令 brew install watchman 即可安装,前提确保系统中已安装好了 Homebrew(https://brew.sh/)。
安装过程如图 2-7 所示,首次更新 Homebrew 的时间可能稍长,耐心等待下即可。
注意在 Windows 环境下不需要进行 Homebrew 和 watchman 的安装,跳过此安装步骤即可。

截图
图 2-7 macOS 下安装 watchman

接下来我们开始安装 React Native,之前的章节在介绍 npm 时说过,React Native 也是一个 npm 的包,那么这里就可以通过 npm 命令进行 React Native 框架的安装。
图 2-8 为 React Native 在 npm 包中的项目页面,地址为:https://www.npmjs.com/package/react-native。

截图
图 2-8 npm 中 React Native 项目页面

在 npm 下安装一个包的命令格式为:npm install 包的名称,如果加上参数 g,命令 npm install –g 包的名称,就是全局安装,而不仅仅是在运行命令的当前目录中安装。
所以,我们通过 npm 命令执行安装 React Native CLI 的命令行工具即可,后续的 React Native 项目初始化都可以通过 React Native CLI 命令行工具进行执行。
安装命令为:npm install -g react-native-cli。
命令执行的结果如图 2-9 所示。

截图
图 2-9 安装 React Native CLI
下面我们在本书配套源码的 02-02-02 文件夹中执行第一个 React Native 项目的初始化,通过执行下面的命令进行初始化:react-native init HelloReact。
命令执行过程如图 2-10 所示。

截图
图 2-10 初始化 React Native 项目
初始化完成后,最终生成的项目文件结构如图 2-11 所示。

截图
图 2-11 React Native初始化项目结构

我们分别使用 Xcode 打开 ios 文件夹中的 iOS 项目以及使用 Android Studio 导入 android 文件夹中的 Android 项目。
iOS 平台的执行结果如图 2-12 所示,可以看到,React Native 构建的项目直接就适配好了 iPhone X,其他的 iOS 设备适配当然也没有任何问题。

截图
图 2-12 项目在 iOS 平台下运行
Android 平台的执行结果如图 2-13 所示,同样,也可以完全适配。

截图
图 2-13 项目在 Android 平台下运行
我们到目前还没有写任何一行代码,生成出来的 App 已经可以完美适配了 iOS 与 Android 两个平台,这正是 React Native 平台的魅力所在,后续的实战章节我们还将继续领略到此框架的魅力。

2.2.3 代码编辑器以及推荐插件

一个好的代码编辑器会让你的开发效率有成倍地提升,这里从性能、界面、插件生态系统以及编辑器的更新迭代情况综合考虑,推荐大家使用微软推出的、免费的 Visual Studio Code,的确非常地好用,可以说是目前前端开发的首选编辑器。图 2-14 是 Visual Studio Code 编辑器的基本界面,编辑器的左侧五个按钮依次为:项目文件浏览器、代码搜索、git 管理、调试工具、插件安装,右侧为代码编辑主界面,最下面的状态栏包含了如 git 信息、代码定位、代码中的错误与警告、文件编码、代码格式等相关信息。

截图
图 2-14 Visual Studio Code 编辑器
Visual Studio Code 还有一个很大的优势就是有很多增强开发效率的插件,这里推荐几个开发 React Native 项目必备的插件,这些插件会大大提高你开发的效率。你只需要直接在编辑器的插件选项中搜索名称即可安装。
Visual Studio Code 编辑器的插件安装界面如图 2-15 所示,在左侧的菜单按钮中选择插件菜单,然后你可以在图中标示的搜索框中搜索需要安装插件支持的语言或直接输入插件名称,在搜索结果列表中选择对应的插件点击安装按钮即可。

截图
图 2-15 编辑器插件安装

  • React Native Tools
    此插件提供 React Native 的开发环境,可以直接在编辑器中使用 React Native CLI 的命令,并可以对 React Native 框架提供的函数、参数、API 等进行智能提示,非常地方便。
    插件地址:https://marketplace.visualstudio.com/items?itemName=vsmobile.vscode-react-native/。

  • ES7 React / Redux / GraphQL / React-Native snippets
    此插件在开发时提供 React Native 中会使用到的 ES 语法,进行快速生成输入。
    如导入模块命令 import moduleName from 'module' 可以直接使用 imp 输入、导出模块命令 export default moduleName 只需要输入 exp 即可。
    熟悉这些命令之后,可以省去很多书写固定长代码的时间。
    插件地址:https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets/。

  • react-beautify
    此插件用于快速格式化 React Native 开发过程中的 JavaScript、JSX 等代码,免去很多手动整理代码格式的过程,保持一个规范、整洁、易读的代码格式,是一个优秀软件工程师的必备素养。
    插件地址:https://marketplace.visualstudio.com/items?itemName=taichi.react-beautify/。


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React.js 入门与实战课程思维导图

原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了,在这里分享了课程中的思维导图,供大家参考。 原文发表于我的技术博客 此导图为课程中整理的重要知识点以及大纲导图,供大家学…

Webpack 2 视频教程 002 - NodeJS 安装与配置

原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的。 这个基本就是目前国内最好的 Webpack 2.0 最好的学习视频了,…

vue+elementUI 添加多个可以全选的多选框

elementUI-checkbox官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/checkbox 一、要做上面这种效果&#xff0c;首先要了解全选框中indeterminate 状态和v-model的变量的关系 参考 -Dayer-&#xff1a; <el-checkbox :indeterminate"isIndeterminate&…

WMI in C#[强类型操作]

C# 进行WMI操作的内容封装在System.Management.dll中&#xff0c;具体的在MSDN有详细描述&#xff0c;默认是用[“**’]去读取和设置属性等。 此处介绍一个自动生成强类型的包装软件&#xff0c;这样处理起来就简单了很多&#xff0c;不用在反复的查看参数等信息了。 1、 使用W…

2019年ipa发布苹果应用商店审核指南

https://baijiahao.baidu.com/s?id1623886553597961077&wfrspider&forpc ipa 发布审核指南 说明&#xff1a; 本指南为初版&#xff0c;旨在帮助非技术人员快速了解苹果ipa发布审核流程非技术的审核专员发布审核只需处理 &#xff08;五&#xff09;、iTunes connect …

GridView生成序号

一个经常碰到的情况&#xff1a;GridView需要添加一个序号列&#xff0c;并且从1开始自动编号。而数据库中的ID往往是不连续的&#xff08;会有记录被删除的情况&#xff09;&#xff0c;我们无法绑定现有字段作为编号。因此我们需要手动给GridView编号。 思路&#xff1a;在Gr…

[前端优化]使用Microsoft Ajax Minifier对资源文件进行压缩优化

在前端优化中&#xff0c;js、css等文件的优化一般都是压缩的优化&#xff0c;进行合并、减小体积以达到减小请求的目的。 今天发现了一个集成在VS中的压缩插件&#xff0c;使得压缩变得比较快捷。 配置方法 首先需要去下载Microsoft Ajax Minifier&#xff0c;一路安装就可以&…

手把手教你用 elementUI 实现导航栏

elementUI导航栏官网 1. 安装 elementUI 2. 文件准备 3. 配置路由 4. 导航栏代码 一、安装 elementUI npm i element-ui -S&#xff1b; 在 main.js 中注册组件&#xff1a; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; Vue.use(Elem…

vuex+element 从后台获取数据写导航栏-菜单权限

主要用到 vuex、router.beforeEach、router.addRoutes()。vuex 的使用方法可以看我的另一篇博客&#xff1a;vue笔记&#xff08;四&#xff09;vuex。 顺便安利一个 在线视频转gif图。 因为第一次用到 router.addRoutes()&#xff0c;在做这个需求的时候遇到了很多问题&…

P3393 逃离僵尸岛 最短路dijkstra

题目描述 小a住的国家被僵尸侵略了&#xff01;小a打算逃离到该国唯一的国际空港逃出这个国家。 该国有N个城市&#xff0c;城市之间有道路相连。一共有M条双向道路。保证没有自环和重边。 K个城市已经被僵尸控制了&#xff0c;如果贸然闯入就会被感染TAT...所以不能进入。由其…

JavaFX技巧7:使用CSS颜色常量/派生颜色

在使用FlexCalendarFX时&#xff0c;我不得不定义一组颜色以可视化不同颜色的不同日历的控件。 每个日历不仅提供一种颜色&#xff0c;还提供几种&#xff1a;用于取消选择/选定/悬停状态的背景和文本颜色。 颜色曾在多个地方使用过&#xff0c;但为了简洁起见&#xff0c;我仅…

import() 动态加载component组件失败

在写 vueelement 从后台获取数据写导航栏 时&#xff0c;当我加载动态路由&#xff0c;import() 总是失败。 假设 path: “/views/Home.vue”&#xff0c;name: “Home”。 一、使用 import() 语法加载组件 参考&#xff1a;“Cookysurongbin”的 解决vue动态路由异步加载im…

进入登录页时,用户名输入框自动聚焦、按enter键让密码框聚焦,完整输入信息后登录

让element-ui的输入框聚焦的4种方式 思路&#xff1a;&#xff08;可以跳过这一步看完整代码——完整代码&#xff09; 1. 进入页面时&#xff0c;用户名输入框就要获取焦点&#xff0c;使用 自定义指令 聚焦更方便。当然也可以用 ref 在 mounted() 钩子函数中让输入框聚焦。 …

vue-cli安装步骤

vue-cli脚手架模板是基于node下的npm来完成安装的所以首先需要安装node 条件&#xff1a; node在4.以上&#xff0c;npm在3以上 安装 指令&#xff1a; 1、 npm install -g vue-cli在全局下安装vue-cli # 安装 vue-cli npm install -g vue-cli# 初始化 webpack 项目 vue in…

使用Java编写简单的老虎机游戏

无论游戏多么简单或复杂 &#xff0c;Java都能胜任&#xff01; 在这篇文章中&#xff0c;让我们看一下Java编程的初学者如何制作一个简单而功能齐全的老虎机。 老虎机已经存在很长时间了&#xff0c;但是它的娱乐价值似乎并没有减弱。 InterCasino是第一个在1996年向世界提供…

html笔记(二)html4+css2.0(元素类型、css精灵、宽度自适应、BFC、浏览器相关概述、css统筹)

大标题小节一、元素类型1. 元素分类2. 置换和非置换元素3. 元素类型转换二、css精灵三、宽高自适应1. 宽度自适应2. 高度自适应3. 最小高度自适应4. 高度塌陷及解决办法5. 元素的高度自适应屏幕的高度四、BEC概念应用1. 常见定位方案2. 触发BFC3. BFC特性及应用4. BFC概念五、浏…

25.C# 异步调用Web服务

1.创建Web服务 1.1VS新建ASP.Net空Web应用程序 1.2添加Web服务新建项 1.3添加GetWeather方法和相关类 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.EnterpriseServices;namespace WebServ…

css中单位的使用

css中许多的属性都需要添加长度&#xff0c;而长度一般由数字和单位构成&#xff0c;如1px,1.5em,2vh&#xff1b;也可以省略单位&#xff0c;如line-height:1.5,表示行高为字体大小的1.5倍&#xff1b; 长度单位一般也分为相对长度和绝对长度。 &#xff08;一&#xff09;绝…

OSGi:进入微服务架构的门户

在构建可扩展&#xff0c;可靠的分布式系统的背景下&#xff0c;“模块化”和“微服务体系结构”这两个术语如今经常出现。 众所周知&#xff0c;Java平台本身在模块化方面很弱&#xff08; Java 9将通过交付Jigsaw项目来解决这一问题&#xff09;&#xff0c;从而为OSGi和JBos…

html笔记(五)2D、3D、3D动画

大标题小节一、2D1. css3 渐变的语法及应用2. 动画过渡&#xff1a;transition3. 2D转换属性&#xff1a;transform二、3D1. 3D转换2. 3D视距3. 3D翻转方法4. 3D位置移动5. 3D缩放三、3D动画1. keyframes2. 动画属性animation一、2D 1. css3 渐变的语法及应用&#xff1b; &a…