随着 JSX 大火,是不是意味着前端重新发明了 PHP 语言?

2021-06-18 16:04:02 +08:00
 3dwelcome

React JSX 以代码精炼著称,但 XML 又没有版权,各种框架纷纷效仿。

JSX 是 JS 里嵌套 HTML 标签,和 PHP 的 HTML 标签里嵌套代码,两者有点殊途同归的感觉。

前端发展了那么多年,最终还是没能逃出 PHP 语法的影子嘛。

有人会说 PHP 是后端语言不一样,但其实随着这些年 WASM 普及,前端早就可以嵌入 PHP 了。

3174 次点击
所在节点    前端开发
28 条回复
Rrrrrr
2021-06-18 16:04:54 +08:00
???
murmur
2021-06-18 16:06:27 +08:00
jsx 代码精炼?笑了,跟模板还差一点,完全是开发者偷懒,然后搞出一堆所谓借口,然后被前端一顿吹

vue 支持 jsx,vue 里写的是 class 不是 className,从亘古开始,html 里写的就是 class,什么时候写过 className
murmur
2021-06-18 16:07:58 +08:00
*vue 就算是 jsx 语法写的也是 class
meteor957
2021-06-18 16:08:23 +08:00
@murmur 你这个『亘古』给我看笑了
3dwelcome
2021-06-18 16:10:15 +08:00
@murmur JSX 就是为了脱离模板自定义语法,把组件做成库,任何 JS 环境都能调用。

而 VUE 那种对模板语法有很大修改的入侵式框架,写出来的组件,只能给 VUE 自家来用,移植性不好。
murmur
2021-06-18 16:11:49 +08:00
@3dwelcome jsx 是标准 js 和 html 语法么,不是,需要 loader 么,需要

既然需要 loader,为啥不多做一点

和 html 一样的语法,模板 if 、模板 for,这些东西属于可以不用,但是必须得有
shintendo
2021-06-18 16:17:57 +08:00
缓缓打出一个问号,嵌后端代码和嵌前端代码是一回事吗……
3dwelcome
2021-06-18 16:19:41 +08:00
@murmur 模板 IF/FOR 都是对于 HTML 模板的扩展,又不像 JS 有标准可循,大厂都希望发明自己的语法,毕竟 VUE 距离一统天下,还很遥远。

而且代码写好后,大部分人都懒得修改。很多年后你的 VUE 模板写法也许跟着框架升级变了,可是 JS 是不会变的。
littleylv
2021-06-18 16:20:10 +08:00
是是是,你说的都对
Leviathann
2021-06-18 16:25:28 +08:00
后端语言明显是被 xml 搞恶心了
以至于开发的用来写页面的 dsl 都刻意避开 xml
比如 kotlin 和 rust
sunjourney
2021-06-18 16:25:34 +08:00
@murmur #6 半桶水说话就不要这么自信了好么
ragnaroks
2021-06-18 16:36:09 +08:00
不是 jsx 大火,是模板引擎
shintendo
2021-06-18 16:36:29 +08:00
@3dwelcome 大家都是 render funtion 的语法糖,大家也都不是标准,为啥一个就比另一个移植性高了
3dwelcome
2021-06-18 16:46:56 +08:00
@shintendo 因为 JSX 代码可以写成库,在别的框架里,都可以随便调用。

可是模板里写了 V-IF,就只有 VUE 框架能认识。
ragnaroks
2021-06-18 16:54:59 +08:00
@shintendo 正解

@3dwelcome vue 项目也是可以打包成单个.es 或.js 的,比如 vue-toast,打包后的单个 js 文件的内容其实就是各种 createElement
ragnaroks
2021-06-18 16:56:14 +08:00
sof 上有如何使用 react 和 vue 编写油猴脚本的教程,你自己搜看下就明白了
Jirajine
2021-06-18 16:57:51 +08:00
这个真不一样,最大的区别是动态化。后端语言里套的是模板,数据更新了就得重新请求整个页面。而 jsx 写的是交互式、响应式的完整应用。
Shy07
2021-06-18 17:02:50 +08:00
“ JSX 是 JS 里嵌套 HTML 标签,和 PHP 的 HTML 标签里嵌套代码,两者有点殊途同归的感觉。”


楼主再仔细想想真的是殊途同归,而不是背道而驰?
mxT52CRuqR6o5
2021-06-18 17:03:33 +08:00
一个是拼字符串,一个是语法糖,差多了
DOLLOR
2021-06-18 17:30:13 +08:00
如果你觉得“殊途同归”,那就说明你肯定也不懂 Object 和 JSON 的区别。

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

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

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

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

© 2021 V2EX