感觉今年时间过得可真快呀,19 年就要进入尾声了,回顾下今年前端和自己的发展吧
时而清晰、时而迷茫
标题就是对我过去一年的总结了,加入新公司,大框架方面,抛弃了 Vue,转而使用 Angular,目前正在将项目迁移至 React 的过程中。结果就是任何一个框架都不会了。所以我迷茫了。
但也是有成长的,对 Three.js 3D 渲染方面有了一定的经验,也算是会用了。但也只是会用而已。
还有就是心态变好了,面对复杂和混乱的代码,没那么容易奔溃了,承受能力变强了。
更加爱思考了,思考项目结构该如何更好分层,面对复杂需求该如何拆解,学习如何使用 OOP 及相关优秀设计模式、设计原则来避免写出超级大的类或组件。所以有时候也觉得比较清晰。这方面的积累一定是值得的。
……
前端
框架方面没有太大的变化:React/Vue/Angular
WebAssembly 成为了继 HTML、CSS 和 JavaScript 之后的第四大Web语言
TypeScript 的使用激增:许多开发人员为之倾倒
React 继续保持领先,开发人员为钩子倾倒
React 在 v16.8 添加了大量钩子之后,将工作重点转移到通过提供更多工具来改善开发人员的工作。React 团队发布了哪些功能和计划:
- 全新版本的 React DevTools
- 全新的 React 性能分析工具
- 创建了 React App v3
- 测试工具的更新
- Suspense
- 并发模式(即将推出)
- Facebook 使用的 CSS-in-JS(即将推出)
- 渐进/选择性页面 hydration(即将进行)
- React 核心层面支持可访问性(即将发布)
可访问性和国际化变得越来越重要
Flutter 突飞猛进地发展,作为构建跨平台移动应用的另一个绝佳选择向 React Native 发起了挑战
随着版本 3 的发布 Svelte 获得了关注,但在采用方面依然落后
前端的工具越来越优秀
- Create React App、Vue CLI、Angular CLI
- 用于静态网站的 Gatsby
- 用于 React Native 移动应用的 Expo
- 用于 SSR 应用程序的 Next/Nuxt
- 免却为 GraphQL 编写服务器的 Hasura
- 使用 GraphQL 代码生成器自动生成 TypeScript 类型
- Webpack 不断得到简化
GraphQL 深受开发人员的喜爱,并在科技公司中得到进一步的采用。GraphQL 有望解决传统的基于 REST 的应用程序面临的许多问题。
- GraphQL 应用程序是数据驱动的(不是端点驱动),因此客户端可以声明所需的确切数据,从服务器接收相应的 JSON 响应。
- GraphQL API 提供的文档记录了所有的数据及其类型,帮助开发人员更全面地了解 API。
- 由于 GraphQL API 提供了完全类型化的架构,因此它也可以与 TypeScript 应用程序很好地集成。GraphQL 可以通过 GraphQL Code Generator 等工具读取客户端代码中的查询,并将其与架构进行匹配,以提供在整个应用程序中流动的 TypeScript 类型。
CSS-in-JS 的发展势不可挡
- 通过 import/export ,利用常规的 JavaScript 语法共享样式和依赖项。
- CSS-in-JS 组件可以将 props 插入到样式字符串中,简化了动态样式
- styled-components 和 emotion 是 CSS-in-JS 的两个主要库,而且2019年 emotion 的下载超过了 styled-components。
Webpack 5 已进入测试阶段且即将发布
- 通过持久缓存提高构建性能;
- 通过更好的算法和默认值来改善长期缓存;
- 清理内部模式,同时不会引发任何重大变动。
CSS 新特性
- CSS Grid
- CSS 定义变量
- CSS Houdini
打包工具
- Webpack 主流
- 下一批常使用的打包工具是 Parcel 和 Rollup打包工具
JavaScript lint
- eslint 绝对的王者
- 有部分原因可能要感谢 Typescript 团队,这可能是因为他们在今年 2 月份宣布放弃 TSLint,和集中能力去改善 ESLint 在 TS 项目中的支持。
JavaScript 测试工具
- Jest 仍排在首位占了44.86%
- Mocha (26.12%),Jasmine (19.47%) 和 Enzyme (18.64%) 则是下一批最常使用的测试工具。
性能测试
- Lighthouse 是当前最受欢迎的性能测试工具,占了52.11%。
- 24.29% 开发者说会使用 WebPageTest
- 23.13% 的人会在项目中使用 Service Workers 技术提高