React-Native 增强基础框架

React-Native 增强框架(MCRN)

特点
:1 抹平平台差异
2 更加强大的原生 Api 能力
3 自动缓存系统
4 逐步完善的全局组件库
5 自动页面追踪
6 更强大的 Debug 模式

CLI

安装

npm install mcrn-cli -g #全局安装mcrn-cli 工具

使用

cd {PROJECT_DIR}  #切到工程目录
mcrn init # 初始化工程  
#默认会以工程目录为工程名称

目录结构如下:

$ tree .
|____android
|____ios
|____src
| |____util 
| |____config
| | |____app.json #app 常用配置
| | |____Env
| | | |____index.js  #环境变量
| | |____Navigator
| | | |____index.js #路由配置
| |____component
| |____reducer
| |____image 
| |____action #存放 的 action alias MCAction
| |____service #存放网络相关操作  alias MCService
| |____scene #存放页面代码  alias MCScene
| | |____MineScene 
| | |____LoginScene
| | |____TenantSwitch
| | |____LaunchScene
| | |____HomeScene 
| | |____index.js
|____index.js

src/config/app.json

{
  "name": "Supplier_app", // 项目名层 默认为 init 文件夹名称
  "initialRouteName":"LaunchScene",  // 路由初始页面
  "displayName": "Supplier_app",  // app名称
  "storageExpireTime": 2592000000,  // storage 缓存时长
  "autoCacheModule_prd":["UserAccount"], // 生产模式缓存 store 模块 dev 默认缓存所有
  "js_version": 1,  //当前 js 版本用于热更新
  "sentry_dsn": "https://d1cb3e6c93034379bd71124f2989c659@spruce-sentry.stage.yunshanmeicai.com/77"  // sentry dsn
}

REDUX

action
path: src/action/index.js

export { default as UserAccount } from './UserAccount';
export { default as Loading } from './Loading';
export { default as PriceList } from './PriceList';
export { default as TenantList } from './TenantList';
Before use mcrn
import actions from 'MCAction';
import { connect } from "react-redux";
import { bindActionCreator } from 'redux';

const { login } = actions.UserAccount;

class LoginScene extends Component {
    ...
}
const mapDispatchToProps = (dispatch) => {
  return {
      ...bindActionCreator(login, dispatch),
      dispatch
  };
}
export default connect(null, mapDispatchToProps)(LoginScene);
After use mcrn
import actions from 'MCAction';
const { login } = actions.UserAccount;

@mconnect(null, {login})   #将 login 方法 map 进 props
export default class LoginScene extends Component {

reducer
path: src/reducer/index.js # 替代combineReducer 操作 自动创建 store

export { default as UserAccount } from './UserAccount';
export { default as Loading } from './Loading';
export { default as PriceList } from './PriceList';
export { default as TenantList } from './TenantList';
Before use mcrn
import { connect } from "react-redux";
class LoginScene extends Component {
    ...
}

const mapStateToProps = state => {
  return {
    UserAccount: state.UserAccount,
  };
};
export default connect(mapStateToProps, null)(LoginScene);
After use mcrn

@mconnect({'UserAccount'})   #将 UserAccount  map 进 props
export default class LoginScene extends Component {

Route

路由配置

src/scene/index.js

export { default as LaunchScene } from './LaunchScene';
export { default as HomeScene } from './HomeScene';
export { default as LoginScene } from './LoginScene';

//将个人中心页面配置进 sack 路由
export { default as MineScene } from './MineScene';
使用
import navigation from '@MCRN/navigation'

//重置路由堆栈
 navigation.resetRoute('routeName') 

//打开一个页面
 navigation.push('routeName') 

// 返回
 navigation.pop() 

...更多方法有待整理

CACHE

        怎么去设计app 缓存功能对于多数开发者来说是个头疼的问题,从最基本的用户基础信息、认证信息的存储,到部分功能的离线浏览功能,怎么做到数据的缓存变更新等等一系列问题是构建一个新的功能模块都需要花费大量的时间精力设计考虑的事情,然而当你使用了mcrn 之后这些问题统统可以忽略。例如:当你想让用户模块具有缓存功能的时候只需要在app.json 中配置上如下字段,

  "autoCacheModule_prd":["UserAccount"],

TRACK

        mcrn 自带基于友盟的页面pv 追踪,便于分析产品功能受欢迎程度。

DEBUG

更强大的Debug 模式

Debug模式

       我们Rect-Native 开发人员甚至不需要了解原生编译运行过程,只需要摇一摇手机 在MCRN-BundleSetting 里面选中设置开发服务 的 ip端口号即可。图例:见上图2屏

       切换开发环境也需痛苦的重新打包,只需点击环境选项并重启即可。图例:见上图3屏

更多模块功能开发中。。。

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

推荐阅读更多精彩内容