前端

前端优化带来的思考,浅谈前端工程化

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-19 13:01:10
这段时间对项目做了一次整体的优化,全站有了20%左右的提升(本来载入速度已经1.2S左右了,优化度很低),算一算已经做了四轮的全站性能优化了,回顾几次的优化手段,基本上几个字就能说清楚: 传输层面:减少请求数,降低请求量 执行层面:减少重绘&回流 传输层面的从来都是优化的核心点,而这个层面的优化要对浏览器有一个基本的认识,比如: ① 网页自上而下的解析渲染,边解析边渲染,页面内CSS文件会阻塞渲染,异步CSS文件会导致回流 ② 浏览器在document下载结束会检测静态资源,新开线程下载(有并发上限),在带宽限制的条件下,无序并发会导致主资源速度下降,从而影响首屏渲染 ③ 浏览器缓存可用时会使用缓存资源,这个时候可以避免请求体的传输,对性能有极大提高 衡量性能的重要指标为首屏载入速度(指页面可以看见,不一定可交互),影响首屏的最大因素为请求,所以请求是页面真正的杀手,一般来说我们会做这些优化: 减少请求数 ① 合并样式、脚本文件 ② 合并背景图片 ③ CSS3图标、Icon Font 降低请求量 ① 开启GZip ② 优化静态资源,jQuery->Zepto、阉割IScroll、去除冗余代码 ③ 图片无损压缩 ④ 图片延迟加载 ⑤ 减少Cookie携带 很多时候,我们也会采用类似“时间换空间、空间换时间”的做法,比如: ① 缓存为王,对更新较缓慢的资源&接口做缓存(浏览器缓存

Web大前端环境搭建

寵の児 提交于 2020-03-19 09:55:38
1,Install Nodejs https://nodejs.org/en/ 2,Install SublimeText 3 www.sublimetext.com 3,Install Package Control https://packagecontrol.io 复制 python 代码 粘贴到sublime的console中 重启sublime 安装package Preference -> Packages Control->输入install package->搜索package名称 Emmet :快捷键 SideBarEnhancement :增强右边栏功能 HTML-CSS-JS Prettify :文档格式整理,需要安装nodejs Seti-UI :主题 Themr :主题管理器 Preference -> Packages Control-> 删除 Packages Control 文字,输入Themr ColorPicker: command + shift + C CSSComb: control + shift + C 其它一些好用的插件,可以参考:http://www.cnblogs.com/jadeboy/p/5049340.html 4,Install Chrome 来源: https://www.cnblogs.com/jacky1982/p

前端基础(二):变量声明的6种方法

僤鯓⒐⒋嵵緔 提交于 2020-03-18 22:19:13
3 月,跳不动了?>>> 字数:2869 阅读时间:10分钟 最新的ECMAScript规范中,变量声明有var、function、let、const、import、class六种方法。 var 语法: var varname [= value1 [, vaname1[,valname2 ...]]]; 对应如下代码: var x; var x=1; var x=1,y=2; var x=y,y=2; //x->undefined y->2 我们需要注意该语法的两个特性:块级作用域和变量提升。 var语法声明的变量作用域为当前上下文(可以简化理解为当前变量被包裹的函数或顶级作用域),这里要特别注意,代码块并没有创建新的上下文,所以 var 没有块级作用域的概念。我们在一个循环体或者判断条件语句中使用的变量都会存储到当前函数对应的上下文中。例: function test () { console.log(i); for (var i = 0; i < 10; i++) { console.log(i); } console.log(i); } test(); console.log(i); //输出结果:undefined 0 1 2 3 4 5 6 7 8 9 10 ReferenceError 在这个示例中,变量 i 是在循环体中声明的,但是我们在循环体外仍然可以访问到它

前端HTML基础知识学什么?

会有一股神秘感。 提交于 2020-03-18 15:05:11
前端HTML基础知识学什么?初学HTML从基础知识入手,学习浏览器内核、HTML基本结构标签、HTML语法规范、VSCode编辑器、HTML常用标签、相对路径、锚点定位、表格、列表、表单等内容。 前端HTML基础知识学习路线: 1 浏览器与浏览器内核   HTML 简介导读   网页的相关概念   常用浏览器以及内核   web标准    HTML标签 导读   2 HTML基本结构   HTML语法规范   HTML基本结构标签   VSCode工具创建页面   DOCTYPE和lang以及字符集的作用   标签语义   3 HTML常用标签   标题标签   段落标签和换行标签   体育新闻案例   文本格式化标签   div和span标签   图像标签   图像标签注意点   4 路径和锚点定位   目录文件夹和根目录   相对路径   绝对路径   链接标签   锚点链接   注释标签和特殊字符   5 HTML 综合案例   6 表格和列表标签及案例   HTML标签   表格标签基本使用   表头单元格标签   表格相关属性(了解)   小说排行榜案例   表格结构标签   合并单元格   表格总结   无序列表 有序列表 自定义列表   列表总结   7 表单相关元素及属性   表单使用场景以及分类   表单域   input之type属性文本框和密码框  

web前端自学之路:我的HTML、CSS学习计划

本秂侑毒 提交于 2020-03-17 20:35:46
前端自学大概的路线图 因为刚开始学习,没有完整的前端知识体系,所以是大概的路线图,希望大家可以帮我一起修改完善。 大致的思路是:1.先打好基础,在学习框架。 基础方面主要涉及到的语言是Html、CSS、JavaScript,如果在这三个里面在挑基础的话应该就是Html、CSS了。 所以,2.基础知识里面先学Html,CSS。 Html\CSS学习计划 之前有过一个月的断断续续的学习,W3C的基础知识也看了,但是一到自己写页面还是不会。我就问自己为什么?我觉得可能的原因是,会HTML\CSS基础知识还不足以写出完整的静态页面,一定是我还缺少了某些知识和能力。 我觉得一个最重要的能力是:拿到设计图,首先是分析它,而不是直接写代码。 分析是一种能力,而HTML\CSS只是实现我们目标的工具,而掌握了HTML\CSS基础知识仅仅是掌握了如何使用这些工具,就像是我会搬砖,但并不知道怎么盖房子。 我认为这种分析能力是需要通过做大量完整的页面来锻炼的。 所以我大致的学习思路是:以最快的速度了解Html\CSS基础知识,然后至今开始做大量的完整的静态页面。下面会展开说我的学习计划以及一些资料。 1.快速掌握基本的HTML、CSS知识 网上有很多免费的HTML\CSS教程,但是为了快速,我推荐[marksheet],这个教程的好处是它先介绍了web方面的基础知识,让大家对web有个宏观上的了解

浅谈web前端性能优化

不打扰是莪最后的温柔 提交于 2020-03-17 19:53:18
前端性能优化: 一、尽可能减少前端http请求。   1、合并优化脚本文件和css文件。   2、同种类型的背景图片尽量放在一起,用css控制显示。 二、使用浏览器缓存。   如果能强制浏览器缓存在本地,将会降低页面产生的流量。 三、页面压缩。   压缩gzip,html,js,css,图片等。 四、html代码结构优化*   1、正确布置页面脚本。     1>、尽可能使用外部脚本和配置文件。     2>、js文件放到文档末尾。     3>、脚本放在文档前面,文档内容可能会被阻塞。放在末尾会出现就是未加载完用户就会触发行为。   2、减少dom结构的层级。   3、减少cookie的大小。   4、尽量用div取代table。     table会影响页面展示速度,应为只有table完全加载才会展示在页面上。 五、组件分为多个域,提高页面组件并行下载能力。 六、图片,脚本,数据预加载。 移动端的性能优化: 属于前端性能优化范畴,但移动性能优化在PC端同样适用。   1、使用css动画。应为css加载速度优于js。   2、适当使用touch事件代替click事件。   3、合理使用css3样式,减少使用css3渐变阴影等效果。   4、用transform开启硬件加速。   5、不滥用float,web字体。 ------------------华丽的分割线---------

前端命名规范

…衆ロ難τιáo~ 提交于 2020-03-17 17:20:24
网页主题部分命名 头部header 内容content 侧栏sidebar 栏目column 热点hot 新闻news 标志logo 导航条nav 主题main 左侧main-left 右侧main-right 底部footer 友情链接friendlink 加入我们joiinus 版权copyright 服务service 登录login 注册register 网页细节部分命名 主导航main-nav 子导航sub-nav 边导航side-nav 左导航leftside-nav 右导航rightside-nav 顶导航top-nav 菜单 菜单menu 子菜单submenu 其他 标题title 摘要summary 登录条loginbar 搜索search 标签页tab 广告banner 小技巧tips 图标icon 法律声明siteinfolegal 网站地图sitemap 工具条tool、toolbar 首页homepage 子页subpage 合作伙伴parter 帮助help 指南guide 滚动scroll 提示信息msg 投票vote 相关文章related 文章列表artlist 来源: https://www.cnblogs.com/seeding/p/12510912.html

准备转行web前端,该怎么从头学好?

心已入冬 提交于 2020-03-17 13:06:54
web前端的薪资是让大多数人所向往的,如果一个项目能胜任得很好的话那么就业便跟学历无关了,是真正看技术的一份工作。据统计:web前端开发工程师平均月薪10400。按照工作经验来统 计的计算的话,应届生工资4280,1-3年工资8770,3-5年工资12910,5-10年工资19730。从这薪资可以看出,程序员的确是一个高薪行业啊。 学习Web前端开发应该从基础的Html开始学起,学习Html还是比较简单的,主要是理解并记住一些常见标签的使用,在学习的初期应该多动手敲一下代码,这样会加深理解。在学习完Html语法之后,需要学习CSS,CSS的内容也并不复杂,CSS主要解决Html中样式设计的问题和复用的问题。接着应该系统的学习一下JavaScript,JavaScript语言自身还是具有一定难度的,而且JavaScript涵盖的内容比较多,需要一个较为系统的学习过程才能逐渐掌握。 HTML是构成网页的骨架,所有的信息显示都要靠HTML实现。一个网页可以没有CSS代码,没有JavaScript代码,但绝对不能没有HTML代码,HTML是web页面的核心。现在HTML发展到了HTML5,新版本增加了很多特性,使得HTML功能更加完善。 CSS在一个网页中起到的作用就像是一个化妆师,它可以让网页变的更加漂亮,更加易于浏览阅读。一个看脸的时代,CSS就是网页的化妆师

前后端分离基于Oauth2的SSO单点登录怎样做?

淺唱寂寞╮ 提交于 2020-03-17 12:55:11
一、说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼;本文主要介绍 跨域 间的 前后端分离 项目怎样实现单点登录,并且与 非前后端分离 的差异在那里?需要解决什么问题?。 前后端分离 的核心概念是后端仅返回前端所需的数据,不再渲染HTML页面,前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互 PS :关于 单点登录 主流的实现思路和原理请看文章《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定 》 二、实现差异 跨域 间的 前后端分离 项目也是基于共享统一授权服务(UAA)的 cookie 来实现 单点登录 的,但是与 非前后分离 不一样的是存在以下问题需要解决 没有过滤器/拦截器,需要在前端判断登录状态 需要自己实现 oauth2 的 授权码模式 交互逻辑 需要解决安全性问题, oauth2 的 clientSecret 参数放在前端不安全 三、实现架构 下面是 前后端分离 项目的三个角色(前端WEB工程、后端API工程、授权中心UAA)间进行 登录 / 单点登录 时的交互逻辑架构图 跨域的单点登录原理 在《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定 》中已经介绍过了这里就不展开说明了

前端下拉框select二级联动显示

岁酱吖の 提交于 2020-03-17 07:44:11
html部分 一级下拉框: <select id="gametype" onchange="changegame()"> <option value="">--游戏类型--</option> </select> <br> 二级下拉框: <select id="gamelist"> <option value="">--游戏名称--</option> </select> js部分 var game = new Array(); game["纸牌游戏"] = ["斗地主", "炸金花", "蜘蛛纸牌"]; game["棋类游戏"] = ["军旗", "象棋", "围棋"]; game["网络游戏"] = ["英雄联盟", "穿越火线", "QQ飞车"]; function gametypename() { var gametypes = document.getElementById("gametype"); // var gametypes = $("#gametype"); for (var i in game) { gametypes.add(new Option(i, i), null); } } function changegame() { var gtname = document.getElementById("gametype").value; // alert