AppBoxFuture(六): 前端组件化开发

??前面几篇都是在介绍结构化与非结构化的数据存储,本篇换换口味介绍一下框架是如何实现前端组件化开发的。首先得感谢Vue、ElementUI等优秀的前端开源项目,这些项目帮助作者快速实现了框架的两个前端工程(IDE及Web应用)的开发。

??当初框架的设计目标是:前端、后端、存储端统统一锅端,为什么这么设计,一方面是想减少开发人员对于开发环境及各类工具的安装配置时间,另一方面是想消除各端之间的集成调试问题,使开发人员更多的关注数据结构、业务逻辑、用户界面的设计与开发。为了达成这一目标,作者在框架的前端开发尝试过类似于Winform拖拉方式的界面生成,但发现灵活性受到了极大的限制。后来学习了Vue等项目,确认了框架集成Vue及ElementUI来用于前端用户界面开发的方案。

一.实现思路

??由于框架的IDE是基于Web的,如何实现带智能提示的代码编辑及如何实现界面的即时预览成为一个小小的挑战(作者熟悉skia,gdi+等方式画用户界面,但不熟悉web前端)。

1.实现代码编辑器

??作者一开始想到VS Code是基于Electron的就看了一下源码,结果发现微软从VS Code剥离了代码编辑器monaco-editor项目,具备了实现一个在线代码编辑器所需要的所有功能,而且惊喜的是monaco editor自带了Html\JS\CSS着色与智能提示。

2.实现即时预览

??在大体了解了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报告,请留言或在Github提交Issue。

原文地址:https://www.cnblogs.com/BaiCai/p/10477794.html

时间: 2024-12-16 11:43:45

AppBoxFuture(六): 前端组件化开发的相关文章

Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用.其实说是多页面应用,实际上在webpack中属于四个app,  如果真是做纯单页面,那应该有二三十个页面吧.所以我这里的多页面应用,是分为四个SPA.比如微信最下面,有四个导航,微信,通讯录,发现,我. 那么这四个导航,就是我的四个SPA,配置多个入口即可. 在这里就不说太多代码了,项目结构将会放

关于前端组件化开发的一点思考

前端开发与其他程序开发的共性在于,同样要求“高内聚,低耦合,易读写,可复用”. “高内聚”是指将在逻辑上可以归类为一个单元的代码封装在一起,尽量保障一块代码集合主要解决一个需求,在前端开发中,最常见的便是将一个逻辑单元的代码使用IIFE函数进行封装. 可以说,保障代码高内聚即在一定程度上满足了代码“低耦合”的要求,因为低耦合即是要求一个逻辑单元的代码块在改动时,不会造成其他逻辑单元代码块的变动,在前端开发中,即是要求各代码块不要过多共享某变量或对象,在不得以的情况下,一定要清晰注释. “易读写”

前端组件化开发的好处

最近工作中深深感觉到,一个新时代前端工程师需要有前辈毕昇的思维. 刚开始人们也是一笔一一划的来完成自己的作品,完成一件成品需要消耗大量的时间. 慢慢的人们发现,写来写去就是那些字,于是就出现了活字印刷..... 前端工程师思想的更迭出现了组件化开发..... 组件化开发有那些好处呢? (一),标记鲜明,容易维护 组件化后,我们只需要对对应的组件进行维护,不会影响到其它文件.而且文件结构清楚,方便后台人员的使用. (二),块状化结构,减少css 的书写,并且方便扩展 块状化结构,一个模块一个标识,

【组件化开发】前端进阶篇之如何编写可维护可升级的代码

前言 我还在携程的做业务的时候,每个看似简单的移动页面背后往往会隐藏5个以上的数据请求,其中最过复杂的当属机票与酒店的订单填写业务代码 这里先看看比较“简单”的机票代码: 然后看看稍微复杂的酒店业务逻辑: 机票一个页面的代码量达到了5000行代码,而酒店的代码竟然超过了8000行,这里还不包括模板(html)文件!!! 然后初略看了机票的代码,就该页面可能发生的接口请求有19个之多!!!而酒店的的交互DOM事件基本多到了令人发指的地步: 当然,机票团队的交互DOM事件已经多到了我笔记本不能截图了

前端框架Vue自学之Vue组件化开发(三)

终极目标:掌握和使用Vue(全家桶:Core+Vue-router+Vuex) 本博客目的:记录Vue学习的进度和心得(Vue组件化开发) 内容:通过官网说明,掌握Vue组件化开发. 正文: Vue组件化开发 一.认识组件化 原文地址:https://www.cnblogs.com/xinkuiwu/p/12037281.html

Vue全家桶之组件化开发

作者 | Jeskson 掘金 | https://juejin.im/user/5a16e1f3f265da43128096cb 学习组件化开发,首先掌握组件化的开发思想,组件的注册方式,组件间的数据交互方式,组件插槽的用法,vue调式工具的用法,组件的方式来实现业务逻辑功能. 组件化开发思想,组件注册,组件调式,组件间的数据交互,组件插槽 组件化规范,就是多的可能性重用 全局组件注册语法 Vue.component(组件名称, { data: 组件数据, template: 组件模板内容 }

vue.js组件化开发实践

前言 公司以往制作一个H5活动,特别是有一定统一结构的活动都要每次用html.css.js滚一次重复的轮子,费时费力.后来接到了一个基于模板的活动发布系统的需求,于是就有了下面的内容. 开始 需求一到,接就是怎么实现,技术选型自然成为了第一个问题.鉴于目前web前端mvvm框架的流行,以及组件化开发方式的出现,决定采用vue进行开发. 这里首先简单说下web前端组件化开发方式的历程: 最早的组件化结构,或者叫做组件化1.0时代,代码结构可能如下: 1 - lib/components/calen

谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo

前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ...... 每个频道有独立的团队去维护这些代码,具体到某一个频道的话有会由数十个不等的页面组成,在各个页面开发过程中,会产生很多重复的功能,比如弹出层提示框,像这种纯粹非业务的UI,便成了我们所谓的UI组件,最初的前端组件也就仅仅指的是UI组件. 而由于移动端的兴起,前端页面的逻辑已经变得很重了,一个页面的

2015前端组件化框架之路(转)

https://github.com/xufei/blog/issues/19 1. 为什么组件化这么难做 Web应用的组件化是一个很复杂的话题. 在大型软件中,组件化是一种共识,它一方面提高了开发效率,另一方面降低了维护成本.但是在Web前端这个领域,并没有很通用的组件模式,因为缺少一个大家都能认同的实现方式,所以很多框架/库都实现了自己的组件化方式. 前端圈最热衷于造轮子了,没有哪个别的领域能出现这么混乱而欣欣向荣的景象.这一方面说明前端领域的创造力很旺盛,另一方面却说明了基础设施是不完善的