js环境和vb环境
打开VS Code写几行console.log('hi'),浏览器刷新一下就能看到输出。环境和vb环换到Visual Basic 6.0里,环境和vb环你得先拖一个按钮,环境和vb环双击它,环境和vb环在Private Sub Command1_Click()和End Sub之间敲Print "hi",环境和vb环然后按F5。环境和vb环两种“环境”给人的环境和vb环手感完全不一样——一个像在记事本里写诗,一个像在车间里拧螺丝。环境和vb环
JS环境本质上是环境和vb环事件驱动的沙盒。Node.js出现之前,环境和vb环它被锁在浏览器里,环境和vb环能碰的环境和vb环东西只有DOM、BOM和那点可怜的环境和vb环API。现在你用Node跑后端,环境和vb环用Electron写桌面,甚至用React Native搞移动端,但底层逻辑没变:单线程、非阻塞I/O、回调地狱或者后来的Promise/async。我前阵子帮朋友调一个爬虫,他用了puppeteer,代码里到处都是await page.click(),一层套一层。我问他为什么不试试VB的WebBrowser控件,他愣了半天说“那玩意儿能跑异步吗?”——不能,但VB6里可以用DoEvents硬扛,效果嘛,窗口该卡还是卡。
VB环境是另一套哲学。微软把COM(组件对象模型)焊死在里面,你拖一个控件,背后就注册了一堆GUID和类型库。写Set obj = CreateObject("Scripting.FileSystemObject"),系统立刻给你返回一个接口指针。这种“所见即所得”的代价是:你很难脱离Windows。我见过一个工厂里的老系统,用VB6写的人机界面,跑在Windows XP Embedded上,操作员点按钮控制传送带。那台机器到现在没重装过系统,因为重装意味着重新注册所有OCX控件,而有些控件的安装包早丢了。
JS的生态是另一回事。npm上两百多万个包,你装一个lodash,它依赖几十个别的包,删掉一个node_modules再重装,有时候版本号就飘了。VB那边,你引用一个mscomctl.ocx,它就在System32里躺着,版本号写死在注册表里。前者灵活但脆弱,后者死板但稳定。我自己的习惯是:写小工具用JS,因为跨平台;写那种“十年后还要跑”的工控界面,还是VB6或者它的后代VBA踏实。
调试体验也差得远。Chrome DevTools里设断点,鼠标悬停看变量,改一行代码热重载,几乎无感。VB6的IDE里,你按F8单步,鼠标移上去也能看值,但改完代码必须重新编译,而且编译经常卡在“正在注册控件”那一步。更别说VB6的IDE在Win10上偶尔会崩,得用兼容模式跑。有次我改一个老VB项目,为了加个日志功能,折腾了一下午——因为FileSystemObject的引用路径在64位系统上找不到,最后换成Open "log.txt" For Append As #1才搞定。
window.showModalDialog这种被淘汰的API,但VB6程序员对MsgBox和InputBox的参数顺序倒背如流。环境塑造肌肉记忆。 最后说部署。JS项目扔到服务器上,npm install && node app.js,或者打包成Docker镜像。VB程序编译出来是一个.exe,但往往需要一堆.dll和.ocx,还得用regsvr32注册。我见过最离谱的VB部署包,里面塞了17个依赖文件,安装脚本写了200行。所以现在新项目基本没人碰VB了,除了维护老代码。但你要是去问那些维护老代码的人,他们会告诉你:VB的On Error Resume Next虽然被骂,但真的能救命——JS里你得写try...catch,还得担心Promise的reject没被捕获。
两种环境,两种活法。JS像乐高,零件多,拼什么都行,但容易散;VB像铸铁件,笨重,可一旦成型,砸都砸不烂。选哪个,看你手里是螺丝刀还是键盘。
```(责任编辑:探索)
