关于前端框架的浅谈

  介绍

小编给大家分享一下关于前端框架的浅谈,相信大部分人都还不怎么了解,因此分享这篇文章给大家学习,希望大家阅读完这篇文章后大所收获、下面让我们一起去学习方法吧!

大处着,眼小处着手!从细微处谈谈前端重构的一些注意事项。

如果你的项目使用的前端模板,后端路由+渲染,本文可能不太符合。本文主要针对温泉类型前端应用。

创建一个前端应用大致会包含一些的流程

关于前端框架的浅谈

注:测试放在开发之后也许是个错误,前端开发者也需要对测试有足够的重视

本篇主要关注的是开发阶段的一些细节,一个项目运行一般会包含以下步骤

关于前端框架的浅谈

现在的很多框架,都帮助我们做了其中很大一部分工作,但是还是有很多细节之处,需要我们注意!

1。启动应用时通常需要做些什么

。加载监控

监控虽然是最后一环才用的到,但是却需要我们在应用初始化的时候就开始使用

b。跟踪

埋点,通常是用来做业务分析的重要依据,

原则1:,默认大于配置

我们应该在使用统一的方式,如事件代理,对必要的埋点处做数据发送

const  eventWhiteList =, (& # 39; InputItem-module& # 39;,, & # 39; AuthButton-module& # 39;】   ,window.addEventListener (“mouseup", function  (e), {   ,,如果(e。target), {   ,,,,//,找到班级名册   ,,,,const  classList =, e.target.classList;   ,,,,let  moduleClassName =零   ,,,,,(let  i=0, i<, classList.length;,我+ +),{   ,,,,,,如果(班级名册[我].indexOf (“-module__"),祝辞,0),{   ,,,,,,,,moduleClassName =,班级名册(我)   ,,,,,,,,休息;   ,,,,,,}   ,,,,}   ,,,,如果(moduleClassName ,,, ! new 正则表达式(“^ (“+ eventWhiteList.join (“) | (“) +“)“) test (moduleClassName)), {   ,,,,,,//,截取class 除标识内容的散列部分   ,,,,,,moduleClassName =, moduleClassName.replace (/___。+/,,,,)   ,,,,,,let  innerText =, e.target.innerText  | |,““   ,,,,,,Tracking.trackEvent(& # 39;点击# 39;,,{& # 39;lmt-track-id& # 39;:, moduleClassName,, & # 39;活动# 39;:,innerText.substr (0, 30)})   ,,,,}   ,,}   ,},{捕获:,真的})

这是一段基于芋头设定的默认事件发送代码

如上,我们需要根据自己使用框架,找到一些有规律的行为,并对该行为进行解析,取出能够作为追踪标识的部分,进行数据创建

2。什么是全局拦截器

主要用于应对一些必须在路由初始化之前做的拦截判断

3。初始化路由

为什么要单独列出路由初始化呢,仅仅只是一个路由定义吗,当然不是!

由于温泉类应用,路由前置到了前端,这时候我们就需要考虑,路由切换带来的一些副作用

原则2:页面隔离

后端路由切换往往带动的前端页面刷新,而前端路由的调整仅仅是地址的变化,

我们就需要在必要节点对页面信息进行销毁,防止对下一个页面产生副作用

重点:定时器的销毁是一定要注意的

注:手动中止取回请求,教程较多

参考AbortController实现,考虑到兼容性问题,可以实现一个虚拟的中止:即在解决和拒绝中加上一个信号,通过程序设置,如果触发信号则不处理响应即可

如,基于导演的路,由我们可以这样写

//,routeConfig为定义的路由列表   var  r =, new  director.Router  (routeConfig) .configure  ({   ,,,,,,,,,html5history:, ! ! routerInc [“settings"] [“enableHistory"], run_in_init:,真的,,   ,,,,,,,,,convert_hash_in_init:,真的,   ,,,,,,,,,:,function  (), {   ,,,,,,,,,,,//,对上一个页面做清理操作   ,,,,,,,,,,,if  (routerInc ,,, routerInc.page  ()), {   ,,,,,,,,,,,,,routerInc.page  () .isLoading (真正的);   ,,,,,,,,,,,,,routerInc.page  () .cancelXhr ();   ,,,,,,,,,,,,,routerInc.page  () .modal.distoryModal ();   ,,,,,,,,,,,,,routerInc.clearPage ();   ,,,,,,,,,,,}   ,,,,,,,,,,,var  curUrl =, ! ! routerInc [“settings"] [“enableHistory"], ? window.location.href.replace   ,,,,,,,,,,,(window.location。   ,,,,,,,,,,,协议+“//? window.location.host,““),:, (this.delimiter + this.getRoute () . join (this.delimiter);   ,,,,,,,,,,,logger.debug (“- - - - - - -路线——-before");   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

关于前端框架的浅谈