前言
最近接触到了不少前端的技术,作为一个老的C++程序员,了解到竟然可以把C++代码直接编译成JS在前端运行感觉到不可思议,于是就跳入了这个大坑。
从我这个老的C++程序员的理解顺序来说,我是从如下几个方面去了解整个webassembly技术的。
-
JS的一些性能问题已经解决过程。明白为啥要把C++的代码放在前端运行。
-
编译过程,只有了解了这个过程才知啥C++往JS转有哪些问题,是为了解决啥问题
-
LLVM架构。解决如何从一门语言向另外语言转换的问题,提出了一个基础架构。
-
基于LLVM的编译工具与构建系统。比如Emscripten,ninja,cmake等工具在这个过程中的作用。
-
浏览器,服务器对webassembly的支持。大名鼎鼎的chrome V8引擎;基于V8引擎的JS服务器nodeJS等。
通过这样一个过程了解到asm.js,LLVM,nodeJS,V8,Emscripten等概念,把这些概念串到一起来理解,更有助于理解每个工具使用,这篇文章里不涉及到任何一个工具的详细使用。
JS的一些硬伤与尝试
这个标题起的