V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  liuhuihao  ›  全部回复第 2 页 / 共 5 页
回复总数  84
1  2  3  4  5  
278 天前
回复了 zy0829 创建的主题 程序员 关于前后端接口联调的问题讨论
取决于 1. 前后端开发时能否完全按照文档来开发 2.文档的定义是否全面以及明确。
做到以上两点就可以不用联调了,但实话说基本做不到,很多时候文档定义的是 number 后端会给你个 string ,还有就是 文档最初在写的时候可能大家就没有考虑到会有一些额外的情况,开发过程中还要不停的修正文档,如果双方同步好了还行,没同步好就会出问题
@yusheng88 #67 没理解你的意思。我们这边接口针对 string 、数组、对象 类型前端确实是不需要 判 null 的,因为约定的是啥类型返回就是啥类型,空值也一样,string 类型为空时当然应该为空字符串,null 又不是字符串类型,类型定义和数据返回的类型应该一致。
数据定义和返回必须一致,这个我支持。你可以看下 我 62 楼的回复,有些情况下 null 还是有必要的。比如一个非必填输入框只支持填写任意的数字,那么这种情况下 我这边通常在定义这个字段的时候就定义为 number | null ,用 null 来表示“没有填”。
@yusheng88 产品和业务决定的应该是 字段是否可以为空,帖子讨论的为空的时候接口是否该返回 null 。很多值为空时候返回其实是可以在接口设计阶段避免的。
个人理解,如字符串 null 和'' 其实是一个含义都表示没填,数组[] 和 null 其实也是一个含义都表示没有。对象则应该在对象内部增加字段判断是否存在,Number 和 Boolean 大多数情况下也不需要返回 null 。
个人观点

String 空值情况:空值一律返回'',理由是一般情况下字符串字段都是用来展示用的,如有逻辑判断<用户是否填了>这个字段,那可以增加一个 boolean 字段表示是否填了, 但这种情况业务上很少,因为作为入参的时候一个输入框没填其实 = 空字符串

Number 空值需要根据业务场景来处理,比如“好友数”等各种计数的空值可以是 0 ,男女等 未选择的话可以用 -1 表示。但如果是一个非必填数字输入框,可以输入任意值的这种,null 值 应该是需要的

Boolean 同 Number ,需要根据业务场景来处理。

Array 空值一律应为 []

Object 不应返回 null ,比如“人”这个对象有个字段叫“父亲信息”,有的人可能没有父亲,这种情况 “父亲信息” 字段不应返回 null ,而是在“父亲信息”这个对象里面的 “是否存在父亲”字段做判断

总结我的观点:除了 Number 和 Boolean 可以返回 null ,字符串、对象、数组都不应返回 null
335 天前
回复了 Zorro825 创建的主题 程序员 PC 桌面软件需要实现的一个功能。
简单的来说 用按键精灵写个脚本就行了
345 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
我理解的 hooks 拆封
export default function (deps) {
const data = ref('')
const data2 = ref('')

const doSomeThing = ()=>{
XXX
}

watch(deps, XXX)

onMounted(()=>{
XXX
})

return {data,data2,doSomeThing}
}
345 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
@chenliangngng #10 你再仔细看看 lz 的代码,并不是只拆分到 reactive ,他左侧整张图都是一个 hooks 只不过底部的 return 没有截上,我认为 lz 的写法是没有问题的,右侧的抽象反而是抽象了个寂寞
345 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
@chill777 明显是你的写法更合理啊,我很好奇右侧那种写法 生命周期一类的咋写的,写在页面逻辑里吗?那还抽象个锤子。另外多个页面 import 的话,hooks 写法每次都是 return 一个新的对象,不会互相影响,右侧那种写法不就变成单例的了么,各个页面互相影响
345 天前
回复了 chill777 创建的主题 Vue.js vue3 hooks 可以转为 esm 写法?
左侧的是标准 hooks 写法,右侧是给拆成了一个一个 export 的 方法?右侧这个写法如果能实现功能的话我理解就是一个 utils 类似的东西,不是 hooks ,右侧这种写法 watch 、onMounted 咋写呢?感觉右侧这样限制很大,不是 hooks 写法了已经。很明显你的抽象方式是正确的
351 天前
回复了 qingshui33 创建的主题 Vue.js vue table 组件求教
@siguapajamas 这个我也不太清楚有没有哈,我也是临时看的源码
351 天前
回复了 qingshui33 创建的主题 Vue.js vue table 组件求教
@qingshui33 #3 看下 element 的源码吧,element 是在 table 层建了一个 store ,然后 el-table-column mounted 的时候 调用了 store 的 insertColumn 保存起来。其实就相当于一个 局部的 store 大家都共享里面的值。

element-plus/packages/components/table/src/store/index.ts #73
element-plus/packages/components/table/src/table-column/index.ts #145
@WangLiCha 你 打印 的时候这个对象里其实还没有 targetNode 字段,这也就是为啥 JSON.stringify 里没有,这个 targetNode 字段是在你 console.log 代码执行之后、点击 devtools 对象的展开之前 才被添加到对象上的。
@liuhuihao

const a = {a:{}}
console.log(a,JSON.stringify(a))
a.targetNode=123

简单的代码可以试一下
console.log 打印的是对象的引用,你后给这个对象加上属性也会出现在 log 里
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5484 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 07:40 · PVG 15:40 · LAX 23:40 · JFK 02:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.