Skip to main content

积累的知识点

2009 年一直工作到现在开发和日常学习中得到的经验,已经被淘汰不值得一提的例如 一些 table frame 就不提了 就不会再提起了

WEB 标准以及 W3C 标准

标签闭合、标签⼩写、不乱嵌套、使⽤外链 CSSJS 、结构⾏为表现的分离。

xhtml 和 html

  • 功能上的差别 主要是 XHTML 可兼容各⼤浏览器、⼿机以 ,并且浏览器也能快速正确地编译⽹⻚。

  • 书写习惯的差别

  • XHTML 元素必须被正确地嵌套,闭合,区分⼤⼩写,⽂档必须拥有根元素。

Doctype

<!DOCTYPE> 声明位于⽂档中的最前⾯,处于 <html> 标签之前。告知浏览器的解析器, ⽤什么⽂档类型 规范来解析这个⽂档。 HTML5 不基于 SGML ,因此不需要对 DTD 进⾏引⽤,但是需要 doctype 来规范浏览器的⾏为。 ⽽ HTML4.01 基于 SGML ,所以需要对 DTD 进⾏引⽤,才能告知浏览器⽂档所使⽤的⽂档类型。

HTML4
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML5
<!DOCTYPE html>

viewport

<meta name="viewport" content="width=device-width,initial-scale=1.0,minimu

// width 设置viewport宽度,为⼀个正整数,或字符串‘device-width’
// device-width 设备宽度
// height 设置viewport⾼度,⼀般设置了宽度,会⾃动解析出⾼度,可以不⽤设置
// initial-scale 默认缩放⽐例(初始缩放⽐例),为⼀个数字,可以带⼩数
// minimum-scale 允许⽤户最⼩缩放⽐例,为⼀个数字,可以带⼩数
// maximum-scale 允许⽤户最⼤缩放⽐例,为⼀个数字,可以带⼩数
// user-scalable 是否允许⼿动缩放

举个 🌰
  • 怎样处理 移动端 1px 被 渲染成 2px 问题。

  • 局部处理

    • mate 标签中的 viewport 属性 , initial-scale 设置为 1;
    • rem 按照设计稿标准⾛,外加利⽤ transfrome 的 scale(0.5) 缩⼩⼀倍即可;
  • 全局处理

    • mate 标签中的 viewport 属性 , initial-scale 设置为 0.5;
    • rem 按照设计稿标准⾛即可

src 与 href

src ⽤于替换当前元素。 href ⽤于在当前⽂档和引⽤资源之间确⽴联系。

srcsource 的缩写,指向外部资源的位置,指向的内容将会嵌⼊到⽂档中当前标签所在位置;在请求 src 资源时会将其指向的资源下载并应⽤到⽂档内,例如 JS 脚本, img 图⽚和 frame 等元素

<script src="js.js"></script> 当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执⾏完毕,图⽚和框架等元素也如此,类似于将所指向资源嵌⼊当前标签内。 这也是为什么将 JS 脚本放在底部⽽不是头部。

  • hrefHypertext Reference 的缩写,指向⽹络资源所在位置,建⽴和当前元素(锚点)或当前⽂档(链接)之间的链接,如果我们在⽂档中添加。
  • <link href="style.css" rel="stylesheet" /> 那么浏览器会识别该⽂档为 CSS ⽂件,就会并⾏下载资源并且不会停⽌对当前⽂档的处理。这也是为什么建议使⽤ link ⽅式来加载 CSS ,⽽不是使⽤ @import ⽅式。

img 的 srcset 的作⽤

  • 可以设计响应式图⽚,我们可以使⽤两个新的属性 srcset 和 sizes 来提供更多额外的资源图像和提示,帮助浏览器选择 正确的⼀个资源。

  • srcset 定义了我们允许浏览器选择的图像集,以及每个图像的⼤⼩

  • sizes 定义了⼀组媒体条件(例如屏幕宽度)并且指明当某些媒体条件为真时,什么样的图⽚尺⼨是最佳选择。

  • 所以,有了这些属性,浏览器会:

    • 查看设备宽度
    • 检查 sizes 列表中哪个媒体条件是第⼀个为真
    • 查看给予该媒体查询的槽⼤⼩
    • 加载 srcset 列表中引⽤的最接近所选的槽⼤⼩的图像 srcset 提供了根据屏幕条件选取图⽚的能⼒
