关于http:DOMHTTPTS

DOM

事件委托

上代码:

ul.addEventListener('click', function(e){
     if(e.target.tagName.toLowerCase() === 'li'){
         fn() // 执行某个函数
     }
 })

用mouse事件写一个可拖拽的div

//HTML
<div id="xxx"></div>

//JS
var dragging = false
var position = null

xxx.addEventListener('mousedown',function(e){
  dragging = true
  position = [e.clientX, e.clientY]
})


document.addEventListener('mousemove', function(e){
  if(dragging === false){return}
  console.log('hi')
  const x = e.clientX
  const y = e.clientY
  const deltaX = x - position[0]
  const deltaY = y - position[1]
  const left = parseInt(xxx.style.left || 0)
  const top = parseInt(xxx.style.top || 0)
  xxx.style.left = left + deltaX + 'px'
  xxx.style.top = top + deltaY + 'px'
  position = [x, y]
})
document.addEventListener('mouseup', function(e){
  dragging = false
})

HTTP

状态码

2xx 示意胜利
3xx 示意须要进一步操作
4xx 示意浏览器方面出错
5xx 示意服务器方面出错

GET和POST的区别

  • GET在浏览器回退时是有害的,而POST会再次提交申请。
  • GET产生的URL地址能够被Bookmark,而POST不能够。
  • GET申请会被浏览器被动cache,而POST不会,除非手动设置。
  • GET申请只能进行url编码,而POST反对多种编码方式。
  • GET申请参数会被残缺保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET申请在URL中传送的参数是有长度限度的,而POST么有。
  • 对参数的数据类型,GET只承受ASCII字符,而POST没有限度。
  • GET比POST更不平安,因为参数间接裸露在URL上,所以不能用来传递敏感信息。
  • GET参数通过URL传递,POST放在Request body中。

Cookie V.S. LocalStorage V.S. SessionStorage V.S. Session

  • Cookie V.S. LocalStorage
  1. 次要区别是 Cookie 会被发送到服务器,而 LocalStorage 不会
  2. Cookie 个别最大 4k,LocalStorage 能够用 5Mb 甚至 10Mb(各浏览器不同)
  • LocalStorage V.S. SessionStorage
  1. LocalStorage 个别不会主动过期(除非用户手动革除),而 SessionStorage 在回话完结时过期(如敞开浏览器)
  • Cookie V.S. Session
  1. Cookie 存在浏览器的文件里,Session 存在服务器的文件里
  2. Session 是基于 Cookie 实现的,具体做法就是把 SessionID 存在 Cookie 里

TS

never类型是什么?

举个具体点的例子,当你有一个 union type:

interface Foo {
  type: 'foo'
}

interface Bar {
  type: 'bar'
}

type All = Foo | Bar

在 switch 当中判断 type,TS 是能够收窄类型的 (discriminated union):

function handleValue(val: All) {
  switch (val.type) {
    case 'foo':
      // 这里 val 被收窄为 foo
      break
    case 'bar':
      // val 在这里是 bar
      break
    default:
      // val 在这里是 never
      const exhaustiveCheck: never = val
      break
  }
}

留神在 default 外面咱们把被收窄为 never 的 val 赋值给一个显式申明为 never 的变量。如果所有逻辑正确,那么这里应该可能编译通过。然而如果起初有一天你的共事改了 All 的类型:type All = Foo | Bar | Baz
然而他遗记了在 handleValue 外面加上针对 Baz 的解决逻辑,这个时候在 default branch 外面 val 会被收窄为 Baz,导致无奈赋值给 never,产生一个编译谬误。所以通过这个方法,你能够确保 handleValue 总是穷尽 (exhaust) 了所有 All 的可能类型。

TS比起JS有什么长处?

提供了类型束缚,因而更可控、更容易重构、更适宜大型项目、更容易保护。

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据