@
neoblackcap 主要谈的是 php ,但由于 python 和 javascript 都是脚本语言,附带提到。至于你说的 V8 ,VM 。本质上还是脚本运行环境,但我主要想表达,把 javascript 工程化,本地打包编译,是一个错误的发展方向。更夸张的是微软提出的 typescript 了。也就是不论基于浏览器引擎的浏览器 js 还是基于 v8 的 nodejs ,本质都是脚本语言,脚本语言最大的特性就是不是二进制,是字符串。我们开发的代码不是编译执行的字节码,而是解析引擎需要读取的 API 而已。你可以理解为跟 sql 字符串一样。。但数据库或者 php 解析引擎或者 python 解析引擎,或者浏览器的 js 解析引擎等等,都是得到我们的脚本代码,去激活内置的 C 语言逻辑,与 cpu 内存交互的底层还是 C 语言。
如果理解上面的说法,则任何基于脚本语言开发的所谓打包过程,工程化过程最终都会还原为脚本代码而已,没有提高任何性能。至于其他回复说到的可以规范 debug 可以规范开发等等。。这都是强类型语言编译打开的思想。
脚本语言最大的特性就是简化了开发,随时修改随时迭代。并且 php-fpm 还是个异类,可以说 nginx 与之交互的 php-fpm 多个线程之间毫无关系。这种特性可以保证你修改代码前一秒其他线程都能能完成用户响应,后续新的请求响应的就是你修改后的代码。
但强类型语言做不到。甚至 php+html 坚持的混编也是 20 年前 asp,cgi 等脚本语言发明的。
前端 vue ,react 等等框架提出的虚拟 dom ,diff 算法,最终到了今年 2023 年了。作者 vue 作者都在思考虚拟 dom 到底有没有必要存在。也就是以虚拟 dom 建立,却最终发现真实的 dom 才是根本。因为不管第三方折腾多少年。js 官方团队一直有自己的更新节奏。juqery 也一直在更新。。如果 vue 自己推到虚拟 dom ,最终不就跟后端 php 或者 asp 把 html 理解为普通字符串,然后混编 php 代码替换修改节点内容了吗?兜兜转转不就又回去了吗?
javascript 官方团队本身就在以浏览器解析基准的情况下提出模块组件式开发。一直在更新。
那微软的 typescript 到底在做什么?不就是让强类型语言的 java 程序员等等适应开发前端代码吗?不论解释如何优化,工程化,避免错误,debug ,最终还是编译成原生 javascript 不是吗?
那没有 typescript 之前,或者说 javascript 官方团队的开发方式就是垃圾?
明显就是弱类型语言的脚本语言开发方式不符合强类型语言的开发方式才搞出来的 ts 嘛。。。。所以我上面聊天时就说了态度,微软你这么出名,没必要改变 js 的编程习惯,你可以自己弄一个出来专门针对强类型语言的程序员的前端开发方式啊。并且打包编译二进制效率更高。要求每个用户安装一下就好了嘛。。。
但普通用户都是浏览器呀,javascript 就内置在浏览器内的呀。。。你搞这么多还不是要还原 javascript 嘛。。。你改不了啊。微软你自己不是有 IE 吗?现在没市场了,就来破坏前端开发流程参一脚了么?