一个有经验的 React Native 和 mobx 融合的脚手架项目

原文链接:https://github.com/80percent/react-native-template-mobx

掘金推荐:https://juejin.im/entry/59104bc1ac502e006cfdaf11

react-native-template-mobx 出自一个深圳的 react native 资深团队之手, 经历过一年的完善与打磨. 是做商业级项目很好的开端. 有以下特点: 1. 解决了许多基础问题, tabbar 的集成, iOS 键盘切换问题, 路由设定等. 2. 集成了 Icon, API 等你非常可能需要的组件, 零配置. 3. 使用超级简单, 利用 react native 0.43 版本支持的 template 技术, 只需要一两条命令 react-native init xxx --template mobx 即可. 更多内容可到 github 仓库上查看与关注.

It's an experienced template for a new react native project with mobx architecture from react-native-template-mobx.

这是一个有经验的 React Native 和 mobx 融合的脚手架项目.

Notice: This project has renamed from mobx-react-native-template to react-native-template-mobx because of the convention of React Native Template published at React Native 0.43 version. here is the link

react-native-template-mobx has supported react native 0.44.

screenshot

Prepare

Install Dependencies:

  1. NodeJS( ~> 6.2.2 )

$ brew update && brew install node

  1. yarn

    $ npm install -g yarn

  2. rnpm

    npm install -g rnpm

On iOS platform, Xcode is needed.

On Android platfrom, Android studio or Genymotion is needed.

After finish install dependencies, we can launch the template easily.

Install

Replace xxx to your real project name.

  1. $ npm install -g react-native-cli
  2. $ react-native init xxx --template mobx
  3. $ cd xxx
  4. $ yarn add babel-plugin-transform-decorators-legacy --dev
  5. $ cat gitignore >> .gitignore; rm gitignore

At last, launch it to check.

iOS:

react-native run-ios

Android:

react-native run-android

Done.

You need start an iOS simulator or android simulator before running your app, see more: https://facebook.github.io/react-native/docs/getting-started.html

What it does

We have developed several commercial native apps with React Native at the last year, the template is the key we can make them successfully.

First, mobx is the key of the template. If you also love mobx, you should choose this template. with zero-configuration, you can use mobx.

Second, we apply some useful react-native components for you, of course, zero configuration:

  • apisauce ( API provider )
  • react-native-button
  • react-native-vector-icons
  • react-navigation
  • react-native-smart-keyboard

Third, we provide a nice directory construction for your new project, clean and clear.

At last, we provide the most common tabbar routers example, see more detail into the directory app/.

And we are improving the template continually.

Mobx advantage

Mobx is a new architecture to manage your store data. Unlike redux or flux, there's just a fewer concepts to understand and it's very simple to use.

See more usage into the directory app/.

Some Advice

Question: How to create a new page

  1. Add a new container component to app/containers/, some examples in app/containers/ you can follow.
  2. Add a new route to app/navigation/index.js.
  3. Refresh your app page

Question: How to debug app

ReactNative use chrome debugger by default. You need install chrome browser before debug your app.

iOS Simulator:

  1. Open your app
  2. Input ctrl + command + z( if not, try command + d )
  3. Choose Open debugger from the new modal. Now chrome will open a new page: http://localhost:8081/debugger-ui
  4. Select pause on exception in chrome debugger( optional )
  5. Refresh your app page( command + R )

Android:

  1. Open your app
  2. Input command + m
  3. Choose Open debugger from the new modal. Now chrome will open a new page: http://localhost:8081/debugger-ui
  4. Select pause on exception in chrome debugger( optional )
  5. Refresh your app page( double click R )

see more: https://facebook.github.io/react-native/docs/debugging.html

Question: How to rename my project

  1. Update the name of package.json
  2. Update the name of index.ios.js & index.android.js
  3. rm -rf ios; rm -rf android;
  4. react-native upgrade
  5. rnpm install

It's all

Other useful resources

  1. react layouts
  2. mobx best practices in react-native
  3. Running on android device
  4. Singed apk on android device

Code style recommend

  1. Use ES7
  2. Two spaces instead of tab

Built with

80% team