<img
src="clock-demo-thumb-200.png"
alt="Clock"
srcset="clock-demo-thumb-200.png 200w, clock-demo-thumb-400.png 400w"
sizes="(min-width: 600px) 200px, 50vw"
/>
srcset 相似的东西

<picture> 元素通过包含零或多个 <source> 元素和⼀个 <img> 元素来为不同的显示/设备场景提供图像版本。浏览器 会选择最匹配的⼦ <source> 元素,如果没有匹配的,就选择 <img> 元素的 src 属性中的 URL。 然后,所选图像呈现 在 <img> 元素占据的空间中。picture 同样可以通过不同设备来匹配不同的图像资源。

<picture>
<source
srcset="/media/examples/surfer-240-200.jpg"
media="(min-width: 800px)"
/>
<img src="/media/examples/painted-hand-298-332.jpg" />
</picture>

严格模式 与 混杂模式

  • 严格模式的排版和 JS 运作模式是以该浏览器⽀持的最⾼标准运⾏。
  • 混杂模式,⻚⾯以宽松的向后兼容的⽅式显示。模拟⽼式浏览器的⾏为以防⽌站点⽆法⼯作。DOCTYPE 不存在或格式不正确会导致⽂档以混杂模式呈现。

⾏内元素有哪些?块级元素有哪些? 空(void)元素有那些?⾏内元素和块级元素有什么区别?

  • ⾏内元素有: a b span img input select strong
  • 块级元素有: div ul ol li dl dt dd h1~h6 p
  • 空元素: <br> <hr> <img> <input> <link> <meta>
  • ⾏内元素不可以设置宽⾼,不独占⼀⾏
  • 块级元素可以设置宽⾼,独占⼀⾏

HTML 全局属性(global attribute)有哪些

  • class :为元素设置类标识
  • data-* : 为元素增加⾃定义属性
  • draggable : 设置元素是否可拖拽
  • id : 元素 id ,⽂档内唯⼀
  • lang : 元素内容的的语⾔
  • style : ⾏内 CSS 样式
  • title : 元素相关的建议信息

Canvas 和 SVG

  • svg 绘制出来的每⼀个图形的元素都是独⽴的 DOM 节点,能够⽅便的绑定事件或⽤来修改。 canvas 输出的是⼀整幅画布。
  • svg 输出的图形是⽮量图形,后期可以修改参数来⾃由放⼤缩⼩,不会失真和锯⻮。⽽ canvas 输出标量画布,就像⼀张图⽚⼀样,放⼤会失真或者锯⻮。

前端需要注意哪些 SEO

  1. 合理的 titledescriptionkeywords:搜索对着三项的权重逐个减⼩, title 值强调重点即可,重要关键词出现不要超过 2 次,⽽且要靠前,不同⻚⾯ title 要有所不 同; description 把⻚⾯内容⾼度概括,⻓度合适,不可过分堆砌关键词,不同⻚⾯ description 有所不同; keywords 列举出重要关键词即可。
  2. 语义化的 HTML 代码,符合 W3C 规范:语义化代码让搜索引擎容易理解⽹⻚。
  3. 重要内容 HTML 代码放在最前:搜索引擎抓取 HTML 顺序是从上到下,有的搜索引擎对抓。
  4. 取⻓度有限制,保证重要内容⼀定会被抓取。
  5. 重要内容不要⽤ js 输出:爬⾍不会执⾏ js 获取内容。
  6. 少⽤ iframe:搜索引擎不会抓取 iframe 中的内容。
  7. ⾮装饰性图⽚必须加 alt
  8. 提⾼⽹站速度:⽹站速度是搜索引擎排序的⼀个重要指标。

<img> 的 title 和 alt 有什么区别

  1. 通常当⿏标滑动到元素上的时候显示
  2. alt<img> 的特有属性,是图⽚内容的等价描述,⽤于图⽚⽆法加载时显示、读屏器阅读图⽚。可提图⽚⾼可访问性,除了纯装饰图⽚外都必须设置有意义的值,搜索引擎会 重点分析。

