状态=变量、逻辑=函数,前端能不能说人话啊!!!

59 阅读3分钟

前端是不是概念起的太高大上,让人读不懂!我真是服了,不能简单一点吗?

1. 状态 = 变量

// 前端黑话:状态管理
// 人话:变量管理

let count = 0; // 这就是个变量,非要叫"状态"
count = 1;     // 这就是修改变量,非要叫"状态更新"

2. 逻辑 = 函数

// 前端黑话:业务逻辑复用
// 人话:把函数抽出来重复用

function login(user) { /* 登录逻辑 */ } // 就是个函数,非要叫"业务逻辑"

3. Composables = 返回变量的函数

// 前端黑话:Composables
// 人话:返回变量和函数的函数

// 高大上说法:创建响应式状态管理的组合式函数
function useCounter() {
    const count = ref(0); // 变量
    const increment = () => count.value++; // 函数
    
    return { count, increment }; // 返回变量和函数
}

// 人话:一个返回变量和函数的函数
function createCounter() {
    let count = 0; // 变量
    const add = () => count++; // 函数
    
    return { count, add }; // 返回变量和函数
}

前端术语 vs 人话对照表

前端黑话人话实际意思
​状态(State)​变量let count = 0
​状态管理​变量管理修改变量,通知别人变量变了
​响应式​自动更新变量变了,页面自动跟着变
​逻辑复用​函数复用把代码写成函数,到处调用
​Composables​返回变量的函数function xxx() { return {变量, 函数} }
​副作用​函数干了啥函数除了返回值还做了其他事
​不可变性​别直接修改变量创建新变量,别改旧的

实际代码翻译

前端黑话版:

// 创建用户认证的组合式函数,实现状态管理和副作用处理
export function useAuth() {
    // 响应式状态
    const user = ref(null);
    const isLoading = ref(false);
    
    // 业务逻辑:处理用户登录的副作用
    const login = async (credentials) => {
        isLoading.value = true;
        try {
            user.value = await api.login(credentials);
        } finally {
            isLoading.value = false;
        }
    };
    
    // 暴露状态和接口
    return { 
        user: readonly(user), 
        isLoading: readonly(isLoading), 
        login 
    };
}

人话版:

// 写个函数,返回用户相关的变量和函数
export function createAuth() {
    // 变量
    let user = null;
    let loading = false;
    
    // 函数:登录
    const login = async (username, password) => {
        loading = true;
        try {
            user = await fetch('/login', { username, password });
        } finally {
            loading = false;
        }
    };
    
    // 返回变量和函数
    return { user, loading, login };
}

为什么前端要搞这么多术语?

1. ​​简历包装​​ 📄

// 实际:我会用变量和函数
// 简历:精通状态管理、响应式编程、函数式编程

2. ​​社区跟风​​ 🐑

// 以前:jQuery插件
$.fn.carousel = function() { /* ... */ };

// 现在:Composable、Hook、高阶组件、渲染函数...
// 本质上都是:函数返回变量和函数

用最直白的方式理解现代前端

React Hooks = 在函数里用变量

// 黑话:使用useState Hook管理组件状态
const [count, setCount] = useState(0);

// 人话:在函数里用变量
let count = 0;
const setCount = (newCount) => { count = newCount };

Vue Composables = 返回变量和函数的函数

// 黑话:组合式API实现逻辑关注点分离
const { count, increment } = useCounter();

// 人话:调用函数获取变量和函数
const counter = createCounter();
counter.count; // 变量
counter.increment(); // 函数

状态管理 = 全局变量 + 事件通知

// 黑话:Redux实现可预测的状态容器
store.dispatch({ type: 'INCREMENT' });

// 人话:修改全局变量,通知所有人变量变了
window.count = 1;
window.dispatchEvent(new Event('countChanged'));

复盘

我真是服了前端这些高大上的概念,本来挺简单的,结果被这么一包装,我得绕半天脑子才能反应过来,能不能简单点啊,有时候我都要怀疑人生了!