飞道科技

飞道科技文档总汇

web框架升级4.5

升级内容

  1. nodejs服务调用nodejs服务

    如上图所示,原nodejs服务调用其它nodejs服务也不再经由java服务转发消息,直接在当前进程处理服务逻辑,减少消息转发层级

  2. nodejs服务调用时消息体增加时间戳

    如某个服务逻辑过于复杂(期间调用非常多次其它服务)的情况,如果该服务执行时间已超时,将停止向其它服务发起调用。

  3. 支持一个产品多个项目

    4.x框架下,一个产品下的所有项目(web,h5,weapp)全部在一个项目目录下,产生的问题有:

     1. 单个产品下有多个终端同时开发的情况下,终端A的打包可能会影响到终端B,因为它们的服务位于同一个服务器中,无法分开打包,这是最重要的原因
     1. 项目文件过多,开发时运行慢,对开发机性能要求高
     1. 打包文件过大
     1. 服务过多,不方便查找
    
  4. 按终端类型分离框架代码

    4.x版本的框架将web/h5/weapp/aliapp等多个框架合并到一个框架里面,如果某个端点的框架有调整,有可能就会影响到全部的端点,分离后,互不影响。这也是支持一个产品多个项目的基础。

  5. 优化小程序开发,分离编译代码和打包代码,解决小程序开发项目文件过大无法真机预览问题。

  6. 支持开发桌面应用

    基于Electron开发桌面应用,这主要将应用于一些桌面应用的需求,如web原型绘制工具。

  7. 支持原生移动应用(计划中,未实现)

    封装reactivenative开发原生应用程序。

  8. 优化项目依赖关系

    基于以下原因做了这方面的调整:

    1. 新版本的cnpm之前有出现过发布程序时漏掉某个目录的情况,当时的解决办法是使用npm进行项目发布
    2. 新版本的npm(11.4以上)版本的npm的目录结构不再是扁平的结构,之前的几个不同框架的依赖关系存在循环依赖的情况,原启动脚本查找文件路径也随之会有改变,而一些npm相关的工具像cnpm,yarn等都会跟着npm的改变而改变
    3. 有些包在安装时并不能通过cnpm或yarn成功安装,只能使用npm,所以我们必须适应npm
  9. 优化项目结构,组件内容(包括服务)放在同一个目录下

    根据使用情况,进一步优化了项目结构,使项目结构更加合理。这部分与开发有关,需要培训(培训时可借助vscode插件扩展)。

  10. 事件响应

    这一部分维持原状,只禁用了原来兼容4.0部分内容

  11. 原子操作

    1. 调用服务的原子操作废弃url地址,spaceid参数,改用配置。
    2. 废弃调用服务时不实用的cache参数,因其在多数业务系统中并不实用。
    3. 废弃原公共原子操作(因随终端类型增加,其不再是公共的)
    4. 禁用了原来兼容4.0部分内容
    5. 其它基本不变

对项目的影响

因为是大版本调整,原项目不建议直接迁移到新框架下使用。如果要迁移,没有难度,但有工作量。

培训内容

  1. vscode扩展的使用(对应4.5框架的扩展版本为2.x,原4.2框架版本对应的扩展版本为1.x)
  2. 文件结构调整后代码的书写规则,包括tpl,页面html,服务的调用
  3. 原子操作的分类调整

开发模板调整

同一项目的不同端点, 放在不同分支或不同项目内开发。不同端点可以根据端点类型 (web, h5, wxapp, desktop) , 选择对应项目模板去创建项目

原子操作

  1. 仓库由@feidao改为@dfeidao
  2. 各端点调用各端点的原子操作, core不再对外提供
  3. 部分原子操作参数调整, 例如nodejs原子操作不需要再传递url
  4. 删除了一些需要和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. 严格化数据查询

  1. 查表query必须传 查询字段; 查询条件; 分页
  2. 取数条件为 undefined 时, 会抛错

web/h5端

1. 项目配置调整

  1. feidao.json内的type写端点类型web, h5, wxapp, desktop
  2. package.json内的name也需要配置, “name”: “@feidao-works/spaceid-type”,
  3. 在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为应用的包配置文件, 只需要写客户端用得着的依赖。

需求

为应用代码开源之后的情况,需要公司找专人做以下几个事情:

  1. 我们源代码的许可
  2. 我司对外正式的网站链接,公司介绍