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

196 天前
 FollowHYH

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

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

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

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

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

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

如果 mithril 不夠好看,可以看看 imba.io ,兩者原理相同
secondwtq
196 天前
@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