html5 有哪些新特性

  • HTML5 现在已经不是 SGML (标准通用标记语言)的⼦集,主要是关于图像,位置,存储,多任务等功能的增加

    • 绘画 canvas
    • ⽤于媒介回放的 videoaudio 元素
    • 本地离线存储 localStorage ⻓期存储数据,浏览器关闭后数据不丢失
    • sessionStorage 的数据在浏览器关闭后⾃动删除
    • 语意化更好的内容元素,⽐如 articlefooterheadernavsection
    • 表单控件, calendardatetimeemailurlsearch
    • 新的技术 webworkerwebsocketGeolocation
  • 移除的元素:

    • 纯表现的元素: basefontbigcenterfontsstrikettu
    • 对可⽤性产⽣负⾯影响的元素: frameframesetnoframes
  • ⽀持 HTML5 新标签:

    • IE8/IE7/IE6 ⽀持通过 document.createElement ⽅法产⽣的标签
    • 可以利⽤这⼀特性让这些浏览器⽀持 HTML5 新标签
    • 浏览器⽀持新标签后,还需要添加标签默认的样式

当然也可以直接使⽤成熟的框架、⽐如 html5shim

cookies,sessionStorage,Web SQL,IndexedDB 和 localStorage

  • cookie 是⽹站为了标示⽤户身份⽽储存在⽤户本地终端(Client Side)上的数据(通常经过加密)
  • cookie 数据始终在同源的 HTTP 请求中携带(即使不需要),记会在浏览器和服务器间来回传递
  • sessionStoragelocalStorage 不会⾃动把数据发给服务器,仅在本地保存
  • WebSQL2010年被 W3C 废弃的本地数据库数据存储⽅案,但是主流浏览器(⽕狐除外)都已经有了相关的实现, WebSQL 类似于 SQLite,是真正意义上的关系型数据库,⽤ sql 进⾏操作,当我们⽤ JavaScript 时要进⾏转换,较为繁琐。
  • IndexedDB: 是被正式纳⼊ HTML5 标准的数据库储存⽅案,它是 NoSQL 数据库,⽤键值对进⾏储存,可以进⾏快 速读取操作,⾮常适合 Wen 场景,同时⽤ JavaScript 进⾏操作会⾮常⽅便。
解决方案 1 localforage
  • 本地持久化最佳方案
npm
npm i localforage
yarn
yarn add localforage
pnpm
pnpm add localforage
解决方案 2 RxDB
  • 本地持久化最佳方案
npm
npm install rxdb rxjs --save
yarn
yarn add rxdb rxjs
pnpm
pnpm add rxdb rxjs

https://rxdb.info/

解决方案 3 watermelondb
  • 本地持久化最佳方案
npm
npm i @nozbe/watermelondb
yarn
yarn add @nozbe/watermelondb
pnpm
pnpm add @nozbe/watermelondb
npm
npm i -D @babel/plugin-proposal-decorators
npm i -D @babel/plugin-proposal-class-properties
npm i -D @babel/plugin-transform-runtime
yarn
yarn add -D @babel/plugin-proposal-decorators
yarn add -D @babel/plugin-proposal-class-properties
yarn add -D @babel/plugin-transform-runtime
pnpm
pnpm add -D @babel/plugin-proposal-decorators
pnpm add -D @babel/plugin-proposal-class-properties
pnpm add -D @babel/plugin-transform-runtime
.babelrc
{
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose": true }],
[
"@babel/plugin-transform-runtime",
{
"helpers": true,
"regenerator": true
}
]
]
}

https://nozbe.github.io/WatermelonDB/

  • 存储⼤⼩:

    - `cookie` 数据⼤⼩不能超过 `4k`
    - `sessionStorage` 和 `localStorage` 虽然也有存储⼤⼩的限制,但⽐ `cookie` ⼤得多,可以达到 `5M` 或更⼤
  • 有期时间:

    • localStorage 存储持久数据,浏览器关闭后数据不丢失除⾮主动删除数据
    • sessionStorage 数据在当前浏览器窗⼝关闭后⾃动删除
    • cookie 设置的 cookie 过期时间之前⼀直有效,即使窗⼝或浏览器关闭