react管理 native与存活的应用程序集成

(1)通过cocopods 集成 ,以下内容
参考 http://wiki.jikexueyuan.com/project/react-native/integration-existing.html

利用Code
First的话对于实体字段只怕表映射修改都亟待运用迁移操作,上边列出操作具体步骤

     

① 、创制映射类和实体,本文重假若上课迁移手续,其余代码则尚未列出

鉴于 React
并不曾做出关于您任何的技巧堆栈的比方——日常在 MVC 中总结的用 V 来代表——那很简单嵌入到现有
non-React Native
应用程序中。事实上,它与其它的最好实践社区工具集成了,如 CocoaPods

1     public class ProductMap : EntityTypeConfiguration<Product>
2     {
3         public ProductMap()
4         {
5             ToTable("Product"); //指定表明
6             HasKey(p => p.Id);  //指定主键
7         }
8     }

1     public class Product
2     {
3         public int Id { get; set; }
4         public string Name { get; set; }
5         public string Description { get; set; }
6     }

需求

贰 、如果以后Product类Name要设置为非空和最大尺寸为200

用 CocoaPods 安装 React Native

CocoaPods 是 iOS/Mac
开发的管住工具包。大家须求用它来下载 React Native。倘诺你还没有安装
CocoaPods,请查看本教程

当您准备接纳 CocoaPods
工作时,添加以下行到 Podfile 中。假设您没有,那么在您的类型的根目录下创办它。

    pod 'React'
    pod 'React/RCTText'
    # Add any subspecs you want to use in your project

记得安装具有你要求的
subspecs。没有 pod 'React/RCTText'<Text> 成分不可能选择。

接下来安装你的 pods:

$ pod install
1     public class ProductMap : EntityTypeConfiguration<Product>
2     {
3         public ProductMap()
4         {
5             ToTable("Product"); //指定表明
6             HasKey(p => p.Id);  //指定主键
7             Property(p => p.Name).IsRequired().HasMaxLength(200);
8         }
9     }

始建你的 React Native 应用程序

有两块你须要安装:

  1. 根 JavaScript 文件,该公文将含有实际的 React Native
    应用程序和此外零件
  2. 包裹 Objective – C
    代码,将加载脚本并创设一个 RCTRootView 来展现和治本你的 React
    Native 组件

率先,为您的应用程序的 React
代码创设3个目录,并创办三个大致的 index.ios.js 文件:

$ mkdir ReactComponent
$ touch index.ios.js

为 index.ios.js 复制 & 粘贴以下 starter 代码——它是叁个 barebones React
Native 应用程序:

'use strict';
var React = require('react-native');
var {
  Text,
  View
} = React;
var styles = React.StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: 'red'
  }
});
class SimpleApp extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <Text>This is a simple application.</Text>
      </View>
    )
  }
}
React.AppRegistry.registerComponent('SimpleApp', () => SimpleApp);

SimpleApp 将是你的模块名称,这将在背后使用。

 如若运转程序则会报错

将容器视图添加到你的应用程序中

于今,你应当为 React Native
组件添加1个器皿视图。在您的应用程序中它能够是别的的 UIView

管理 1

但是,为了使代码简洁,让我们把 UIView 归入子类。让大家把它取名为 ReactView。打开你的Yourproject.xcworkspace,并创办二个新类 ReactView(你能够把它取名为别的你喜悦的名字:))。

    // ReactView.h
    #import <UIKit/UIKit.h>
    @interface ReactView : UIView
    @end

在三个视图控制器中,想要管理这一视图,继续丰富二个出口并将其一而再:

    // ViewController.m
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet ReactView *reactView;
    @end

在那边本人大约的剥夺了 AutoLayout。在实际上产品中,你应该自个儿打开
AutoLayout,并且安装约束。

管理 2

为容器视图添加 WranglerCTRootView

准备好读书最有意思的这有个别了吧?未来大家将在你的 React Native
应用程序存在的职务成立 RCTRootView

在 ReactView.m 中,大家率先必要用 index.ios.bundle 的 URI
启动 RCTRootViewindex.ios.bundle 将被 packager 创设,并由 React
Native 服务器服务,那将在稍后探究。

NSURL *jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"];
// For production use, this `NSURL` could instead point to a pre-bundled file on disk:
//
//   NSURL *jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
//
// To generate that file, run the curl command and add the output to your main Xcode build target:
//
//   curl http://localhost:8081/index.ios.bundle -o main.jsbundle
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                    moduleName: @"SimpleApp"
                                                 launchOptions:nil];

