新年将至,现在是元旦的前夕,估计我写完这篇文章就已经是元旦了
还有一个月过春节了作为干了多年的CTO的我,看看前端市场的一片大好,不禁感慨,每个阶段都有踩上点的人和错过失意的有能之人。我侧重讲以下几点:
前端的风口期你需要注意的风口一、前端过往的风口期
1.概念:前端(front-end)和后端(back-end)是描述进程开始和结束的通用词汇。前端作用于采集输入信息,后端进行处理。计算机程序的界面样式,视觉呈现属于前端。
2.简化点,前端的演进史
①角色框架发展史:Web1.0到Web2.0过渡的标志,就是Ajax的出现(年)
角色框架发展史2)前端技术发展史:
前端技术发展史技术发展史为什么会这么演进,一句话,如果是很早以前就是5G时代,那么估计只有响应式设计,其他的APP,SPA根本火不了那么快了,遇见未来好,但是改变现状,才会站在风口上,历史的演进史是不能跨越的,除非你穿越了。
①数据-模板-样式混合
在有限的前端经验里,我还是经历了那段用Table来作样式的年代。在刚开始工作的时候也一直用Table这种模式去工作,那个时代前端,我更喜欢叫美工,因为只切图,后端我做,甚至图都是我切的,常用工具Dreamweaver
原生Table写法那个时代后端兴起MVC兴起,期初不是MVC还是jsp时代,两端结构,MVC我深刻的记得是spring兴起后,各种搭配框架兴起,比如SpingMVC,前端Struts1,2,webwork框架,等等,都是这种模板化居多吧
springMVC框架Ajax的兴起,后端MVC才渐渐出现了前端View的革面化创新,出现了框架技术如Django,ExtjsUI,等等出现了模板化,组件化一些包装技术,都属于ajax的封装体
②从桌面版到移动版Wap出现了,并带来了更多的挑战。随后,分辨率从x变成了×,开发人员不得不面临这些挑战。当时所需要做的仅仅是修改View层,而View层随着iPhone的出现又发生了变化。
历史较短,核心原因,慢,体验不好,在这一时期,桌面版和移动版的代码可能在同一个代码库中。他们使用相同的代码,调用相同的逻辑,只是View层不同了。但是,每次改动我们都要维护两份代码。
③APP-最开始,人们越来越喜欢用APP,因为与移动版网页相比,其响应速度更快,而且更流畅。对于服务器来说,也是一件好事,因为请求变少了。但是并非所有的人都会下载APP——有时只想看看上面有没有需要的东西。对于刚需不强的应用,人们并不会下载,只会访问网站。有了APPAPI之后,我们可以向网页提供API,我们就开始设想要有一个好好的移动版。
过渡期SPABackbone诞生于年,和响应式设计出现在同一个年代里,但他们似乎在同一个时代里火了起来。如果CSS3早点流行开来,似乎就没有Backbone啥事了。不过移动网络还是限制了响应式的流行,只是在今天这些都有所变化。
什么是SPA?SPA即单页面,就是页面整体不刷新,不同的页面只改变局部的内容的一种实现方式。一个完整的URI有以下几部分组成:
览器的URL也遵循以上规则,而对于以上规则中,只有#后面的fragment发生改变时,页面不会重新请求,其它参数变化,均会引起页面的重新请求,而在Js中恰恰还有事件window.onhashchange能监听到fragment的变化,于是就利用这个原理来达到一个修改局部内容的操作。#fragment部分就是对应到Js中的location.hash的值。
这时,我们还是基于类MVC模式。只是数据的获取方式变成了Ajax,我们就犯了一个错误——将大量的业务逻辑放在前端。这时候我们已经不能再从View层直接访问Model层,从安全的角度来说有点危险。
如果你在你的View层和Model层总有一层接口,那么你采用的就是MVP模式——MVC模式的衍生(PS:为了区别别的事情,总会有人取个表意的名称)。
一夜之前,我们又回到了过去。我们离开了JSP,将View层变成了Template与Controller。而原有的Services层并不是只承担其原来的责任,这些Services开始向ViewModel改变。一些团队便将Services抽成多个Services,美其名为微服务。传统架构下的API从下图
APIGateway变成了直接调用的微服务:
MicroServices对于后台开发者来说,这是一件大快人心的大好事,但是对于应用端/前端来说并非如此。调用的服务变多了,在应用程序端进行功能测试变得更复杂,需要Mock的API变多了。Hybird与ViewModel这时候遇到问题的不仅仅只在前端,而在App端,小的团队已经无法承受开发成本。人们更多的注意力放到了Hybird应用上。Hybird应用解决了一些小团队在开发初期遇到的问题,这部分应用便交给了前端开发者。前端开发人员先熟悉了单纯的JS+CSS+HTML,又熟悉了Router+PageView+API的结构,现在他们又需要做手机APP。这时候只好用熟悉的jQuerMobile+Cordova。随后,人们先从Cordova+jQueryMobile,变成了Cordova+Angular的Ionic。在那之前,一些团队可能已经用Angular代换了Backbone。他们需要更好的交互,需要databinding。
3.当前技术栈分析
1)Node.js服务器端JS运行原理
Node.js服务器端JS运行原理服务器上如何应用Js呢?这句话可以理解为:在非网页情况下如何运行Js程序(或者命令行如何运行)。与Java在服务器上运行需要按照JDK一样,Js要运行也需要安装Node环境,安装以后就可以运行了,具体的可以对照着Java程序来解释说明。
2)SSR服务器端JS运行原理
用过Java的人一定对FreeMarker不陌生,其工作原理:
SSR服务器端JS运行原理对于Node.js来说也是一样,只是使用的框架不是FreeMarker罢了!究其原理无非都是:
Template+Data=Output
只是现在前端说的这个SSR,其实就是指后台渲染好数据,直接返回到浏览器,浏览器就直接显示了,下面我们做一个对比,用来说明传统的AJax操作和SSR之间的区别。
主要流程如下:
用户地址栏输入URL浏览器使用HTTP协议从后台获取资源浏览器解析并渲染HTML页面呈现到浏览器上3)VUEMVVM原理
MVVM原理二、你需要注意的风口
我们再看看前端行业:
angularjs诞生于年;
react诞生于年;
vue诞生于年。
他们基本上开始被大规模应用都是在15年-16年。
年,咱们应该学点啥,能够让自己三年或者五年内抓住机会,收入翻番?
基础打牢:html+css,node.js要学习框架技术:vue、react、angular要学习web组件化技术:从一开始的YUI、ExtJS到现在的AngularDirectives、ReactComponents、Vue.jsComponents、Bootstrap等,前端的组件化道路从来没有停止过。PWA:下一代webapp应用GraphQL:RESTAPI的替代品网站静态化:JAMstackjavascriptAI:JavaScript构建的各种AI模型和机器学习模型javascript物联网(lot)要探索