第一章 渐进增强模型
1.1 渐进增强式网页开发模型的定义
意义:这是所有前端开发的根本基础。
功能:将html,css,js这三者的功能分离开。
焦点:强调内容,用户与易访问性
结构划分:最底层是结构层(html),中间是表现层(css),顶层是行为层(js)
优点:将三层分开,是为了让上层彼此依赖于下层,而且可以在某些场景下从上至下地移除每一层,同时又不损失网站的内容
1.1.1 历史
在2003年德克萨斯州奥斯丁市的西南偏南(south by southwest)艺术节.
1.1.2 目标
提升性能,浏览器将单独缓存每层文件,减少了多次混合于一起的文件重复渲染请求的问题
易访问性 由于html的代码简洁予以明确是所有人可以轻松获取到网站内容
代码可读性 重复使用的代码能在每层很容易找到,减少冗余
渐进增强与平稳退化 两个是=开发模型是从不同的角度去看待同一开发流程得出。渐进增强模型的关注重点是内容,平稳退化模型的重点是浏览器
1.2 结构层
结构层也就是html的页面
<!doctype html> <html> <head> <meta charset='utf-8'> <title>Great Home page</title> </head> <body> <div id='header'> <h1><a href='/'>Great Home Page</a></h1> </div> <div id='nav'> <ul> <li><a href='/about'>About</a></li> <li><a href='/articles'>Articles</a></li> <li><a href='/staff'>Staff</a></li> <li><a href='/contact'>Contact</a></li> </ul> </div> <div id='main'> hello world! </div> <div id='footer'> <p>© 2019 Awesome Site</p> </div> </body> </html>
1.2.1使用html5的新特性可以增加文档的信息量
<nav></nav>比<div class='nav'></div>语义要好得多
1.2.2html新引入的标签
header nav section article aside footer
以下代码将重构建之前的html网页结构
<!doctype html> <html> <head> <meta charset='utf-8'> <title>Great Home page</title> </head> <body> <header id='header' role='banner'> <h1><a href='/'>Great Home Page</a></h1> </header> <nav id='nav' role='navigation'> <ul> <li><a href='/about'>About</a></li> <li><a href='/articles'>Articles</a></li> <li><a href='/staff'>Staff</a></li> <li><a href='/contact'>Contact</a></li> </ul> </nav> <article id='main' role='main'> hello world! </article> <footer id='footer' role='contentinfo'> <p>© 2019 Awesome Site</p> </footer> </body> </html>
我们可以看到html5标准的新元素都附有一个名为‘role’的属性,这对文档中反复使用的html5元素极为有用
1.3 表现层
表现层即css.从灵活度看,表现层在渐进增强模型的三个层次中是最为重要的一层。如果css层掌握的好,那么对js的代码编写也有促进作用。从性能渲染上看,其他技术的渲染都比不上css的渲染尤其是js的代码,js的熟读是出了名的慢。
如果熟悉了css的全部功能,并将认识到表现层与行为层分离所带来的好处,那么可以直接将许多原来以js语言编写的复杂函数改写成更为高效的css代码。也可以说写好js代码的关键在于明白什么时候应该绕过js代码,直接以css来完成需求。
1.3.1 内联css
<nav id='nav' role='navigation' style='background:#c00;padding:10px;'> <ul style='list-style:none;margin:0;'> <li style='float:left;'><a href='/about'>About</a></li> <li style='float:left;'><a href='/articles'>Articles</a></li> <li style='float:left;'><a href='/staff'>Staff</a></li> <li style='float:left;'><a href='/contact'>Contact</a></li> </ul> </nav>
内联css是一style属性的形式书写的,并且直接附着在某个html元素之上。但这种css的效果仅仅局限在该元素的内部,既不能缓存也不能复用,所以我们尽量不要采用这种不明智的写法.
虽然说内联css有上述缺点,不过它还是很重要的,因为很多js程序在html中动态生产的就是这些style属性,况且如果你的js代码就是为了生产css代码而写,那么为何不直接使用css呢?这就是如果css层掌握的好,那么对js的代码编写也有促进作用.
1.3.2 链接外部样式表
设计页面时将css放在一个完全单独的文件之中,并在html文档中将其链接进来,这在很大程度上说是一种最为理想且最为适合的方式。
<head> <title>Greate Home PAge</title> <meta charset='utf-8'> <!--CSS--> <link rel='stylesheet' href='css/style.css'> </head>
尽管理论上可以将css代码分散放置在多份文件中,不过实际上还是建议大家把他们都放在一个文件里。在html文档中链入的资源(包括css文件,js文件及图像)都将产生http请求(http request),也就是说,浏览器在向用户呈现页面之前,必须先将链入的资源下载下来,这个过程每时每刻都在发生.但我们得尽可能地降低http请求的数量,因为过多的请求终究会影响网站的性能.
我们将
浙公网安备 33010602011771号