接下来把它当作 ReactView 的子视图添加。

[self addSubview:rootView];
rootView.frame = self.bounds;

具体操作

启航开发服务器

在根目录,我们需求运维 React Native 开发服务器。

(JS_DIR=`pwd`/ReactComponent; cd Pods/React; npm run start -- --root $JS_DIR)

其一命令将在大家的 CocoaPods 重视中运维一个 React Native
开发服务器,来创立捆绑脚本。——root 选项注脚 React Native
应用程序的根——这将是我们包蕴单一 index.ios.js 文件的 ReactComponents目录。该运转的服务器将透过 http:/ / localhost:8081 / index.ios.bundle 把 index.ios.bundle 打包成可访问的文书。

启用迁移须求在VS的程序包管控台输入指令来形成,借使有三个项目,记得选用对应项目

编译和平运动转

当今编写翻译并运维你的应用程序。你将看到你的 React Native
应用程序在 ReactView 内部运营。

管理 3

Live 也从模拟注重新加载工作!你曾经赢得了二个差不多的一点一滴封装在
Objective–C UIView 子类中的 React 组件。

管理 4

(2)通过项目选取的措施集成

    (1)将react native 整个文件夹copy到项目标目录文件中

   
(2)将要求运用的库一个一个增加引用,库都在react-native/Libraries目录中

   
(3)可是那一个办法的编写翻译依然多少难点,index.os.js都不能够一心脱离开,不理解哪有react-native本身搭建的后台

 

命令:Enable-Migrations

输入指令后会创制一个文书夹Migrations在那之中有个Configuration文件

 1     internal sealed class Configuration : DbMigrationsConfiguration<MigrationOpt.Models.EntityContext>
 2     {
 3         public Configuration()
 4         {
 5             AutomaticMigrationsEnabled = false;
 6             ContextKey = "MigrationOpt.Models.EntityContext";
 7         }
 8 
 9         protected override void Seed(MigrationOpt.Models.EntityContext context)
10         {
11             
12         }
13     }

 AutomaticMigrationsEnabled设置为true表示自动员搬迁移,为false则需求手动员搬迁移

Seed方法是在搬迁进程数据库Schema成功选择以往推行的操作,能够使用这么些法子添加一些开头化数据:

1 protected override void Seed(SchoolContext context)
2 {
3     context.Set<Student>().AddOrUpdate(
4       p => p.StudentName,
5       new Student { StudentName = "张三" },
6       new Student { StudentName = "李四" },
7       new Student { StudentName = "王五" }
8     );
9 }

 1、电动迁移

设若供给动用机关迁移的话,除了设置AutomaticMigrationsEnabled设置为true,还须要在DbContext构造函数中写上那句

Database.SetInitializer(new
MigrateDatabaseToLatestVersion<EntityContext,
Configuration>(“DBConnectionString”));

例如:

1         public EntityContext()
2             : base("name=DBConnectionString")
3         {
4             Database.SetInitializer(new MigrateDatabaseToLatestVersion<EntityContext, Configuration>("DBConnectionString"));
5         }

 2、手动员搬迁移

比方不希罕自动员搬迁移,能够手工业完结那么些操作。手工业迁移的补益后,能够每2六日退回到有个别钦赐的迁徙版本。迁移文件也得以展开版本管理有利于团队开发。

第3把Configuration构造函数中AutomaticMigrationsEnabled置为false,表示不选拔机关迁移。

手动员搬迁移的操作也是在程序包管理控制台使用PowerShell来完结,在历次变更实体或映射配置后,大家运维下边那个命令来生成2个搬迁文件:

Add-Migration ChangeSet1

Add-Migration是一向的,空格后边的ChangeSet1是小名,能够自定义

输入指令后会生成二个搬迁文件,代码:

 1     public partial class ChangeSet1 : DbMigration
 2     {
 3         public override void Up()
 4         {
 5             AlterColumn("dbo.Product", "Name", c => c.String(nullable: false, maxLength: 200));
 6         }
 7         
 8         public override void Down()
 9         {
10             AlterColumn("dbo.Product", "Name", c => c.String());
11         }
12     }

打响转移迁移文件后,运营 Update-Database 命令,EF就从头实践迁移操作,并把数据库更新到最新的动员搬迁文件对应的版本。

那条命令有多少个常用的参数,能够查阅迁移在数据库中实践的详尽操作(SQL等)

Update-Database -Verbose

那个参数能够内定目的迁移版本,对于急需后退到钦命版本的事态很有用(回滚)

Update-Database -TargetMigration
ChangeSet1

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注