专栏名称: 前端外刊评论
最新、最前沿的前端资讯,最有深入、最干前端相关的技术译文。
目录
相关文章推荐
前端早读课  ·  【第3453期】圈复杂度在转转前端质量体系中的应用 ·  16 小时前  
奇舞精选  ·  从 DeepSeek 看25年前端的一个小趋势 ·  昨天  
奇舞精选  ·  从 DeepSeek 看25年前端的一个小趋势 ·  昨天  
前端早读课  ·  【第3451期】前端 TypeError ... ·  2 天前  
51好读  ›  专栏  ›  前端外刊评论

Sigi Framework 介绍

前端外刊评论  · 公众号  · 前端  · 2020-02-17 09:00

正文

前言

这篇文章只会介绍 Sigi framework 的设计理念以及试图解决哪些问题,不会对各个 API 有详细的描述,如果你想开始学习并使用 Sigi framework 请到概念sigi.how原文发布于:Sigi framework introductionlynvv.xyz

从 Redux 而来

在 Redux 时代,有无数人努力着让业务中的样板代码(boilerplate code) 稍微少一点。最早的时候,我们通过 redux-actions``redux-toolkit 等工具库减少样板代码,在不考虑 TypeScript 的情况下这些工具有非常好的抽象效果,在这两个库的文档中可以看到在 JavaScript 项目中使用它们之后带来的显著效果。但随着 TypeScript 的到来,有很多种方式的努力都付诸东流,因为大家发现除了与 Redux 相关的 Action/Reducer/Middleware 三件套的样板代码需要去除,连接这三个部分的类型代码也同样多如牛毛。

业务逻辑割裂

业务逻辑割裂分为两个方面,一个是 code path 断裂,一个是 类型推导割裂。

Redux 分离 Action , Reducer Side effect 的设计能让我们在写业务的时候更容易写出干净无副作用的组件,并且能让我们更好分离各部分业务的职责。而这种设计如果不加以封装则会让代码的 Code path 过于冗长,不利于连贯的进行代码阅读与业务逻辑理解,提高代码的维护成本。而早期社区推崇的Rails 风格的抽象方式(将 action/reducer/side effect 的代码分文件夹放在一起) 更是极大的放大了这一问题。

随着社区实践的完善,大家发现遵循 Domain style/Ducts 来组织业务逻辑相对于 Rails 风格 更适合大型 Redux 应用,但它还是没有彻底解决业务逻辑 Code path 过长、逻辑割裂的问题。我们以一个典型的基于 redux-actions Ducts 风格组织的 Redux 应用为例:

// count.module.ts

const ADD_COUNT = createAction<number>('ADD_COUNT')
export interface CountDispatchProps {
addOne: typeof ADD_COUNT
}
export interface CountStateProps {
count: number
}

// reducer
export const reducer = handleActions({
[`${ADD_COUNT}`]: (state: CountStateProps, { payload }: Action<number>) => {
return { ...state, count: state.count + payload }
}
}, { count: 0 })
// own props which passed by parent components
interface ÇountOwnProps {
countToAdd: number
}

type CountProps = CountStateProps & CountDispatchProps & CountOwnProps

class CountComponent extends React.PureComponent {

private onClickAddCount = () => {
this.props.addCount(this.props.countToAdd)
}

render() {
return (

button>






请到「今天看啥」查看全文