参考文档:
WebAssembly
什么是WebAssembly?
WebAssembly并不是一门编程语言,而是一份字节码标准,需要高级编程语言编译出字节码放到WebAssembly虚拟机中才能运行。目前主流浏览器已经支持WebAssembly,浏览器厂商需要做的就是WebAssembly规范实现虚拟机
为什么需要WebAssembly?
目前JavaScript暴露的问题:
- 语法太灵活导致开发大型Web项目困难
- 性能不能满足一些场景的需要
相对于JS,WebAssembly有如下优点:
- 体积小:由于浏览器运行时只加载编译成的字节码,一样的逻辑比用字符描述的JS文件体积要小很多
- 加载快:由于文件体积小,再加上无需解释执行,WebAssembly能更快的加载并实例化,减少运行前的等待时间
- 兼容性问题少:WebAssembly是非常底层的字节码规范,制订好后很少变动,就算以后发生变化,也只需在从高级语言编译成字节码过程中做兼容。可能出现兼容性问题的地方在于JS和WebAssembly桥接的JS接口
目前能编译成WebAssembly字节码的高级语言有:
- AssemblyScript:语法和TypeScript一致, 对前端来说学习成本低,为前端编写WebAssembly最佳选择
- C\C++:官方推荐的方式
- Rust:语法复杂、学习成本高,对前端来说可能会不适应
- Kotlin:语法和Java、JS相似,语言学习成本低
- GoLang:语法简单,学习成本低。但对WebAssembly的支持还处于未正式发布阶段
参考资源
前端框架
NPM各个热门前端库(框架)下载量比较
react库不断改进,依旧称霸前端
新的特性:
-
新的生命周期方法
- 新的上下文API
- 指针时间
- 延迟函数
- React.memo
- ReactHook:Hooks是一种使用
useState
功能向函数组件添加状态的方法,它还将管理生命周期事件 - Suspense API
Vue迅速成长,github stars 数量超过React
Vue 3.0更新计划PPT
Angular 依然活跃,版本7发布
GraphQL 学习意愿高涨,但仍未超过 Rest
js 内嵌 css 使用更加广泛
CSS-in-JS的两个主要库分别是 styled components 和 emotion
- 在使用单个文件组件时,Vue支持有作用域的CSS。通过
scoped
属性添加到组件的样式标记,Vue将使用 CSS-in-JS技术来定义样式,以便他们不会渗透到其他组件中 - Angular 通过 “视图封装” 支持CSS的作用域,这是默认打开的。
疲于使用各种 CLI 工具的情况有所改善
在2018年,CLI已成为开发人员创建应用程序的主要方式。流行的框架包括 Next.js、Create-React-App(客户端React)、Nuxt.js(用户Vue的SSR)、Vue CLI(客户端Vue)、Expo CLI(用于React Native),Angular默认情况下支持。
静态网站生成工具继续发展
静态站点非常适合构建个人网站或博客。目前流行的构建静态网站的框架:
- Gatsby for React应用
- React Static for React应用
- VuePress for Vue 应用
无服务器架构与JAMstack???
TypeScript可能是JavaScript的未来(但对于Flow就不一样了)
JavaScript因为没有静态类型变量而受到批评。试图纠正这一问题的两个主要库是 TypeScript 和 Flow。在 Stack Overflow 调查中,TypeScript的受欢迎程度高于JavaScript本身,分别为67%和61.9%。根据JS的现状调查,超过80%的开发者想要使用 TS 或者已经在使用它。对于Flow,只有34%的开发人员正在使用它或希望使用它。
所有迹象表明,TypeScript是JS中静态类型的首选解决方案,许多人选择它而不是JavaScript。2018年,TS的npm下载量大幅增长,而Flow却非常平稳。TypeScript看起来正在从一个狂热的追随者转变为广泛的应用。
webpack 4 发布
Webpack 3发布仅8个月后,版本4就发布了。Webpack 4继续推动简单和更快的构建,声称改进了98%。它选择了合理的默认值,在没有插件的情况下处理更多的开箱即用的功能,并且不再需要开始使用配置文件。Webpack现在也支持WebAssembly,并允许直接导入WebAssembly文件。
Babel 7 发布
自第6版开始将近3年后,Babel 7 于2018年发布。Babel 是将 ES6 + 代码转换为 ES5 的库,使JavaScript代码跨浏览器兼容。
VS Code Dominates the Text Editor/IDE Usage
2019年的预测
- 随着基础的建立和对改进 web 体验的不断推动,WebAssembly将开始普及
- React依然高居榜首,但 Vue 和 Angular 的用户数量仍会增长
- CSS-in-JS可能会成为默认的样式化方法,而不是普通的CSS样式
- 开发人员是否可以重新审视原生Web组件?
- 毫无疑问,性能仍然是关注的焦点,诸如PWAs和代码分离之类的成为每个应用程序的标准
- 在使用 PWA 的基础上,web 变得更加本地化,具有离线功能和无缝的桌面/移动体验
- CLI工具继续的改进,以抽象出构建应用程序的繁琐方面,让开发人员专注于业务开发。
- 更多的公司采用具有统一代码库的移动解决方案,如React Native或Flutter
- docker、k8s等工具会更加流行
- GraphQL使用方面会有了飞的增长,并被更多的公司使用
- 虚拟现实技术利用A-Frame、React VR和谷歌VR等库取得了长足的进步