网站首页 > 技术文章 正文
当初框架的设计目标是:前端、后端、存储端统统一锅端,为什么这么设计,一方面是想减少开发人员对于开发环境及各类工具的安装配置时间,另一方面是想消除各端之间的集成调试问题,使开发人员更多的关注数据结构、业务逻辑、用户界面的设计与开发。为了达成这一目标,作者在框架的前端开发尝试过类似于拖拉方式的界面生成,但发现灵活性受到了极大的限制。后来学习了Vue等项目,确认了框架集成Vue及ElementUI来用于前端用户界面开发的方案。
一.实现思路
由于框架的IDE是基于Web的,如何实现带智能提示的代码编辑及如何实现界面的即时预览成为一个小小的挑战(作者熟悉skia,gdi+等方式画用户界面,但不熟悉web前端)。
- 实现代码编辑器
作者一开始想到VS Code是基于Electron的就看了一下源码,结果发现微软从VS Code剥离了代码编辑器monaco-editor项目,具备了实现一个在线代码编辑器所需要的所有功能,而且惊喜的是monaco editor自带了Html\JS\CSS着色与智能提示。
- 实现即时预览
在大体了解了Vue的原理后,作者在IDE的视图设计器内实现了在线将Vue组件的代码编译转换为运行时代码,类似于Webpack分别将模版、脚本、样式编译然后组合在一起形成一个js包,设计时发给预览窗口动态加载,运行时则通过Vue的异步组件功能按需加载。
二.实现效果
1.组件开发
每个组件通过ViewModel关联,开发完全等同于在线Vue组件开发,这里不再过多描述。需要注意的是样式统一为Vue的局部样式(scoped)。
Tip1: 在代码编辑内CMD+S保存, CMD+1,CMD+2,CMD+3分别切换模版、脚本、样式编辑;
Tip2: 点击顶部"Preview"在右侧显示预览窗口;
Tip3: 框架集成的ElementUI组件均注册为全局组件,且前缀为e-xxxx,非默认的el-xxxx。
2.组件组合
组合其他子组件时,需要先在脚本内注册局部组件,如下图所示:
然后在模版内放置注册的子组件,如下图所示:
3.组件路由
每个视图模型默认是不加入路由表的(sys.Home例外是默认的主页),如果在运行时需要通过浏览器地址栏直接访问视图模型,必须将视图模型加入路由表,如下图所示:
Tip1: 自定义路径如果为空,则使用默认路径,如http://地址/app/index.html#/sys/EmploeeList;不为空则为http://地址/app/index.html#/{自定义路径};
Tip2: 自定义名称支持多级,如: PersonInfo/Address。
4.服务集成
框架支持两种方式调用服务模型进行业务逻辑处理:
4.1 异步await方式:
4.2 异步Promise方式:
export default class Home extends Vue { onclick() { sys.Services.HelloService.SayHello() .then(res => { this.$message.info(res); }) .catch(err => { this.$message.error(err); }); } }
5.组件调试
本想跟服务模型一样在服务端跑一个调试进程,但考虑实现复杂暂直接利用浏览器的调试功能。另由于作者的半吊子Web前端水平,暂没有搞定sourcemap,所以浏览器调试器内显示的源码是视图设计器编译转换过后的,比较丑陋,具体参考下图所示:
Tip: 在调试器Sources面板快捷键CMD+p然后输入{应用名}.{视图名}如sys.Home.js可以快速定位编译转换后的源码。
三.本篇小结
目前实现的部分用来开发网站、中后台系统、微信公众号之类的应用是没有问题的,待将来Google开源了Hummingbird后作者还想在IDE内实现移动App的用户界面开发。如果您有问题或Bug报告,请留言或在https://github.com/enjoycode/appbox.deploy提交Issue。
猜你喜欢
- 2025-07-02 以太坊连载(24):集成开发环境(IDE) Mix介绍
- 2024-10-08 技术分享 | 在 IDE 插件开发中接入 JCEF 框架
- 2024-10-08 各种程序员正在使用的编辑器和IDE
- 2024-10-08 不同阶段web前端开发学习需要具备哪些技能?
- 2024-10-08 Arduino Pro IDE现已发布 arduino projects
- 2024-10-08 重磅!微软发布 Visual Studio Online:Web 版 VS Code + 云开发环境
- 2024-10-08 Web 前端开发 IDE——Brackets 前端开发工具webstorm
- 2024-10-08 Github标星30.7K!这一款强大开源的IDE我粉了
你 发表评论:
欢迎- 588℃几个Oracle空值处理函数 oracle处理null值的函数
- 580℃Oracle分析函数之Lag和Lead()使用
- 569℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 567℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 561℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 553℃【数据统计分析】详解Oracle分组函数之CUBE
- 539℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 535℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)