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 · 12 天前 via Android · 940 次点击

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

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

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

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

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

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

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