封面图
今天听到了一件非常值得思考的事情:后端把前端给骂了,你他喵的下班太早了。
午休的时候差不多一点半左右,楼道里突然两个人吵了起来,一个后端在骂一个前端,声音还特别大:你那边的活儿是不多吗,我们每天都加班,你为什么到六点半就走了?以后得端正态度!咱们现在在联调阶段~巴拉巴拉一大堆,说的声音又大又难听~
这是发生在我身边的一件事,就在昨天。我也真是服了,六点下班,人家等到六点半才走,这就是态度不端正?这世界上的事儿真奇怪。
假如前端的工作做完了,界面开发完了,业务逻辑写完了,联调阶段下班还不能回家了?这是什么逻辑?
以前一直以为这种狗血剧情不过是大家平时没事儿开个玩笑罢了,看来还是我太天真了,毕竟艺术本身就来源于生活
。
对加班的看法
加班这个事儿怎么说呢?不少公司都有加班文化,但是留下来的人真的是在加班吗?这倒未必,假如六点下班,出去吃个饭,摸个鱼,这不得花个一两个小时,真正加班的时间屈指可数吧,可能我说的过于直白了,但是呢,事情原本就是这个道理。
一个人总是加班,假设他不用每天参加一些乱七八糟的会议,从一定程度上说明了这个人的工作效率不高,或者虽然工作效率高,但是处理问题并不细致,需要额外的时间去处理因为考虑不周而出现的一些问题。
所以,要想不加班,就需要我们提高我们的工作效率。做好工作计划,尽量做到今日事今日毕。
关于吵架
吵架其实是一个人能力不足的体现。事情超出自己的可控范围,不能够冷静的分析问题出现的原因,不能用合理的方式处理与同事之间的关系,靠大声叫嚷去指责别人下班早,恰恰是这个人能力不足的一种体现。
联调阶段其实很简单,假设前端界面开发无误,业务逻辑无误,同时如果后端能保证数据正常,后端业务逻辑正常,并且前后端在开发阶段沟通过相关的需求,以及接口间的规范、字段等信息,基本上不会有什么太大的问题。
所以出现这种吵架
的现象,其实暴露了两个问题:一是这个人的能力不足;二是公司内部项目开发流程中人员沟通不足。
所以,有些人觉的,哎呀我天天加班,你他吗每天走那么早,靠!
不完善公司内部流程,不加强团队内部沟通协调,各种问题迟早都会出现,到时候我们就会像是一个救火队长
一样,不断的去扑灭来自各个方面的火灾
,看起来忙的焦头烂额,实际上没什么太大的意义。
vue2中的slot
这两天在开发一个组件的过程中遇到了一个跟slot
相关的问题。
- 先用
element-ui
封装了一个Table
组件,用的是jsx
语法,内部用$scopedSlots
做了slot
的处理,以便于能够自定义表格的每一个数据列。 - 又基于这个封装的
Table
组件封装了一个basicpage
组件,同样需要在basicpage
组件中能够自定义数据列。
这是个基本需求。
按照以往的经验,我们只需要在写basicpage
组件的时候,把slot
插槽做一个动态化的处理就行了,如:
// 动态插槽
<template #[item]="data" v-for="item in Object.keys($slots)" :key="item">
<slot :name="item" v-bind="data || {}" />
</template>
便利$slots
中所有的插槽,动态的生成指定名称的插槽,v-bind="data || {}"
用来绑定插槽上的数据,以便在父组件中可以直接获取到相应的数据。
但是在实际的应用中,虽然父组件basicpage
中,单独写slot="xxx"
,插槽可以生效,但是一旦写成#action={row}
时,插槽就不起作用。
初步推测原因在于封装Table
组件用的jsx
语法中$scopedSlots
调用时没有拿到相关的数据,
因为Table
组件封装的代码并不是我写的,后来发现,Table
组件中的slot
是基于column
中的prop
字段实现的,所以Table
组件中的插槽名称必须跟column
中的prop
字段保持一致。
另外,如果我们直接使用上面所描述的动态插槽,由于作用域的不同,插槽并不会向下传递到封装的Table
组件中,所以会导致插槽不展示,或者尽管能够展示,但是父组件basicpage
中无法获取到对应数据行的数据,从而无法达到自定义的效果。
处理方案是,在Table
组件中遍历columns
根据columns的prop属性动态的生成插槽,这样就能保证$scopedSlots
中必然能够获取到相应的渲染函数。
但是在vue2使用jsx
其实无形中增加了开发成本,原本很简单的问题有点复杂化了。