# TS_写作专栏 **Repository Path**: HEXOS/ts-writing-columns ## Basic Information - **Project Name**: TS_写作专栏 - **Description**: 运用Typescript结合vue3来构成写作专栏 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2020-12-06 - **Last Updated**: 2023-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 介绍 1. 采用组件化开发,实现多个非直接耦合,功能内聚的组件,提高项目可维护性,可迭代性。 2. 模仿类似文章专栏的功能需求,学习,前端常用组件的思路,了解 vue3 结合 ts 开发的经验。 ### 组件思路 #### teleport 1. 为什么用 teleport 为了避免其它组件样式干扰,将组件渲染至根节点的另一个节点上,实现样式的隔离 #### validateform 组件 **亮点**:实现了父组件的自定义: **v-model** 1. 那为什么要用这个 v-model 就是为了之后验证表单的组件,能够拿到这里面的 input 组件的值。进行验证等操作。 2. 首先去给子组件添加这个,modelValue 的的 props 属性,子组件的 input 绑定这个 modevalue 这个值;本质上这个打破了之前的 vue 组件单向数据流。 3. 子组件更新内容的时候,在子组件去向外发送一个叫 update:modelValue 的事件,并将更新的内容,通过 context.emit 来发送这个事件。 4. 此时父组件来用 v-model,实现了父子组件的数据双向绑定。 实现思路:就是运用这个 **Mitt 库,**为什么要用这个 mitt 库就是因为这里是,validatefrom 的**父子组件**,里的**子组件是以插槽**的形式,拿不到子组件的值,所以借助 mitt 库。 我想让 validateform 这个子组件去循环验证规则,如果都通过了,才可以,所以是子组件向外发送事件,然后由父组件去执行,然后再去利用之前通过 v-model 所绑定获取的值,就可以去验证这些结果了。 其实这个逻辑就是,validateform 里面有多个 input 组件,我需要去,循环验证每个 input 组件里的,验证函数的结果,通过父组件的验证函数,只有都通过了,才可以,去通过。 #### loading 组件 1. 这个组件设计首先得考虑遮罩层 :运用 fix 定位,然后就是,四个方向都为 0,然后,在利用 z-index,由于 fix 和 absolute 都是脱离了,文档流并触发了 BFC,所以需要设置 z-index,防止它被其它元素所覆盖,之后就是属性考虑有提示词,还要有背景颜色等,同时在 setup 生命周期里去,创建节点,挂载到根页面里,这里的话,需要去配合拦截器,,没有它,就没有办法控制整个组件的显示和隐藏了,所以发出异步请求之前,显示组件,发出请求后,再去触发 commit,使组件消失。 #### 弹出窗组件 1. 这个也是属于这个**全局的组件** 2. 首先要明确为什么,就是因为要对删除操作做出确认 3. 分析 属性,显示隐藏,确认删除,取消删除事件, 4. 由于子组件无法触发事件,单向数据流,就是子组件来定义发送事件,父组件来监听这个事件,并做具体事件的函数,子组件只是来定义这个事件,并去发送事件的。 5. 对于 ref 对象的理解就是说这个,父组件为了能够给子组件传递属性的值,一般选取这个响应式的值。 6. 梳理一下删除的逻辑,首先当我点击这个删除按钮会触发一个事件就是,首先要让显示值为 false,并且会去触发这个 action 删除文章的一个逻辑。 7. **bug** 就是首先触发这个 action 的名字你得写对,还有这个就是,做组件不要急,你都没给 Button 添加事件你是怎么来,让这个 alert 框展示的,对吧,还有你