基于JavaScript多线程的桌面系统

描述

  • Web Worker可能在大多数前端场景都派不上用场,但像在桌面系统这样的场景中,用它是再合适不过的了,该桌面系统的每一个应用均加载一个应用数据的index.js文件作为新线程运行。
  • Web Worker虽然实现JS的多线程,但无法实现真正意义上的内存数据共享,它基于自带的sandbox,在这个沙箱中跑一个独立的js,所以它是线程安全的。它通过postMessage和onMessage来和主线程通信。
  • Web Worker虽然无法共享内存数据,但这正是函数式编程的特性之一:引用透明,因此还是可以欢快地使用它,从而避免一些问题的发生。
  • Web Worker还有一个要点,它是有两种类型:专用线程(dedicated web worker)和共享线程(shared web worker),差别仅仅是能否被多个页面访问而已,当所有关联的页面都关闭时,Web Worker就运行结束了。绝大多数情况下使用专用线程就可以了。

截图

基于JavaScript多线程的桌面系统
基于JavaScript多线程的桌面系统
基于JavaScript多线程的桌面系统

作品地址

基于JavaScript多线程的桌面系统

后续动作

  • 完善已有的功能,让其更加贴近大家所使用的桌面操作系统
  • 增加一些应用,如系统字体、壁纸更换、应用市场、邮箱收发邮件、仿QQ聊天应用等等
  • 可以往办公方向发展,或者有条件可以发展成单独的操作系统
坚持原创技术分享,您的支持将鼓励我继续创作!