web框架升级4.5
升级内容
-
nodejs服务调用nodejs服务
如上图所示,原nodejs服务调用其它nodejs服务也不再经由java服务转发消息,直接在当前进程处理服务逻辑,减少消息转发层级
-
nodejs服务调用时消息体增加时间戳
如某个服务逻辑过于复杂(期间调用非常多次其它服务)的情况,如果该服务执行时间已超时,将停止向其它服务发起调用。
-
支持一个产品多个项目
4.x框架下,一个产品下的所有项目(web,h5,weapp)全部在一个项目目录下,产生的问题有:
1. 单个产品下有多个终端同时开发的情况下,终端A的打包可能会影响到终端B,因为它们的服务位于同一个服务器中,无法分开打包,这是最重要的原因 1. 项目文件过多,开发时运行慢,对开发机性能要求高 1. 打包文件过大 1. 服务过多,不方便查找
-
按终端类型分离框架代码
4.x版本的框架将web/h5/weapp/aliapp等多个框架合并到一个框架里面,如果某个端点的框架有调整,有可能就会影响到全部的端点,分离后,互不影响。这也是支持一个产品多个项目的基础。
-
优化小程序开发,分离编译代码和打包代码,解决小程序开发项目文件过大无法真机预览问题。
-
支持开发桌面应用
基于Electron开发桌面应用,这主要将应用于一些桌面应用的需求,如web原型绘制工具。
-
支持原生移动应用(计划中,未实现)
封装reactivenative开发原生应用程序。
-
优化项目依赖关系
基于以下原因做了这方面的调整:
- 新版本的cnpm之前有出现过发布程序时漏掉某个目录的情况,当时的解决办法是使用npm进行项目发布
- 新版本的npm(11.4以上)版本的npm的目录结构不再是扁平的结构,之前的几个不同框架的依赖关系存在循环依赖的情况,原启动脚本查找文件路径也随之会有改变,而一些npm相关的工具像cnpm,yarn等都会跟着npm的改变而改变
- 有些包在安装时并不能通过cnpm或yarn成功安装,只能使用npm,所以我们必须适应npm
-
优化项目结构,组件内容(包括服务)放在同一个目录下
根据使用情况,进一步优化了项目结构,使项目结构更加合理。这部分与开发有关,需要培训(培训时可借助vscode插件扩展)。
-
事件响应
这一部分维持原状,只禁用了原来兼容4.0部分内容
-
原子操作
- 调用服务的原子操作废弃url地址,spaceid参数,改用配置。
- 废弃调用服务时不实用的cache参数,因其在多数业务系统中并不实用。
- 废弃原公共原子操作(因随终端类型增加,其不再是公共的)
- 禁用了原来兼容4.0部分内容
- 其它基本不变
对项目的影响
因为是大版本调整,原项目不建议直接迁移到新框架下使用。如果要迁移,没有难度,但有工作量。
培训内容
- vscode扩展的使用(对应4.5框架的扩展版本为2.x,原4.2框架版本对应的扩展版本为1.x)
- 文件结构调整后代码的书写规则,包括tpl,页面html,服务的调用
- 原子操作的分类调整
开发模板调整
同一项目的不同端点, 放在不同分支或不同项目内开发。不同端点可以根据端点类型 (web, h5, wxapp, desktop) , 选择对应项目模板去创建项目
原子操作
- 仓库由@feidao改为@dfeidao
- 各端点调用各端点的原子操作, core不再对外提供
- 部分原子操作参数调整, 例如nodejs原子操作不需要再传递url
- 删除了一些需要和java对接, 且不常用的原子操作。以后调用java的接口, 框架不再进一步封装, 可以直接根据java部门提供的接口文档自行拼参数,使用通用的java原子操作完成调用。
服务端
1. 服务目录调整
移除根目录下 service 目录, 服务直接写在各个组件下, 以s字母开头命名,如s001, s002
// 调用服务代码片段:
import nodejs from '@dfeidao/atom-web/msg/nodejs';
await nodejs('page-name/zj-000001/s001', { name: '456' } });
2. 严格化数据查询
- 查表query必须传 查询字段; 查询条件; 分页
- 取数条件为 undefined 时, 会抛错
web/h5端
1. 项目配置调整
- feidao.json内的type写端点类型web, h5, wxapp, desktop
- package.json内的name也需要配置, “name”: “@feidao-works/spaceid-type”,
- 在feidao.json内配置路由信息
2. tpl.tpl
组件内增加tpl.tpl文件, 可以进行格式化处理, 之前的tpl.ts会通过tpl.tpl文件自动生成
3. 禁止使用any
以前定义客户端事件常常这样写
export default async function a001(fd: IFeidaoAiBrowserComponent, ...args: any[]) {
新版本框架禁止使用any以后, 上边这样写会报错, 如果事件有第二个参数的话, 请直接注明类型, 例如
export default async function a002(fd: IFeidaoAiBrowserComponent) {
export default async function a003(fd: IFeidaoAiBrowserComponent, e: Event) {
export default async function a004(fd: IFeidaoAiBrowserComponent, name: string) {
wxapp端
1. 目录结构调整
src目录下不需要pages目录, 以前写在pages目录内的 .json.wxml.wxss文件, 直接写在页面目录下。
同样取消service目录, 服务写在各自的页面下
2. 开发者工具工作目录调整
使用新框架开发微信小程序, 执行npm t
会在根目录下生成develop目录, 请把微信开发者工具的工作目录选择在此develop目录下, develop目录没有dist目录内多余的代码, 避免了生成预览二维码时, 每次都要手动删除多余代码的问题。
desktop端
desktop端之前只有很少的人接触过, 有开发任务的时候, 再详细培训
目录结构调整
采用和web端一样使用组件式的开发思想,划分组件,划分P块
项目配置
package.json为服务器上的包配置文件, 服务端使用的依赖写在dependencies内, 客户端使用的依赖写在devDependencies内。 package.app.json为应用的包配置文件, 只需要写客户端用得着的依赖。
需求
为应用代码开源之后的情况,需要公司找专人做以下几个事情:
- 我们源代码的许可
- 我司对外正式的网站链接,公司介绍