前端是庞杂的,包括 HTML、 CSS、 Javascript、Image 、Video等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么 ?
本文主要是在我读《高性能Javascript》之后,想要记录下一些有用的优化方案,并且就我本身的一些经验,来大家一起分享下,
静态网站。这是其最大优势。在使用 TailwindCSS 等,可以更加灵活的制作出样式优美的页面及组件。拥有着较为完善的生态圈。
SPA单页面应用(SinglePage Web Application) ,指只有一个主页面的应用(一个html页面),一开始只需要加载一次js、css的相关资源。所有内容都包含在主页面,对每一个功能模块组件化。单页应用跳转,就是切换相关组件,仅仅刷新局部资源。
要这样做有两种选择。第一种是使用 JavaScript Cache API,我们可以安装 service worker 来使用它。第二种是使用 HTTP 协议缓存。
性能优化是把双刃剑,有好的一面也有坏的一面。好的一面提升网站性能,坏的一面配置麻烦,或者要遵守的规则太多。并且某些性能优化规则并不适用所有场景,需要谨慎使用,请读者带着批判性的眼光来阅读本文。
全局刷新: 使用form,href等发起的请求是全局刷新.用户发起请求,视图改变了,跳转视图,使用新的数据添加到页面
1.访问DOM会影响浏览器性能,修改DOM则更耗费性能,因为他会导致浏览器重新计算页面的几何变化。<通常的做法是减少访问DOM的次数,把运算尽量留在JS这一端。
课程在理论层面非常深入,使用大量实战案例来进行驱动,能够让大家在欢快愉悦的环境当中,掌握技术底层的实现原理。
https://liuyib.github.io/2019/09/24/use-pjax-to-your-site/
在局部刷新,需要创建一个对象,代替浏览器发起请求的行为,这个对象存在内存中。 代替浏览器发起请求并接收响应数据。这个对象叫做异步请求对象。
1、 什么是CSS预处理器 CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题。CSS预处理语言有SCSS (SASS) 和LESS等等,总之都是用来实现样式的。 2、lang 因此lang的属性可选:scss(sass)、less等等 即:<style lang="scss"> 3、scss和sass的区别 scss是sass的一个升级版本,两者都是用来实现样式的,只是语法有各自的不同点。 注明:使用这个lang的属性需要安装scss(sass) 4、scoped属性 scoped是指定样式的局部作用域。 在vue中:App.vue相当于根容器,不设置scoped。所以一般在App.vue中引用公共样式。而在其它.vue页面中用scoped,代表当前样式只作用于当前.vue页面。不作用于其它.vue页面。
这就引出了本篇博客的目的,一起来谈谈:项目前端部分的构建方式以及数据共享方式。
利用JS来控制页面控件的显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位。
CSS-in-JS是一种技术(technique),而不是一个具体的库实现(library)。简单来说CSS-in-JS就是将应用的CSS样式写在JavaScript文件里面,而不是独立为一些 .css, .scss或者 less之类的文件,这样你就可以在CSS中使用一些属于JS的诸如模块声明,变量定义,函数调用和条件判断等语言特性来提供灵活的可扩展的样式定义。值得一提的是,虽然CSS-in-JS不是一种很新的技术,可是它在国内普及度好像并不是很高,它当初的出现是因为一些 component-based的Web框架(例如React,Vue和Angular)的逐渐流行,使得开发者也想将组件的CSS样式也一块封装到组件中去以解决原生CSS写法的一系列问题。还有就是CSS-in-JS在React社区的热度是最高的,这是因为React本身不会管用户怎么去为组件定义样式的问题,而Vue和Angular都有属于框架自己的一套定义样式的方案。
(1)立即执行函数的定义 立即执行函数(Immediately Invoked Function)是在页面加载时立即被执行的函数。
浅谈移动端页面无刷新跳转问题的解决方案 2017-12-22 祈澈姑娘 最近开发微信公众号,用的框架是 一般的 UI,但是涉及到多页面之间的相互跳转的问题,降低了浏览器的性能,用户体验特别不好,卡顿,不流畅,因此不采用传统的页面跳转方式,看到不少手机网页开发的框架都都是在一个html文档中包涵多个页面的内容,每页放到不同的 里面。 于是采用当下流行的单页面模,在做pc网页的时候一般都直接给链接的。比起用链接来跳转页面,这样做也是有很多好处的(比如appjs,jquery Mobile) 这种web形式在如
性能优化是把双刃剑,有好的一面也有坏的一面。好的一面就是能提升网站性能,坏的一面就是配置麻烦,或者要遵守的规则太多。并且某些性能优化规则并不适用所有场景,需要谨慎使用,请读者带着批判性的眼光来阅读本文。
刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构。后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口。于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做。另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试。
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。也就是在不重新加载整个页面的情况下,浏览器可以与服务器交换数据并更新部分网页内容,大大提升用户的体验。例如在百度输入框中输入一个关键字,会通过ajax请求数据返回内容;新浪微博的点赞等都用到了Ajax技术。
假设有一个脚本(用js或者jQuery等类似手段编写),为UpdatePanel中的一个普通的TextBox赋值。如果你以为这样写: <head runat="server"> <title>Test</title> <script src="Scripts/jquery-2.0.0.js"></script> <script> $(function () { $('#<%=TextBox1.ClientID%>').val("
看红宝书,重新梳理JavaScript的知识。这部分主要是梳理冷门的知识点(对个人来说是冷门的)
现在做成,成功且状态码正确弹框提示「登录成功」,成功但状态码错误弹框提示「登录失败」,ajax发送失败提示「请求失败」
单页面应用(Single Page Application,SPA)是一种网页应用程序模型,它在加载初始页面后,通过动态地更新页面的部分内容,实现与用户的交互和数据展示,而无需重新加载整个页面。
前言 First paint 直译过来的意思就是浏览器第一次渲染(paint),在First paint之前是白屏,在这个时间点之后用户就能看到(部分)页面内容。 所以研究这个First Paint的触发时机对于优化浏览器页面的首屏渲染时间有很重要的作用。 在正题开始之前,先说下浏览器的页面的加载流程(大体过程是这样,并不精确,只是为了帮助理解后面内容): 浏览器输入url,浏览器发送请求到服务器,服务器将请求的HTML返回给浏览器。 浏览器下载完成HTML(Finish Loading HTML)之
21 | Chrome开发者工具:利用网络面板做性能分析 页面是浏览器的核心,浏览器中的所有功能都是服务于页面的,Chrome开发者工具又是调试页面的核心工具。 网络面板 控制器 开始或停止抓包 全局搜索 禁止从cache中加载资源 模拟网络 过滤器 抓图信息:Capture screenshots 详细列表:重点内容 下载信息概要 DOMContentLoaded:页面已经构建好DOM,所需要的HTML、CSS和JS文件都已经下载完成 Load:浏览器已经加载了所有的资源(图片、样式表等) 详
2)css、js、img等静态资源合并压缩(vue的项目有压缩css和js)
作为资深球迷,提起Ajax,第一反应想到的是阿贾克斯,那个曾培养出伊布,范德法特,苏亚雷斯,亨特拉尔等一众球星的荷甲著名球队。
1 能够说出Vue全家桶的各个组件(Vue-CLI、Vue-Router、Vuex、Axios)的概念、功能和使用场景
最近看到一些人在问单页面和多页面应用的区别。因为最近在整理 Vue 相关的内容,所以也就输出这一篇短文希望可以给你一个整体的认识。
描述:通过获取沙盒H5路径直接加载 将h5文件存入沙盒,webview加载本地文件URL 。
以上的sum函数,可以这样调用:sum(),没有传任何实参的时候a和b变量没有赋值,则a和b都是undefined。也可以这样调用sum(10),这样就表示a变量赋值10,b变量仍undefined。还可以这样调用:sum(1,2),这样则表示a是1,b是2。
HTML5学堂:而今,AJAX技术已经成为JavaScript的重要组成部分,提到AJAX,最核心的两个词语是“局部刷新”和“异步加载”。在本文当中,主要介绍AJAX是什么以及其操作的基本步骤。 AJAX是四个单词的简写,其中Asynchronous【发音:[eiˈsiŋkrənəs]】即异步的意思,异步的链接可以同时发起多个,并且不会阻止JS代码执行。与之对应的概念是同步,同步的链接在同一时刻只会有一个,并且会阻止后续JS代码的执行,JS必须等待同步链接加载完毕后才能继续执行。AJAX发展到现在,不但可以
bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序 也许单页程序(Single Page Application)并不是什么时髦的玩意,像Gmail在很早之前就已经在使用这种模式。通常的说法是它通过避免页面刷新大大提高了网站的响应性,像操作桌面应用程序一样。特别是在当今的移动时代,单页程序如果放在移动设备上去浏览就能够拥有像native app一样的体验,也许我们web开发者们应该期待这种技术的大力普及,这样不管前端还是后端都是我们
前端的模块系统经历了长久的演变,对应的模块打包方案也几经变迁。从最初简单的文件合并,到AMD 的模块具名化并合并,再到browserify将CommonJS 模块转换成为浏览器端可运行的代码,打包器做的事情越来越复杂,角色也越来越重要。 在这样一个竞争激烈的细分领域中,webpack 以极快的速度风靡全球,成为当下最流行的打包解决方案,并不是偶然。它功能强大、配置灵活,特有的code spliting方案正戳中了大规模复杂Web 应用的痛点,简单的loader/plugin 开发使它很快拥有了丰富的配套工具
断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了。操作起来似乎很简单,其实很多人纠结的是,是在哪里打断点?(我们先看一个断点截图,以chrome浏览器的断点为例)
随着容器技术(docker、k8s)以及微服务架构逐步成熟和发展,这种强调后端分离思想让jsp这个陪伴我近10年的页面渲染技术宣告落幕了,有点伤感。。。
JavaScript中所有对象的属性都是公共的,并没有什么明确的方法来表明属性能否从对象的外部被访问,而有时候我们并不希望对象的属性被外界访问。一种方式方式通过命名约定的形式,比如在变量的前面加下划线(_)。还有一些其他的方式是属性完全私有化。
前言 任何技术优化都依托于业务的发展,随着QQ会员增值业务的重心转移到手Q移动端,对H5页面不仅要求加载更快,还需承载丰富多彩的运营活动,同时由于每个页面都意味着KPI收入,任何可能导致页面功能不可用的发布行为都是不可接受的。 本文为SDCC 2016(杭州站)的分享实录,介绍QQ会员的前端开发团队在手Q的hybrid模式下对H5页面的性能优化、组件化和持续集成方面的实践。 分享实录: 首先简单介绍一下自己,作为一名80后老腊肉,呆过若干创业团队;2012年加入腾讯超级QQ团队,负责前端开发工作;2013年
不支持defer属性的浏览器:defer、script、load 支持defer属性的浏览器:script、defer、load 3.2 动态添加script标签,添加到head中比添加到body中安全 3.3 XHR动态脚本注入兼容性好,但不能跨域
今日洞见 文章作者、部分图片来自ThoughtWorks:陈计节。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。已经本网协议授权的媒体、网站,在使用时必须注明"内容来源:ThoughtWorks洞见",并指定原文链接,违者本网将依法追究责任。 当AngularJS应用程序变大时,很多问题就开始显现出来了,比如多层级视图的加载问题。如果在子视图显示之前没有预加载,则可能在需要展示时发生视
bug: 在onShow中执行this.onLoad(),会导致页面第一次加载的时候数组加载两次! 造成原因:页面加载先执行onLoad,再执行的onShow,就会出现在onLoad加载一次数据,在onShow中执行this.onLoad()在加载一次数据。 解决办法:将不需要刷新的数据放在onLoad中执行,将需要刷新的数据放在onShow中执行! 感谢:感谢editplusx的指正!
使用浏览器打开 https://mp.weixin.qq.com/ 网址,点击右上角的“立即注册”即可进入到小程序开发账号进行注册。
想必大家都知道,JavaScrip是全栈开发语言,浏览器,手机,服务器端都可以看到JS的身影。 本文会分享一些高效的JavaScript的最佳实践,提高大家对JS的底层和实现原理的理解。 数据存储 计算机学科中有一个经典问题是通过改变数据存储的位置来获得最佳的读写性能,在JavaScript中,数据存储的位置会对代码性能产生重大影响。 - 能使用{}创建对象就不要使用new Object,能使用[]创建数组就不要使用new Array。JS中字面量的访问速度要高于对象。 - 变量在作用域链中的位置越深,访
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156982.html原文链接:https://javaforall.cn
领取专属 10元无门槛券
手把手带您无忧上云