V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
FollowHYH
V2EX  ›  JavaScript

类似 Mithril 这样函数式风格的前端框架为什么一直不温不火?

  •  
  •   FollowHYH · 2024-06-06 00:04:06 +08:00 via Android · 2119 次点击
    这是一个创建于 456 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前在Component Party上看到了 Mithril 这个框架,受它启发还自己做了一个半成品仓库),后来发现风格类似的还不少,比如 Hyperapp 。为什么这种框架一直不温不火呢?

    注:本人承认自己才疏学浅,对其它框架及其用户没有恶意 本人作为一名初出茅庐的新手,确实喜欢这种风格,并对 JSX 心存疑虑,对 Svelte 的诸多“魔法”有所敬畏,但持完全开放的态度。如果可以的话,还请各位指出一下我的那个所谓半成品框架存在何种问题,能做何种改进,或者是否有存在的必要。

    无由会晤,不任区区向往之至。

    12 条回复    2024-06-06 18:00:13 +08:00
    secondwtq
        1
    secondwtq  
       2024-06-06 00:29:26 +08:00
    一个 random 的框架,没人用才正常,能做到“不温不火”和很火的都是 outlier 。
    你首先得给我一个用它的理由,相比于 React ,它有哪些优势呢?
    Leviathann
        2
    Leviathann  
       2024-06-06 00:44:52 +08:00
    函数式框架
    那不就是 elm ?这甚至是一门语言
    FollowHYH
        3
    FollowHYH  
    OP
       2024-06-06 07:10:09 +08:00
    @secondwtq 不知道什么是"random",可以解释一下吗?谢了
    RedNax
        4
    RedNax  
       2024-06-06 08:41:37 +08:00
    对于新框架第一个疑问就是生态。
    没有 React 、Vue 、Angular 的生态,谁敢在生产环境中用这些新框架?
    然后就是先有鸡还是先有蛋的问题了。
    React 、Vue 、Angular 的成功要么是那个时间点没有更好的选择,要么是背后有超大金主在强推,现在站稳了,其他框架要崛起哪有那么容易。
    wujianhua22
        5
    wujianhua22  
       2024-06-06 08:52:58 +08:00
    因为搞前端的人总想造轮子,无非就是想证明自己技术了得,但又没办法解决啥行业痛点。如果造的轮子能和 angularjs 这种打破 jq 时代的神话一样,那么你的轮子就会火起来啊。如果只是在这些巨人的肩上造了一些你自己所谓的语法糖轮子,我不认为会火。
    zhuangzhuang1988
        6
    zhuangzhuang1988  
       2024-06-06 08:58:24 +08:00
    调试(inspect)功能呢,
    没有调试功能的框架我都当黑盒子,总不能一直 log 调试法
    nziu
        7
    nziu  
       2024-06-06 09:54:39 +08:00
    看了下代码示例,这跟 React 不使用 JSX 有什么区别吗?(不是很懂前端,没有阴阳怪气)
    kneo
        8
    kneo  
       2024-06-06 09:56:30 +08:00
    说下你口中的“函数式”是什么意思。不会就是去掉 jsx 吧……你用 React 也可以用 React.createElement:

    import { createElement } from 'react';

    function Greeting({ name }) {
    return createElement(
    'h1',
    { className: 'greeting' },
    'Hello'
    );
    }

    我不想使用工具链的时候就是这么写的。

    Vue 也一样:

    import { h } from 'vue'

    const vnode = h(
    'div', // type
    { id: 'foo', class: 'bar' }, // props
    [
    /* children */
    ]
    )

    需要动态创建组件的时候经常会这么写。

    这些都是框架最表面的一层,甚至都算不上框架的一部分(更像是工具链的一部分)。你使用了 React.createElement 或者 h 其实并不能增加多少你对底层机制的理解。我也不觉得对生产力提升有帮助,反而会极大影响可读性。写多了你就腻了。

    唯一的优势,就是当你自己想山寨一个“半成品”的时候,可以省一步转译。
    XCFOX
        9
    XCFOX  
       2024-06-06 13:17:41 +08:00
    真喜欢函数直接用 React 就可以了。React 在 16.8 引入 hook 之后已经是函数式完全体了。

    React 连组件都是拿函数声明的,state 、reducer 、hook 无不体现函数式的思维。粗看下来 Mithril 的组件还是拿对象来声明,没有贯彻太多函数式的思维。

    Mithril 自娱自乐也凑活,真拿来写项目还缺少 路由、状态管理、组件库、SSR 这些必要功能。
    hwf
        10
    hwf  
       2024-06-06 14:14:43 +08:00
    点进去看了眼, 这要是能火才奇怪, 相比 react 没什么优势, 不想写 jsx 可以直接用 createElement, 语法还比这个简单
    mizuhashi
        11
    mizuhashi  
       2024-06-06 14:36:51 +08:00 via iPhone
    mithril 的響應式和其他的原理不同,每次事件會觸發全局的重渲染,因此你的狀態可以只是 vanilla js 的值/對象,不需要像 vue 那樣區分普通值和 ref ,也不需要像 react 那樣用 hooks set ,這是它的特色

    如果 mithril 不夠好看,可以看看 imba.io ,兩者原理相同
    secondwtq
        12
    secondwtq  
       2024-06-06 18:00:13 +08:00
    @FollowHYH 就是一个 random 的人做的一个 random 的框架啊,这就是人们在网上 randomly 地刷到一个项目时的感受
    要想有人用,你得突出核心设计目的和思路,独有的特点,哪怕买一堆 star 呢。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4731 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:52 · PVG 17:52 · LAX 02:52 · JFK 05:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.