如何优雅的写Vue3(JSX模式)+TypeScript

前言

本文较适合对代码有追求||有代码洁癖的前端攻城狮观看,由于我本人有代码洁癖,且追求最少的代码做最多的事,一路走来也学习了不少大佬的代码之道,我本无道,且行且道,遂得道。 本文即讲述我的代码简洁之道。

我本无道,且行且道,遂得道。

Bob叔叔的《代码整洁之道》

我时常认为,将编程喻为建筑和构造并不恰当。因为程序员不会做一个完整的设计,从头开始建基,再一步步搭建直至完工。

编程的步骤是:先画草图,再反复添加细节。程序员要做的是修改、完善和扩展------这些都在各抽象层次上完成,直到软件满足要求为止。而软件永远不会真正完成。

这就是《代码整洁之道》的中心思想。贯穿全书的要点是:软件是一门艺术,做软件就像"画画"。作者认为编程的本质是一门工艺。

逻辑抽象化

前段时间翻阅《周易》,还记得,《周易》卦爻辞,一般分为两部分。一部分是取象,说明事理;另一部分是断语。

  • 所谓取象,就是叙述一件事,或描述某一自然现象,以此说明一个道理。
  • 所谓断语,就是下结论,多用吉、凶、悔、吝等辞。
  • 《周易》卦爻辞之所以要由两部分组成,原因就是为了占问。在占问时,遇到某一卦或某一卦中的某一爻,先看卦爻辞取象部分,表示占问者处境,然后看判断结果。

感觉写代码其实也是一种玄学,取象则是一些需求、业务,断语则是抽象化事物、逻辑。

实践

首先代码分为红、绿、黄三部分

  • 红色部分为条件语句
  • 绿色部分为逻辑语句
  • 红色部分为赋值语句

1、条件语句:逻辑较复杂,提取为条件函数

js 复制代码
const Audited = (): boolean => [undefined, 1].includes(record.auditStatus) && record.regulatoryMark === 2 && val === 1

2、业务逻辑:重复逻辑,提取为逻辑函数

js 复制代码
 const auditedLogic = () => {
    record.targetRegulatoryMark = val
    state.currentRecord = record
  }

3、赋值操作:合理运用解构赋值,简洁代码(解构无值返回的是undefined)

js 复制代码
const {regionDistrict, regulatoryAgency, companyType, businessSubtype, companyAddress} = record
state.setSuperviseParams.regionDistrict = regionDistrict
state.setSuperviseParams.regulatoryAgency = regulatoryAgency
state.setSuperviseParams.companyType = companyType
state.setSuperviseParams.businessSubtype = businessSubtype
state.setSuperviseParams.companyAddress = companyAddress ?? ''
state.setSuperviseDialogVisible = true

4、可选链运算符(?.)(无值返回的是undefined)、空值合并运算符(??)(undefined||null取右)

最终优化效果图

定义变量的简单写法(ts)

javaScript 复制代码
const state = reactive<{
      treeData:itemListType[]
      choseData:number[]
      activeNames:number[]
      submitLoading:boolean
    }>({
      treeData: [],
      choseData: [],
      activeNames: [],
      submitLoading: false
    })

未完待续...本文将持续更新,如若对你有帮助,可以大胆喜欢加点赞!

完全不够看?往期精彩回顾

学会这些鲜有人知的coding技巧,从此早早下班liao-JavaScript实战技巧篇

前端图片最优化压缩方案

Vue实战技巧Element Table二次封装

写在最后

我是凉城a,一个前端,热爱技术也热爱生活。

与你相逢,我很开心。

如果你想了解更多,请点这里,期待你的小⭐⭐

  • 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
  • 本文首发于掘金,未经许可禁止转载💌
相关推荐
excel17 分钟前
webpack 模块图 第 三 节
前端
徐_三岁18 分钟前
Vue 3中的 setup
前端
excel21 分钟前
webpack 模块图 第 二 节
前端
—Qeyser6 小时前
用 Deepseek 写的uniapp血型遗传查询工具
前端·javascript·ai·chatgpt·uni-app·deepseek
codingandsleeping6 小时前
HTTP1.0、1.1、2.0 的区别
前端·网络协议·http
小满blue6 小时前
uniapp实现目录树效果,异步加载数据
前端·uni-app
喜樂的CC7 小时前
[react]Next.js之自适应布局和高清屏幕适配解决方案
javascript·react.js·postcss
天天扭码8 小时前
零基础 | 入门前端必备技巧——使用 DOM 操作插入 HTML 元素
前端·javascript·dom
咖啡虫8 小时前
css中的3d使用:深入理解 CSS Perspective 与 Transform-Style
前端·css·3d
烛阴8 小时前
手把手教你搭建 Express 日志系统,告别线上事故!
javascript·后端·express