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

2024-06-06 00:04:06 +08:00
 FollowHYH

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

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

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

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

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

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

如果 mithril 不夠好看,可以看看 imba.io ,兩者原理相同
secondwtq
2024-06-06 18:00:13 +08:00
@FollowHYH 就是一个 random 的人做的一个 random 的框架啊,这就是人们在网上 randomly 地刷到一个项目时的感受
要想有人用,你得突出核心设计目的和思路,独有的特点,哪怕买一堆 star 呢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1047175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX