1. JS 运行机制(前后端)
1.1 单线程
文章的开始,聊下 JS 的历史,下图 1.1.1 的大神叫 Brendan Eich(布兰登 · 艾奇),是 JS 的创作者。
在这里插入图片描述图 1.1.1
很难想象,这门“10 天发明出来的编程语言”,在很多年后却成为 Web 开发的必备技术。
JS 的设计,最初是为了解决表单验证的问题,表单验证避免不了 DOM 的操作,然而,多线程的 DOM 操作,将带来无法估量的复杂度。再者,作者只有少量的时间,设计这个语言的工作纯粹是为了完成任务。
最终,各种原因,JS 以单线程面世,直到现在,即使前端 JS 支持了 Web Worker 多线程,在 worker 线程中还是不能操作 DOM;在后端,Node.js 直到 v10.5.0 才支持了多线程。很多人对 JS 的质疑也在于此,为什么 JS 的单线程,却能带来不错的性能?读完这篇文章你会知道答案。
在前端,Web 端的所有应用,几乎都用 JS,特别是现在的 MVVM 框架盛行,最大程度上促进了前端工程化,前端的项目结构可以一定程度上媲美后端,比如拥有完整的 MVC 结构等。
在后端,Node.js 的兴起带开启 JS 开发后端程序的新姿势,BAT 的后端应用不缺乏 Node.js 的身影,各种框架层出不穷。
接下来,我们逐步来回答 JS 的单线程性能问题,首先从它特殊的运行机制讲起。
来看一张图,如下图 1.1.2 所示。
在这里插入图片描述图 1.1.2
如上图所示,JS 的运行模型分三部分。
网友评论