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

与你相逢,我很开心。

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

  • 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
  • 本文首发于掘金,未经许可禁止转载💌
相关推荐
姚*鸿的博客22 分钟前
pinia在vue3中的使用
前端·javascript·vue.js
宇文仲竹41 分钟前
edge 插件 iframe 读取
前端·edge
Kika写代码44 分钟前
【基于轻量型架构的WEB开发】【章节作业】
前端·oracle·架构
天下无贼!2 小时前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
Jiaberrr2 小时前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
前端·javascript·tree·树形·过滤筛选
赵啸林2 小时前
npm发布插件超级简单版
前端·npm·node.js
我码玄黄3 小时前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
罔闻_spider3 小时前
爬虫----webpack
前端·爬虫·webpack
吱吱鼠叔3 小时前
MATLAB数据文件读写:1.格式化读写文件
前端·数据库·matlab
爱喝水的小鼠3 小时前
Vue3(一) Vite创建Vue3工程,选项式API与组合式API;setup的使用;Vue中的响应式ref,reactive
前端·javascript·vue.js