基于react-native的小项目总结

基于公司某款APP对于频繁的更新需求和对交互和性能上面的追求,决定用react-native(以下简称rn)来替代原来在APP里面的H5页面,在这里对此次小项目做些回顾总结,以及对rn的基础知识点进行进一步了解。

1. 项目开发环境介绍:

  1. 开发设备: mac
  2. node: 8.9.4
  3. react: 16.3.1
  4. react-native: 0.51.0
  5. teaset: 0.5.6(rn UI框架)
  6. xcode 9.2
  7. Android Studio 3.0.1(以下简称as)
  8. Genymotion模拟器
  9. VirtualBox虚拟机 5.1.30

2. 准备工作

项目是基于rn官方脚手架搭建,全局安装rn脚手架

npm install react-native-cli -g

Watchman是由Facebook提供的监视文件系统变更的工具,必须安装

brew install watchman

3. 脚手架搭建项目模板

react-native init rnTemplate

默认的rn版本是0.55.3版本,这里需要做下更改
rn项目中对于版本的匹配要求比较严格,版本报红的问题多

cd rnTemplate
rm -rf node_modules

package.json中 react-native 修改版本为0.51.0

npm install

4. 启动项目

启动项目的方式大致分为两种,一是命令行,二是xcode或者as

这里先介绍命令行

命令行如下:

react-native run-ios  // ios
react-native run-android // android

启动ios:

react-native run-ios
rn启动之ios.png

当我们用命令行启动ios的时候,会用xcode启动ios目录下面的 xx.xcodeproj文件

项目启动成功后如下:


ios启动成功.png

启动android之前,要先保证电脑开启了安卓的模拟器或者用安卓真机成功连接了电脑并且开启了调试模式,电脑信任状态,而且安卓的要指定sdk,默认会去找环境变量里面,这里我在android根目录下面直接新建了文件local.properties

添加如下:

ndk.dir=/Users/xiao/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/xiao/Library/Android/sdk

启动android:

react-native run-android

项目启动成功后如下:


android启动成功.png

用命令行启动时,无论是android或者是ios,都会另起一个命令行工具起启动最终被原生APP使用的index.bundle文件,一般是:

localhost:8081/index.bundle?platform=ios(android)

5. 修改脚手架模板

修改模板前大致介绍下脚手架搭建的模板目录结构


脚手架模板目录结构.png

两个文件夹androidios,对应原生安卓和ios
node_modules,项目依赖
.babelrc , babel配置文件,用于转换js
App.js,项目模板入口,供入口index.js使用
index.js, 项目入口
package.json,依赖配置文件

接着我们根据开发实际情况改造目录

改造后的目录结构.png

主要改动点,在于新建的src文件夹下面,同时把模板入口移到了src开发目录下面,下面是src目录介绍:

src,开发目录
assets,项目资源目录,存放css, imgs, js
components,存放我们的组件
views, 存放我们的视图页面
App.js, 入口模板

6. UI框架进场

目前暂时选择的是teasetUI框架传送门

UI框架就不过多介绍了,直接使用

npm install --save teaset

在App.js入口模板中使用

// App.js
import React, {Component} from 'react';
import {
    View
} from 'react-native';
import {TeaNavigator, Theme} from 'teaset';
import Index from './views/index'

Theme.set({fitIPhoneX: true});

export default class App extends Component {
    render() {
        return <TeaNavigator rootView={<Index/>}/>
    }
}

上面设置了项目的主题色配置,可以根据项目自行调整

teaset在页面跳转上做了很好的封装,上面我们引入了indx.js的页面

// index.js
export default class Index extends NavigationPage {
    renderPage() {
        return (
            <Text>index</Text>
        )
    }
}

index.js不再继承Component,而是teaset内置的NavigationPage页面导航组件, 渲染函数也变成了renderPage

具体的文档请参考上面的teaset传送门。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • React Native学习<一> 认识Recat Native 博客原文:http://www.jianshu....
    AFinalStone阅读 2,649评论 0 12
  • 1 热发布 网页发布 VS APP发布 网页发布:服务端上线新的网页代码,用户端通过链接直接访问。 APP发布:�...
    kkmoving阅读 4,056评论 1 15
  • 关于打不打孩子,我的观点是:尽量不打,该打就打。 就此观点来说,我和妞爸并没有很大分歧,分歧只在于是否要保留那个“...
    丑璞阅读 681评论 0 3
  • 遇见,是一种神奇的安排,是经久不衰的芬芳,也是一切的开始。我们在最值得尊重的生命面前,回归人性,温暖如初。 ...
    重症医学科阅读 519评论 0 0