以下内容多为自己平时积累而来,思考和结论正确与否纯个人观点,希望对大家有所感悟和触发~~~
先写下两个观点和感悟:
17年9月刚到公司,感觉公司前端最大的问题:不是统一UI、不是搞个新框架,而是要通过建全基础设施,改变开发方式以及改变公司对前端的认知,将所有业务彻底解藕才是症结(前后端解耦、前端组件解耦)。
我们花了大约一年半的时间,来确立一套自己的基本游戏规则:代码规范、code review、Git的用法、开发流程、图表管理等等;现在我们需要熟练这套规则,与此同时想着如何添砖加瓦(我们的fusion系列已经陆续展开 — 旨在打造自己的前端生态圈闭环)。
做这些事情往往要求我们忍耐默默无闻、要就经常跳出自己的舒适区,到另一个不熟的领域甘心当小白,目的只有一个切实有效的把产品中的前端问题解决掉。对我们而言,通常这么做可以收获到更多更深刻的经验和知识,所以我们也乐此不疲。
首先,回顾从2017年10月份以来,我们做了哪些~~
再者,回顾近几年前端圈,都发生了那些~~
总之,拥抱变化是前端工作中应被灌输的价值观!
这么多的变化,我们该何去何从?
切实解决问题为导向,我们追求“最流行”的技术,但不盲目、不强加,加入自己的思考 。
所谓“当下”,即是我们必须积极拥抱的技术,需要我们学习、尝试并用到我们的项目上来~
Angular,React,Vue 底层语言已陆续全部换成了 Typescript(TS 是 JavaScript 类型的超集,其可以编译成纯 JavaScript)。TypeScript 提供最新的和不断发展的 JavaScript 特性,包括那些来自2015年的 ECMAScript 和未来的提案中的特性,比如 async…awati 和 Decorators,以帮助建立健壮的组件。TypeScript 最大的优势是它提供了强大的静态分析能力,结合 TSLint 能对代码做到更加严格的检查约束。实现了从后端 API 接口到 View 组件的全链路静态分析,具有了完善的代码提示和校验能力。编译通过几乎就代表运行正常!!
自己的独想: 三大框架发展至今,经过了 MVVM 思想刚诞生一刻的疯狂叫卖,每个框架都沿着自己的理解发展壮大;经过2-3 年的沉淀,框架思想上又趋于了一致性,这里包括 单向数据流、虚拟DOM、状态管理等。这样的发展并不是不好,而是一种趋势,所谓的“天下大势,合久必分,分久必合”吧。也相信在一个新的技术出现之前,三大框架在思想方面会越来越靠拢~~
GraphQL(Graph Query Language)一种用于 API 的查询语言也是一个满足你数据查询的运行时。其提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。
GraphQL 诞生之前,是 Restful 的天下,GraphQL 带来了哪些重量级改观:
{
user {
name
address
}
role {
org
}
}
GraphQL 除了 JavaScript 实现,已有多种编程语言(包括Go、Java、PHP、Python等)支持。
当时
document.querySelector
首次被浏览器广泛采用,就此终结了 jQuery 的通用时代(无需强依赖,带来了一种更好的选择)。随着web components
被各大浏览器厂商的支持,圈内出现了类 Web 组件即将取代前端框架 的讨论,不管是否真的替代,但发展方向上值得我们关注
现代 Web API 发展至今,使我们有能力不依赖框架来创建可复用的前端组件。我们所需创建的自定义组件就是自定义元素和影子DOM,这可以在任意地方复用。这也是第一次我们仅通过 HTML,CSS 和 JavaScript 就成功构建了可兼容任意浏览器的可复用组件。单从 web components
给我们带来的其不需要依赖于任何框架,即能完成组件的复用的效果,就可以博得我们的重视!
再深入讨论,目前基本任一浏览器都可以使用Web组件,包括移动端浏览器(端的概念也得到了一种原生适配模式)。
css-in-js 方案依旧争论不休,虽然它确实解决了一些 CSS 语言天生的问题,但同时增加了不少成本,新手不够友好、全局样式覆盖成本高涨、伪类处理复杂、与AntD(样式使用了Less作为开发语言)等组件库结合有坑。与此同时 Sass/Less 社区也在飞速发展,尤其是 Stylelint 的成熟,可以通过技术约束的手段来避免 CSS 的 Bad Parts。
中台,一个被"玩坏"的词,现在每个公司都在搞中台,但其方式却千万种。对于前端来说,灵活多变是特色,但中台却是要趋于强大平稳。微前端,以独立运行、独立开发、独立部署为宗旨。
注意需要前后端分离的单页应用,这是谈论微前端的基础
微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。
前端需要的是解耦,更需要的是解耦后的聚合!
技术没有银弹,采用新技术,更多不是因为先进,而是因为它能解决痛点。解决遗留系统,才是人们采用微前端方案最重要的原因。
思考我们的现状: 情况一:一系列的安全产品且历史版本较多(这反应了我们是按业务线划分的组织架构)。但在用户眼里,观安是一家公司,其应该就是一个产品(或者说,各产品应该相通的)。我认为这个点在未来的某一天可能是我们最大的问题! 情况二:全文检索、规则引擎,在每个产品中都有体现,存在各种迁移的情况。如果这些模块达到了可以独立运行和维护,以及和主项目组合的理想方式,我们便可以节省大量的时间! 到底前端中台(微前端)该如何实现?我们该做哪些思考呢?
所以,聚合成为了一个趋势,体现在前端的聚合就是微服务化架构。
微件化、微应用化、路由分发、前端微服务化等。
各个前端应用还可以独立运行、独立开发、独立部署。
对于移动端开发,越来越多的人关注这样一句话:Learn once, write everywhere. Write once, use everywhere. 低成本、高复用是移动端目前的一个主要方向。
回顾整体发展阶段:
Flutter 阐述完成,有必要再说下 PWA。
接着上面,H5 的发展,对移动端带来了一定的冲击,但是 H5 很难战胜 Native App 在性能和功能上强大。除了昂贵的开发成本、然后审核发布到各个商店的复杂发布流程,使得 Native App 较 Web App 有很大的差异。因此诞生了 PWA。
PWA(Progressive Web App)是一种理念,使用多种技术来增强 Web App 的功能,可以让网站的体验变得更好,能够模拟一些原生功能(PWA 在传统 Web 应用的基础上,通过完善Web应用的一些能力,比如离线使用、后台加载、添加到主屏和消息推送等,达到用户体验提升和性能优化)。在移动端利用标准化框架,让网页应用呈现和原生应用相似的体验。PWA 本质上是 Web App,借助一些新技术也具备了 Native App 的一些特性,兼具 Web App 和 Native App 的优点(需要考量的是,某些Native功能,PWA仍然实现不了,如调取摄像头< 出于安全考虑>)。
强调渐进式的改善站点体验主要有下面两个原因:
PWA 的流行主要包含以下几个特点:
https://lavas.baidu.com/pwa/README
2016年, PWA 在google正式落地,基于 Chromium 的浏览器 Chrome 和 Opera 已经完全支持 PWA 了;随着 iOS 11.3 的发布,iOS正式开始支持PWA;Windows Edge 支持PWA。
PWA 的出现,使得 Web App 可以具备 Native App 的特性。在做开发时,多了一个选择,也多了一种思维方式
信息产业的第一次浪潮是以信息处理PC机为代表;以互联网、通信网络为代表的信息传输推动了信息产业的第二次浪潮;而以传感网、物联网为代表的信息获取或信息感知,将会推动信息产业进入第三次浪潮。现在的前端,是由于互联网浪潮带来的,我们对于信息的传输方式的演变,从门户 => 网站 => app => 各种端;信息的传输导致了发展; 然而,接下来会发生变化呢?AI?IOT?前端行业依附于整个信息产业,也诞生于第二次浪潮;信息产业本质或追求的变化,必然会导致前端行业的变化,或者导致新的行业产生。如何把握脉搏的发展,是需要我们关注的重点。
变化(全部来源于信息传输的推动):
发展(全部为了满足变化,同时也推动了变化):
未来:
对于前端而言而使用 Node.js + JavaScript 作为胶水,来快速连接不同的服务,以形成一个快速有效的方案。Node.js 在服务端的 Runtime 和运维方式,把服务端复杂的技术细节屏蔽掉,让Node更好的在服务端延续。并且,编写更少的代码,也意味着更安全、快速。除了直接基于 AWS 的 Serverless Framework 框架的方案,还有 OpenFaaS、Kubeless、OpenWhisk、Fission 等不同的 Serverless 框架。
对于我们最重要的:多端引擎(IOT)、可视化应用开发