前端项目架构参考

在当今这个唯快不破的互联网大环境下,项目从架构的时候就要考虑性能是否最优,怎么样让用户体验更好

质量相同的情况下,用户体验好坏一般分两种:

  • 初始渲染:首屏加载速度

  • 页面跳转:页面跳转加载速度

一、大环境下的优化

1.css样式置顶,优化样式减少不必要的重绘

1)样式表放在网页的head中,首先,这样会给用户加载速度快的感觉,其次,因为样式表决定了网页的绘制信息,所以放在头部可以最大话的避免重绘和重排
2)样式表中尽量避免使用计算属性和@import 如:calc,因为计算属性不可避免造成重绘和重排
3)样式表中尽量使用简写如:

/*16进制颜色*/
#000000
/*可以写成*/
#000


margin-top:2px
margin-right:3px;
margin-bottom:4px;
margin-left:5px;

margin:2px 3px 4px 5px;

2.javascript脚本置底,优化dom操作

由于javascript是阻塞加载,所以尽量把javascript放在网页下边,在首屏加载的时候尽量减少对dom的操作,因为这回引起页面大量的重绘

3.减少http请求

可以通过合并静态文件,使用图标字体,精灵图,合并接口等方式减少http请求次数

4.延时加载

可以把首屏显示之外的文件使用延时加载,来提高首屏速度

5.避免请求空src

src值为空的时候,依然会发送http请求

6.使用压缩工具压缩传输

gzip等

7.使用CDN加速

CDN通过寻找离请求最近的资源服务器来提高用户的下载速度,合理使用CDN可以是网站加载速度倍增

8.使用缓存技术

在静态资源配置的时候可以给承载资源加载链接(如:index.html)以强制不缓存,其余资源做强制缓存,静态资源做打包的时候可以直接附加hash值,从而合理给页面缓存,合理使用缓存可以使网站加载速度倍增

9.打包优化

充分利用webpack等打包工具的打包功能,对代码进行拆包,压缩,以及组件的按需导入

二、代码内部优化

1.组件化

首先组件化代码可以提高代码重用率,其次组件化代码能减少不必要的计算和更新提高页面二次渲染性能

2.使用状态管理工具

预估项目最终程度,如果项目达到一定程度使用状态管理工具,方便管理状态,方便各个组件之间状态共享,减少不必要请求,

3.框架使用优化

优化各个框架提供属性和方法:比如减少refs使用,合理设置更新逻辑,避免不必要的重复渲染

4.请求优化

合理优化调用请求方式,减少不必要的维护和代码量比如:

//比如get请求,每次调用需要添加 method:'get'
require({url:'/test',method:'get'})
/*可以替换一下,
 *使用一个方法来封装一下,
 *直接省去了每个调用method:'get'这几个字符
*/
function get(url){
    return require({url,method:'get'})
}


/*虽然这么写看起来知识省掉了几个字符,
 *但是如果请求多了还是可以减少不小的打包量的,
 *其次请求后还需要数据处理,
 *如:
 */
 require({url:'/test',method:'get'}).then(data=>data).catch(err=>err)


/*如果我们在配合状态管理,
 *那么我们可以节约的代码已经非常可观了
 */
function get({url,commit,type,params}){
    require({url:'/test',method:'get'})
        .then(data=>{
            commit(type,{data})
        })
        .catch(err=>{
            commit(type,err)
        })
}


action({commit}){
    get({url:'/test',commit,type})
}

5.路由优化

1)可以合理安排使用嵌套路由,嵌套路由可以减少不必要的重复加载,现实局部更新
2)把一些权限有关的组件可以进行封装,通过路由来实现,减少不必要的判断和加载

<!--
比如列表:操作 列需要固定权限才可以使用
-->
<table>

    <tr>

        <td>姓名</td>
 
 
        <td>账号</td>
 
 
        <td>出生日期</td>
 
 
        <td>爱好</td>
 
 
        <td>操作</td>

    </tr>

</table>
 
 
<!--
可以提取共有表格
-->
<table>

    <tr>

        <td>姓名</td>
 
        <td>账号</td>
 
        <td>出生日期</td>
 
        <td>爱好</td>
 
        <child/>
 
    </tr>
 
</table>
 
<!--
在有权限的路由调用的时候传入操作列
-->
<MyUserTable>

    <td>操作</td>

</MyUserTable>
 
<!--
不同的前端框架有不同的组件使用模式,
但原理是相同的,我们通过这种方式,
可以把操作列和操作相关的代码拿出来,
这样没有对应权限的用户,
就不需要加载这部分永远不会用到的代码了
-->
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践。他们为此进行了一系列...
    拉风的老衲阅读 1,829评论 0 1
  • 网站优化离不开前后端的互相协作,但是对于前端工程师来说,在保证后端技术方案不变时,能不能只利用前端技术来优化网站呢...
    留七七阅读 6,295评论 0 31
  • yahoo军规一共分8个部分共35条: 内容部分: 1. 尽量减少HTTP请求数 80%的终端用户响应时间都花在了...
    revert阅读 4,683评论 0 2
  • 1、尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容,这部分时间包括下载页面中的图像、样式...
    兔子不打地鼠打代码阅读 519评论 0 1
  • 2017年,8月22日。 很多天没有回家了,在自己的床上睡得格外舒服。本来也是想要睡个懒觉的。但是七点不到还是醒来...
    蓝朵格格阅读 239评论 0 1