跳到主要内容

前端守则

· 阅读需 3 分钟
1adybug
子虚伊人

技术栈

类型要求
编辑器Visual Studio Code
浏览器Chrome
语言TypeScript
UI 库React
组件库Ant Design / Deepsea Components
脚手架Rsbuild / Next
路由React Router
包管理器Yarn
时间处理Day.js
CSSTailwind / Emotion
hooksahooks
状态共享ahooks / Soda Hooks / React Soda
网络请求fetch
数据验证Zod
数据库管理Prisma
移动端Capacitor
移动端组件库Ionic
代码格式化Prettier

要求

  1. 所有 React 组件必须使用以下形式书写:

    const Component: FC = () => <div></div>

    export default Component

    // 有参数组件
    import { FC } from "react"

    export type ComponentProps = {}

    const Component: FC<ComponentProps> = props => {
    const {} = props

    return <div></div>
    }

    export default Component
  2. 全局共享状态优先使用 ahooks 实现,其次 React Soda

    import { useRequest } from "ahooks"

    export function useCount() {
    return useRequest(() => Promise.resolve(Math.random()), {
    cacheKey: "abc",
    })
    }
    注意

    ahooksStrictMode 下有 Bug,需要关闭严格模式

    import createStore from "react-soda"

    export const useCount = createStore(0)
  3. CSS 样式优先使用 Tailwind 实现,其次 Emotion 或者行内样式实现。

    注意
    • Tailwind 不支持动态属性,如 `bg-${color}`
    • 尽量不要在 Emotion 中书写动态样式,Emotion 生成的样式不会被自动清除。如果有动态需求,可以使用 CSS 变量 var(--name) 搭配行内样式实现
  4. 对于 Ant Design 的样式修改尽量通过修改主题来实现

  5. 对于表单查询的参数使用 Soda Hooks 中的 useQueryState 来存储和控制

    import { useQueryState } from "soda-hooks"

    const [query, setQuery] = useQueryState({
    keys: ["name", "unit"],
    parse: {
    age: value => (value ? Number(value) : undefined),
    },
    })
  6. 在项目根目录配置 Prettier

    // prettier.config.cjs
    module.exports = {
    // tailwind 格式化插件
    plugins: ["prettier-plugin-tailwindcss"],
    semi: false,
    tabWidth: 4,
    arrowParens: "avoid",
    printWidth: 800,
    trailingComma: "none",
    }
  7. 命令规范