如何优雅的写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,一个前端,热爱技术也热爱生活。

与你相逢,我很开心。

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

  • 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
  • 本文首发于掘金,未经许可禁止转载💌
相关推荐
weixin_493503674 小时前
Vue3 前端生成 PDF:会员证书与活动签到表的三种打印方案与踩坑记录
前端·pdf·状态模式
李少兄5 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
尾善爱看海7 小时前
前端算法与手写题集
前端·算法
徐小夕7 小时前
JitWord 4.0 万字分享:从协同工具到AI Word操作系统,聊聊3年产品创业史
前端·vue.js·后端
shmily麻瓜小菜鸡8 小时前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript
萧鼎8 小时前
Python 高性能Web框架神器 FastAPI:自动生成API文、基于Pydant、异步请求处理全搞定
前端·python·fastapi
IT_陈寒9 小时前
Redis误用keys命令把生产环境搞崩了,血的教训
前端·人工智能·后端
计算机魔术师9 小时前
5000亿估值冲刺科创板,DeepSeek 为何急着上市?
前端
我血条子呢9 小时前
前端解析word方案
前端·word
kyriewen10 小时前
我用 AI 写完一个需求后才发现,最难的不是 prompt,而是验收
前端·程序员·ai编程