零碎知识点
HTML5(上一个版本是HTML4.01)
- 互联网使用URL统一资源定位符标识分布在因特网上的各种文档
- HTML5支持HTML4中的所有表单控件
标签
空元素:不需要闭合的标签
常见的空元素:
1 | <img> <input> <embed> <link> <area> <base> <br> <col> <command> <hr> <keygen> <meta> <param> <source> <track> <wbr> |
- 常见标签:
1 | textarea: |
- head标签中必不可少的是
<meta>
和<title>
- 一个页面中只能有一个title元素。若存在main元素,也只能有一个
- HTML5中的属性名对大小写不敏感,一般是小写
- H5中可以通过data-*来自定义属性
1 | <ul> |
列表
1 | <!-- 自定义列表 --> |
Canvas与SVG
1 | SVG知识点: |
DHTML
1 | DHTML知识点: |
readonly与disabled区别
1 | - readonly=true时,页面上无法修改内容,内容会被提交,但是可以通过JS修改,可以获得焦点 |
事件调用在html和react中的区别
1 | - 在HTML中,调用已定义的函数:onclick="add()" |
数据存储方式
1 | 1. WebStorage:包括localStorage和sessionStorage |
全局属性
1 | 也就是所有标签都可以使用的属性,包括id\style\class等 |
标签
1 | - p标签中不能嵌套某些标签,例如<li>\<div>。文本类的块级元素不能嵌套块级元素。 |
兼容
1 | - display:inline 兼容目前所有的浏览器 |
clientWidth
1 | Element.clientWidth表示元素的内部宽度,包括内边距,不包括边框和外边距,即clientWidth = width+左右padding |
微信公众号相关H5页面的测试
1 | 概念: |
元数据(meta content)包括
1 | base\link\meta\noscript\style\script\title |
input标签
- multiple属性允许input当type为file时上传多个文件
- type的取值可以是
image checkbox button file password radio reset submit text hidden date data-time email
等 - 新属性:
search number tel
- 输入类型data用于选取年、月、日;输入类型month选取年、月;输入类型week选取年、周;输入类型time用于选取时间(小时和分钟)
select标签
- multiple属性对于select来说是设置多选
网页数值单位
- 相对单位(不依赖其他元素大小):
em ex ch rem vw vh vmax vmin
- 绝对单位(依赖其他元素大小):
cm mm q in pt pc px
table标签
- 常见元素:tr\td\th
- 更复杂的元素:caption\col\colgroup\thead\tfoot\tbody
属性
1 | hidden |
控件包含复选框、组合框、编辑框、列表框
Form表单
获取表单中的文本
1 | <!-- 目标: --> |
1 | // 代码 |
enctype属性:规定如何对表单数据进行编码
1 | - application/x-www-form-urlencoded:默认编码方式,在发送前编码所有字符 |
action属性:规定向何处发送表单
1 | 可能的值: |
method属性只有两个选项:get和post(其他方法是ajax里面的)
HTML5中新增表单元素属性是
1 | placeholder |
元素优先级
在HTML中,帧元素(frameset)的优先级最高,表单元素比非表单元素的优先级要高。
CSS
- CSS加载不会阻塞DOM树的解析;CSS加载会阻塞DOM树的渲染;CSS加载会阻塞后面JS语句的执行
- 去掉超文本链接的下划线:text-decoration: none
- 去掉ul\li前面黑点:list-style-type: none
- 将ul \ li前的小黑点改成正方形:list-style-type: square
属性
- text-transform: capitalize;首字母大写
- text-transform: lowercase;所有字母小写
- text-transform: uppercase;所有字母大写
- font-weight: bold;字体为粗体
锚伪类:用来表示链接的不同状态的伪类
a:link
:未访问的链接a:visited
:已访问的链接a:hover
:鼠标移动到链接上a:active
:选定的链接
属性方向
- margin:20 20 30 40;(上右下左)
- text-shadow属性中的四个值(length、length、length、color)代表的含义:阴影离开文字的横方向距离、阴影离开文字的纵方向距离、阴影的模糊半径、阴影的颜色
CSS使用服务器端的字体
@font-face{font-family:dreamy;font-weight:bold;src:url(http:www.xx.com/font.eot)}
@keyframes规则用于创建动画
JQuery
- $(selector).fadeIn():使用淡入效果显示元素
- $(selector).fadeOut():使用淡入效果隐藏元素
- $(selector).fadeToggle():使用淡入效果显示/隐藏元素来回切换
- $(selector).fadeTo():使元素的透明度逐渐变化到指定值
- $(selector).slideUp():隐藏
- $(selector).slideDown():显示
- $().children():沿着DOM树查询第一个直接子元素
- $().html():返回DOM结构,返回页面源码
- $().contents():能拿到所有子元素
- $().find():查询某个元素
- $().text():返回纯文本
- $().attr():返回元素属性值
- $().val():返回设置或表单字段的值
寻找元素
- siblings:同辈元素
- find:后辈元素
- eq(index):第index个元素
- next:下一个元素
JS
在JS中,0可以作为分母,0/0的结果为NaN,不会抛异常
rejected状态的promise需要一个捕获异常的回调函数,否则会报错
1
2
3
4//报错
Promise.reject(123).finally(a=>console.log(a));
//正确的写法
Promise.reject(123).catch(err=>err).finally(a=>console.log(a));在JS中,当一般变量、函数、函数参数重名时,它们的优先级:已初始化的一般参数>函数>函数参数>未初始化的一般参数
JSON与XML
XML特点
- 只有唯一的根元素
- 是标记语言,不是编程语言
- 格式是严格要求,每个元素的开闭必须完整,不允许交叉开闭
- 大小写敏感
XML优点
- 格式统一,符合标准
- 容易与其他系统进行远程交互,数据传输比较方便
XML缺点
- XML文件庞大,文件格式复杂,传输占带宽
- 服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护
- 客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码
- 服务器端和客户端解析XML需要花费较多资源和时间
JSON优点
- 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小,传输速度比XML快
- 易于解析,JS可以通过eval_r()进行读取
- 支持多种语言,包括java、python等,便于服务器端解析
- JSON格式能够直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,易于维护
JSON缺点
- 没有XML格式那么使用广泛,没有XML通用性高
- JSON格式在web应用中的推广还属于初级阶段
JSON与XML的区别
- JSON是javascript object notation;XML是可扩展的标记语言。
- JSON基于JS;XML源于SGML。
- JSON是一种表示对象的方式,XML是一种标记语言,使用标记结构来表示数据项。但是JSON比XML更能表达结构化数据。
- JSON不提供对命名空间的支持,XML支持命名空间。
- JSON支持数组,XML不支持数组
- XML文件相对难以理解和阅读,JSON文件非常易于阅读
- XML对数据的类型描述表达比JSON更丰富
- JSON不使用结束标签,XML有开始和结束标签
- JSON安全性较低,XML安全性比JSON高
- JSON不支持注释,XML支持
- JSON仅支持UTF-8编码,XML支持各种注释
- 存在一些数据库,直接支持XML或JSON数据的操作,例如mongodb,postgresql
React
Hook
- hook还无法覆盖class的所有使用场景,不常用的getSnapshotBeforeUpdate、getDerivedStateFromError和componentDidCatch生命周期还没有Hook的等价写法
useEffect
- 模拟三个生命周期(挂载、更新、卸载前)。挂载componentDidMount:第二个参数为空,或空数组。更新componentDidUpdate:第二个参数为需要观察的依赖,依赖变化则执行副作用函数。卸载前componentWillUnmount:在useEffect的回调函数中返回一个函数。
useDebugValue
- 可以在react开发者工具中显示自定义hook的标签
Context
- context提供了一种在组件之间共享值的方式,而不必显式地通过组件树逐层传递props
- context的设计目的是为了共享那些对于一个组件树而言是全局的数据,组件树中的所有组件都能访问到这些数据,也能访问到后续数据的更新
- 但是context会使组件的复用性变差
redux
- 单一数据源
- state只读
- 使用纯函数来执行修改
StrictMode
- 检测过时的context API
- 识别不安全的生命周期
- 检测意外的副作用
- 仅在开发环境生效
错误边界
1 | 若class组件定义了getDerivedStateFromError()或componentDidCatch()这两个生命周期方法中的任意一个,那么它就变成了错误边界。抛出错误后,需要使用getDerivedStateFromError()渲染备用UI,使用componentDidCatch()打印错误信息 |
lazy和suspense
1 | const OtherComponent = React.lazy(()=>import('./OtherComponent')); |
- React.lazy()允许定义一个动态加载的组件
- lazy懒加载组件,经常和suspense组件搭配使用,常用于渲染异步组件。suspense可以做加载动画,代码拆分,用于加载完之前先渲染一个加载动画或者占位符
路由组件
- history的属性值有:createMemoryHistory、hashHistory、browserHistory
ReactDOM.render()
- ReactDom.render()不会修改容器节点,只会修改容器节点的子节点。可以在不覆盖现有子节点的情况下,将组件插入已有的DOM节点中。会返回对根组件ReactComponent实例的引用。
JSX
- JSX代码最终会被转换成使用React.createElement()方法生成的react元素
生命周期
- componentWillUnmount()中可以执行:清除timer、取消网络请求、清除在componentDidMount()中创建的订阅等操作,但不能调用setState,因为该组件将永远不会重新渲染。
剪贴板事件
- onCopy、onCut、onPaste
refs
- 适合的使用场景:1)管理焦点,文本选择或媒体播放 2)触发强制动画 3)集成第三方DOM库
React.findDOMNode
- 组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM 。只有当它插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做 DOM diff ,它可以极大提高网页的性能表现。但是,有时需要从组件获取真实 DOM 的节点,这时就要用到 React.findDOMNode 方法。
- 只在已挂载的组件上可用。如果尝试调用未挂载的组件,则将引发异常。
- 在严格模式下,使用此方法会报警告。
ReactDOM.createPortal(child, container)
- 可以将子节点渲染到存在于父组件以外的DOM节点上
- 从portal内部触发的事件会一直冒泡至含React树的祖先
- portal可以被放置在DOM树种的任何地方,其行为和普通的React子节点行为一致
注释
- html:
<!-- -->
- CSS: /* */
- js: //
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cheyennee!