概述

当看到大屏的设计稿, 想到的第一件事情是什么? 没错, 大脑 惯性思维 开始活动了. 我想到的是 Layering 分层gridster在新窗口打开 布局系统 以及 进出场动画.

当然 我不会在这里展开 为什么我先想到的是这些, 这不符合我们的主题 规范化.

很讨厌不是吗 惯性思维 是大脑最舒适的思维方式, 它完全凭着记忆和下意识的去得出结论. 或者说是经验学. 甚至有的时候我们把这个叫做 灵感.

但是 规范化 可以说是截然不同的思维方式.

自研框架

为什么要自研框架 ? 成本可以控制吗 ? 交付能按时吗 ? 有没有风险 ?

选择 技术方案 有成熟的方法论, 常见考虑因素包括但不限于:

  • 客户需求

    • 功能需求

    • 非功能需求

      用户体验, 兼容性, 合规性, 性能, 安全性 ...

  • 成本

    • 成熟度 受欢迎的程度
    • 学习曲线
    • 可伸缩 可扩展 可维护性
    • 开发文档 与 开发社区

这里不长篇大论, 无非还是 经验学. 基于 非功能需求 自研框架是最佳选择. 当然花一点时间 做一个 技术探针 也是必要的.

非功能需求

  • Vue3 与 其它 技术栈选择

    Vue 作为技术栈往往都写在 需求规格说明书 里面. 甚至 图表组件库也要求使用 Echarts.

    既然是 业务需求, 照办.

  • 局域网

    • 在内网运行不能访问外部网络
    • 这个对地图组件的选择有很大的影响
  • 兼容老浏览器

    • 这个对 技术栈选择 有影响
  • 高度定制化 (客户带着设计师完成需求分析和原型设计)

    • 这个决定了 第三方 技术方案 是否可行

设计维度

从头来过, 从 业务需求 出发, 设计稿里面的各种设计元素 我们怎么合理的 组织起来, 分而治之, 一个个的去实现它.

先从最重要的开始:

  • 路由
  • 分层
  • 布局系统
  • 地图
  • 信息卡片
  • 图表 Charts

先考虑这么多, 足够了, 这些模块即是独立的, 又是顺序相关的, 当他们要组合在一起的时候, 后面的元素必须建立在前面的元素之上.

技术细节

技术细节一开始并不重要.

可能你无法相信, 项目开始的时候, 这个项目要用的每个技术栈, 我几乎都没有 用过. 但是我却对他们又非常 "熟悉".

是的从 业务 角度 也就是目的 来说, 我很熟悉我要选择的技术栈. 从 技术 角度来说 我不记得 这些技术栈的 API 细节. 这就是我之前提到的 反转. 这反而能让我始终坚持 规范化中的原则.

随着项目的推进, 每个技术栈的 API 文档 从挑着看几页 演进到 几乎都被翻了个遍, 为了贯彻 业务目标, 每个技术栈的主要 API 甚至是 隐藏技能 都会被用到.

这不是巧合, 恰恰说明 技术栈就是对 业务目标 实现细节 的 最合理抽象.