介绍


最近开始刷一些书和题,此系列是介绍在读Web最佳实践的一些收获和体会。

web前端发展现状
  • 存在问题:

    • 代码组织混乱
    • 代码格式的问题突出
    • 页面布局随意
    • 网站整体性能差,没有意识到应用诸如缓存,动态加载,脚本压缩,图片压缩等提高性能技术
  • 推荐做法:

    • 压缩样式表和脚本文件
    • 减少HTTP请求次数
    • 简洁和符合W3C标准的HTML和CSS代码能减少浏览器解析的时间,加快渲染过程
    • 页面请求数量越少,相对页面的加载速度更快
    • 在JS代码中选择性能更好的实现方案,如延迟加载,动态加载等技术;
  • 延迟加载

    <script type=”text/javascript” src=”" id=”my”></script>
    <script type=”text/javascript”>
    setTimeout(“document.getElementById(‘my').src='include/php100.php'; “,3000);//延时3秒
    </script>
  • 最后加载

    • 引入外部js脚本文件时,如果放入html的head中,则页面加载前该js脚本就会被加载入页面,而放入body中,则会按照页面从上倒下的加载顺序来运行javascript的代码,所以可以把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度
  • 动态加载


    <scrīpt src='' id="s1"></scrīpt>
    <scrīpt language="javascrīpt">
    s1.src="test.js"
    </scrīpt>
前端代码重构
  • 删除无用代码,精简代码(不起作用的CSS样式和废弃的JavaScript函数)
  • 前端代码规范化,把CSS代码放到独立的文件中,在JS定义局部变量,把部分全局变量改变成局部变量
  • 前端代码模块化,引入面向对象的思想来重构JavaScript代码,进一步明确公有接口和私有接口
  • 提高页面性能:

    • 将部分不影响首页展示的JS文件延迟到页面的加载后加载
    • 删除页面中初始隐藏的区域,改为通过JS按需动态生成
    • 页面中的部分图片延迟加载
    • 调整CSS和JS文件引用顺序,即CSS在前,JS在后
    • 给静态文件设置缓存,使用CSS Sprite,合并背景图
    • 合并和压缩发布后的CSS和JS代码模块
  • 前端重构最佳实践

    • 重构前一定要预测风险,最好先完善自动化测试代码
    • 重构的目的和范围要明确,提高代码的可维护性,可读性和性能
    • 最好先易后难,循序渐进。先修改诸如命名,格式等不涉及具体逻辑的内容
    • 重构过程中要持续测试,在多个浏览器测试,确保重构的部分功能正确。切记大量重构后再进行测试,因为大量重构后基本很难记得重构的逻辑,也可能遗漏部分测试用例
    • 性能提升,先进行检测网站的整体性能并量化,找出性能瓶颈。重构过程中要持续监控性能,并进行对比
前端框架的使用
  • 项目需求

    • 调查项目是否需要AJAX操作
    • 是否需要模块化
    • 数据传输格式JSON或者XML
    • 需要支持的浏览器
    • 移动还是普通网站
    • 需要的UI模块(模态窗口,滑块控件,进度条,提示框,分割框,幻灯显示,自动填充)
  • 项目的特点
  • 框架的特点
代码质量
  • 编写高质量,标准的HTML(标准校验工具,ESLint, Flow, JSDoc, ts)
  • 明确浏览器支持范围

    • Chrome和Safari IE Tester(IE兼容测试工具
  • 避免浏览器兼容性的问题

    • 先考虑更改方案,使用没有兼容问题的代码
    • 考虑如何兼容的问题
    • 兼容IE,使用IE特有的条件表达式(hack)
    • 让兼容的代码独立,提高代码的可维护性
  • HTML5新特性

    • 新标签的兼容,CSS3的兼容,新增的API(使用html5shiv框架)
    • CSS3本身不支持,会直接忽略
    • 新增加的接口的使用,必须添加条件判断(Modernizr)
    • 多看Can I use
web性能分析
  • YSlow,pagespeed

    • 基于不同的规则评定网站整体性能评分
    • 给出提高网页性能的建议
    • 统计页面加载的组件
    • 页面的统计信息视图
    • 相关性能分析工具集:Smush.it
  • Chrome开发工具

    • Network中可以查看各资源请求和下载所用的时间
    • Timeline可以查看网页渲染和交互过程中个步骤所花费的时间,从资源到JS的解析执行,样式的应用和绘制
    • Profiles中可以查看网页的CPU及内存占有情况报告
    • Audits中提供了各种资源和配置优化的建议和未使用CSS规则的列表
  • 加快代码和资源文件传输的方式

    • CDN分发
    • 缓存(meta)
    • 压缩代码和资源文件(最优)
    • Gzip算法(压缩,header可以检查是否开启)
    • JS压缩(UglifyJS压缩和优化,YUI Compressor 仅压缩,Closure Compiler压缩和优化)
    • CSS(CSS Compressor,YUI Compressor)
    • HTML(HtmlCompressor使用时仔细调查和测试,避免压缩工具和破坏)
    • 图片资源压缩(TinyPNG,JPEGmini,ImageOptim)

Web最佳实践阅读总结(1)的更多相关文章

  1. Web最佳实践阅读总结(2)

    代码符合标准 标准的页面会保证正确的渲染 页面容易被搜索引擎搜索,提高搜索排名(SEO) 提高网站的易用性 网页更好维护和扩展(Validator,HTML Validator 属于Firefox插件 ...

  2. PHP-PHP核心技术与最佳实践阅读

    1.对象的实质: 对象就是数据, 对象本身不包含方法, 但是对象有一个"指针"指向一个类, 这个类里可以有方法 2.反射是指在PHP运行状态中, 扩展分析PHP程序, 导出或者提取 ...

  3. Web 前端最佳实践

    Web 最佳实践   前端   选择器 尽量使用ID选择器 基于Id的选择器:先使用ID选择器定位,然后再使用find方法精确查找   // Fast: $( "#container div ...

  4. 【转】优化Web程序的最佳实践

    自动排版有点乱,看着蛋疼,建议下载中文PDF版阅读或阅读英文原文. Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践.他们为此进行了 一系列的实验.开发了各 ...

  5. Web前端优化最佳实践及工具集锦

    Web前端优化最佳实践及工具集锦 发表于2013-09-23 19:47| 21315次阅读| 来源Googe & Yahoo| 118 条评论| 作者王果 编译 Web优化Google雅虎P ...

  6. 【Web前端开发最佳实践系列】前端代码推荐和建议

    一.常用的前端文件的组织结构: 1.js (放置JavaScript代码) lib(放置框架JavaScript文件) custom.js 2.css(放置CSS样式代码) lib(放置框架CSS文件 ...

  7. 《modern-php》 - 阅读笔记 - 最佳实践

    过滤.验证和转义数据 过滤数据 不要相信任何外部数据! 常见的有以下几种数据需要过滤:HTML,SQL查询,用户提交的信息(邮件地址.电话号码.身份证) HTML htmlentities() HTM ...

  8. JavaScript Web 应用最佳实践分析

    [编者按]本文作者为 Mathias Schäfer,旨在回顾在客户端大量使用JavaScript 的最佳 Web应用实践.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 对笔者来说,Jav ...

  9. 【社区公益】送《Web前端开发最佳实践》给需要的人

    算起来至今,我进入软件开发行业已经有11年之久.从最初的研究人工智能,到后来的Web开发,控件开发,直到现在纯粹的Web前端开发.虽然没有大的作品问世,但也是勤勤恳恳,踏实做事,低调做人.从来不吹牛逼 ...

随机推荐

  1. JZ-002-替换空格

    替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. ...

  2. 【阅读SpringMVC源码】手把手带你debug验证SpringMVC执行流程

    ✿ 阅读源码思路: 先跳过非重点,深入每个方法,进入的时候可以把整个可以理一下方法的执行步骤理一下,也可以,理到某一步,继续深入,回来后,接着理清除下面的步骤. ✿ 阅读本文的准备工作,预习一下Spr ...

  3. OA办公软件篇(一)—组织架构

    OA办公软件篇(一)-组织架构 背景 作用 迭代历程 具体实现 写在最后   背景 在说组织架构之前,我们先来说说OA本身. 百度百科解释OA为:办公自动化(Office Automation,简称O ...

  4. 编写Python代码的注意事项

    1.标识符 标识符是定义的名称,包括类名.变量名等等 标识符的大小写是敏感的,且第一个字符必须是字母表中的字母或"_" 在python3中,中文可被用作变量名 不能使用Python ...

  5. netty系列之:netty中各不同种类的channel详解

    目录 简介 ServerChannel和它的类型 Epoll和Kqueue AbstractServerChannel ServerSocketChannel ServerDomainSocketCh ...

  6. CF1428B题解

    打比赛的时候sb了,用了一个似乎原本可以不用的东西来找环... 首先,根据题意,我们可以连成一张图,而蛇能不能回到自己的家, 只需要在一个环上就行了. 问题是怎么找环,我用了 Tarjan... 具体 ...

  7. MySQL8.0降级安装5.7

    本文旨在自我学习使用,如有任何疑问请及时联系博主 前言 基于OpenHarmony的FA数字管家服务端 默认情况下,Ubuntu20.04安装MySQL的版本为8.0.但8.0更加严格的加密规则,使得 ...

  8. (acwing蓝桥杯c++AB组)1.2 递推

    1.2 递推与递归 文章目录 1.2 递推与递归 位运算相关知识补充 pair与vector相关知识补充 题目目录与网址链接 下面的讲解主要针对这道题目的题解AcWing 116. 飞行员兄弟 - A ...

  9. 两个宝藏|关于我在github上冲浪时的一个小技巧。

    你好呀,我是歪歪. 前几天在 github 上冲浪的时候,发现了两个宝藏东西. 我也不藏着掖着了,拿出来给大家分享一下. 这两个宝藏是关于 arthas 和 SOFARegistry 的,这两个东西都 ...

  10. ArcgisServer在Linux系统上更新许可

    以下是引用Arcgis知乎的: [解决办法]:步骤1,删除旧许可.具体方法如下:切换至 arcgis server 账户,导航至[ArcGIS for Server 安装目录]/framework/r ...