babel的转译过程也分为三个阶段,这三步具体是:
前端监控一般分为三种,分别为页面埋点、性能监控以及异常监控。
页面埋点应该是大家最常写的监控了,一般起码会监控以下几个数据:
对于这几类统计,一般的实现思路大致可以分为两种,分别为手写埋点和无埋点的方式。
相信第一种方式也是大家最常用的方式,可以自主选择需要监控的数据然后在相应的地方写入代码。这种方式的灵活性很大,但是唯一的缺点就是工作量较大,每个需要监控的地方都得插入代码。
另一种无埋点的方式基本不需要开发者手写埋点了,而是统计所有的事件并且定时上报。这种方式虽然没有前一种方式繁琐了,但是因为统计的是所有事件,所以还需要后期过滤出需要的数据。
性能监控可以很好的帮助开发者了解在各种真实环境下,页面的性能情况是如何的。
对于性能监控来说,我们可以直接使用浏览器自带的Performance API来实现这个功能。
对于性能监控来说,其实我们只需要调用performance.getEntriesByType(‘navigation’)这行代码就行了。对,你没看错,一行代码我们就可以获得页面中各种详细的性能相关信息。
我们可以发现这行代码返回了一个数组,内部包含了相当多的信息,从数据开始在网络中传输到页面加载完成都提供了相应的数据。
对于异常监控来说,以下两种监控是必不可少的,分别是代码报错以及接口异常上报。
对于代码运行错误,通常的办法是使用window.onerror拦截报错。该方法能拦截到大部分的详细报错信息,但是也有例外
对于异步代码来说,可以使用catch的方式捕获错误。比如Promise可以直接使用catch函数,async await可以使用try catch。
但是要注意线上运行的代码都是压缩过的,需要在打包时生成sourceMap文件便于debug。
对于捕获的错误需要上传给服务器,通常可以通过img标签的src发起一个请求。
另外接口异常就相对来说简单了,可以列举出出错的状态码。一旦出现此类的状态码就可以立即上报出错。接口异常上报可以让开发人员迅速知道有哪些接口出现了大面积的报错,以便迅速修复问题。
前端工程化,字面意思理解,就是以工程化方法规范和指导前端日常开发,为前端工作赋能,使其不仅仅局限于应用开发,而是掌控从开发、构建、到发布的完整链路,同时以系统、严谨、可量化的方法助力开发工作,确保开发效率和交付质量。
前端工程化的发展历程是从刀耕火种的原生js时代开始,出于工程化思想,逐渐诞生jQuery框架,bootstrap组件库,grunt,gulp,webpack等构建工具,react、vue等响应式框架应运而生,到现在发展出了更先进的低代码,Serverless等工程理念。
前端框架理念:历经了jQuery,bootstrap插件化,到CMD,ESM等模块化,到如今的React,Vue组件化的过程。
随着node.js的出现和流行,前端构建工具也实现了从任务化的grunt/gulp,发展到现在系统化的webpack,vite等主导工具。
构建工具和前端框架相辅相成,构建工具让前端框架百花齐放,各种类库无缝合作;框架、类库的发展也同时影响了构建工具,比如模块加载方案的演进,CSS预处理,甚至CI/CD一套完整的前端开发流程有:开发->测试->构建->部署->监控
在这五个阶段中工程化的思想均有不同程度的体现,具体表现为:
分解一下从六个方面回答:
具体解释: