框架是用抽象模型驱动的方式来生成应用系统的,这样可以将这些模型序列化为相应的模型包文件,通过反序列化导入至其他部署环境内,从而实现开发环境与生产环境的同步,包括对应的数据库结构的同步。下面通过示例来演示如何操作:

一、准备测试应用

  • 通过New->Application创建一个新应用,名称如:erp;
  • 选择新建的应用的Entities目录,通过New->Entity新建一个实体模型并映射至Default存储内,随便添加些属性;
  • 选择新建的应用的Services目录,通过New->Service新建一个服务模型,随便实现一个服务方法;
  • 选择新建的应用的Views目录,通过New->View新建一个视图模型;
  • 通过Models->Publish发布当前应用。

二、导出应用模型包

  通过AppStore->Export Application选择相应的应用导出,参考以下动图:

三、导入应用模型包

  导入应用模型包时框架会判断当前是否存在相同的应用,如果存在则会进行新旧模型的比对,进行相应的添加、删除、更新模型的操作,如果不存在则简单导入整个应用。在这里我们先尝试导入整个应用,所以先通过选择刚刚创建的应用,点击Models->Delete删除掉,然后再通过AppStore->Import Application重新导入,参考以下动图:

注意:如果模型包使用了非默认数据库,导入前需要先创建相同名称相同类型的存储模型。

四、更新应用模型包

  以上步骤导入了一个新的应用,下面步骤尝试更新应用:

  • 修改模型:比如实体模型添加一个属性或添加一个索引,服务模型修改一下逻辑;
  • 重新发布并导出为新的应用模型包;
  • 删除当前应用,导入旧的应用模型包(步骤二导出),查看一下模型定义;
  • 再重新导入新的应用包(本步骤导出),再查看一下模型是否更新了,另外可看一下数据库的数据表结构是否同步更新了。

五、本篇小结

  模型包的导入导出功能一方面可以方便同步开发与生产环境,另一方面作者将来想建设一个应用及外包市场,这样大家就可以在市场上下载模型包直接导入修改。GitHub/enjoycode上用于测试的Windows的部署包[appbox.deploy.win]也由GitHub Action自动更新,Linux请自行编译测试。另一边码代码一边码文实属不易,作者需要您的支持请您多多点赞推荐!

AppBoxFuture实战: 如何同步开发与生产环境的模型的更多相关文章

  1. webpack快速入门——实战技巧:开发和生产并行设置

    package.json中,devDependencies和dependencies是不同的 devDependencies:开发依赖 dependencies:生产依赖(线上) 1.安装生产环境的依 ...

  2. 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样

    在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": { "publish- ...

  3. webpack根据开发与生产环境配置不同变量--webpack.DefinePlugin

    webpack有一个DefinePlugin接口,可以实现根据开发与生产环境配置不同变量.范例如下: 需求:开发环境请求baseUrl = '':生产环境请求 baseUrl = 'http://lo ...

  4. JPush Android 推送如何区分开发、生产环境

    我们 Android 开发者在使用极光推送时可能会发现,在通过官方控制台进行推送时.只有 iOS 区分了开发和生产环境,而 Android 则没有.但实际开发中又确实经常需要针对开发和生产环境分别来推 ...

  5. Node JS后端项目开发与生产环境总结

    原文地址:Node JS后端项目开发与生产环境总结 Node JS常用后端框架有express.koa.sails.国产框架有个egg js,已经在cnode投入生产了,还有个think js,类似t ...

  6. spring boot--日志、开发和生产环境切换、自定义配置(环境变量)

    Spring Boot日志常用配置: # 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug ...

  7. 用前端姿势玩docker【四】基于docker快速构建webpack的开发与生产环境

    目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...

  8. Maven_如何为开发和生产环境建立不同的配置文件 --我的简洁方案

    其实也是最近才看Maven, 以前都是用ant+ivy, 对于轻量级的项目来说足够了, 而且非常灵活. 看了看Maven, 约定.... 现在编程都说约定, 约定是挺好, 问题是超出约定的事情太多了, ...

  9. webpack开发与生产环境配置

    前言 作者去年就开始使用webpack, 最早的接触就来自于vue-cli.那个时候工作重点主要也是 vue 的使用,对webpack的配置是知之甚少,期间有问题也是询问大牛 @吕大豹.顺便说一句,对 ...

随机推荐

  1. 《C程序设计语言》练习 1-12

    #include<stdio.h> /*编写一个程序,以每行一个单词的形式打印其输入*/ main() { int c; c=getchar(); while(c!=EOF) { if ( ...

  2. 77)PHP,将session数据写到不用的存储介质中

    首先我的siession数据可以写到:文件中    session数据区  或者数据库中, 那么怎么将文件中的session数据或者session数据区的数据写到  数据库中,,又或者任意挑选两个不同 ...

  3. 推荐几款开源的js日期控件

    做为一个正规的网站,经常需要一些日期或时间的筛选,所以我们今天就推荐二十多款javascript的js日期/时间筛选插件.个个经典,绝对有你需要的. My97DatePicker ,国人开发的一款js ...

  4. python3下scrapy爬虫(第十一卷:scrapy数据存储进mongodb)

    说起python爬虫数据存储就不得不说到mongodb,现在我们来试一下scrapy操作mongodb 首先开启mongodb mongod --dbpath=D:\mongodb\db 开启服务后就 ...

  5. 让一个div拖动和让一个panel拖动加拉大拉小

    一.让一个div拖动 <!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <hea ...

  6. C# 开启线程的几种方式

    1.异步委托开启线程 public static void Main(string[] args) { Action<int,int> a=add; a.BeginInvoke(,,nul ...

  7. JQ主页图片划动切换效果

    .wrapper { width: 726px; float: left; } #jiao_dian { width: 980px; *height: 292px; margin-top: 10px; ...

  8. LVS + keepalived的实现

    ! Configuration File for keepalived global_defs { notification_email { linuxedu@foxmail.com mageedu@ ...

  9. Android开发之《内存对齐》

    为什么要进行内存对齐以及对齐规则:http://www.cnblogs.com/jijiji/p/4854581.html 1. 在32位系统中定义变量最好用int,因为这样效率高.原因就在于32位的 ...

  10. SpringBoot + JPA + mariadb

    SpringBoot + JPA + MariaDB 源码:https://github.com/ldl326308/LiveGreen-SpringBoot.git JPA持久层方法名命名规则: