當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
(九)JS-WEB-API(DOM、BOM、事件、Ajax、存储)【每个工程师必须熟练掌握的技能】
生活随笔
收集整理的這篇文章主要介紹了
(九)JS-WEB-API(DOM、BOM、事件、Ajax、存储)【每个工程师必须熟练掌握的技能】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
JS-WEB-API
- 提問
- DOM
- BOM
- 事件
- Ajax
- 存儲
- 從JS基礎(chǔ)知識到JS-WEB-API
- JS基礎(chǔ)知識
- JS-WEB-API
- DOM(Document Object Model)
- DOM本質(zhì)
- DOM節(jié)點操作
- DOM結(jié)構(gòu)操作
- DOM性能
- BOM(Browser Object Model)
- 事件
- Ajax
- XMLHttpRequest
- 狀態(tài)碼
- xhr.readyState
- xhr.status
- 跨域:同源策略,跨域解決方案
- 手寫一個簡易的Ajax
- 實際項目中ajax的常用插件
- 存儲
- 描述cookie localStorage sessionStorage的區(qū)別
提問
DOM
- DOM是哪種數(shù)據(jù)結(jié)構(gòu)
樹(DOM樹) - DOM操作的常用API
DOM節(jié)點操作、DOM結(jié)構(gòu)操作 - attr和property的區(qū)別
- 一次性插入多個DOM節(jié)點,考慮性能
BOM
- 如何識別瀏覽器的類型
- 分析拆解url的各個部分
事件
- 編寫一個通用的事件監(jiān)聽函數(shù)
- 描述事件冒泡的流程
- 無限下拉的圖片列表,如何監(jiān)聽每個圖片的點擊
Ajax
- 手寫一個簡易的ajax
- 跨域的常用實現(xiàn)方式
存儲
- 描述cookie localStorage sessionStorage的區(qū)別
從JS基礎(chǔ)知識到JS-WEB-API
- JS基礎(chǔ)知識,規(guī)定語法(ECMA 262標準)
- JS-WEB-API,網(wǎng)頁操作的API(W3C標準)
- 前者是后者的基礎(chǔ),兩者結(jié)合才能真正實際應(yīng)用
JS基礎(chǔ)知識
- 變量的類型和計算
- 原型和原型鏈
- 作用域和閉包
- 異步
JS-WEB-API
- DOM
- BOM
- 事件綁定
- ajax
- 存儲
DOM(Document Object Model)
- Vue和React框架應(yīng)用廣泛,封裝了DOM操作
- 但DOM操作一直都會是前端工程師的基礎(chǔ),必備知識
- 只會Vue不懂DOM操作的前端程序員,不會長久
DOM本質(zhì)
html語言,html文件解析出來的一棵樹
DOM節(jié)點操作
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>dom 演示</title><style>.container {border: 1px solid #ccc;}.red {color: red;}</style></head><body><div id="div1" class="container"><p id="p1">一段文字 1</p><p>一段文字 2</p><p>一段文字 3</p></div><div id="div2"><img src="https://img3.mukewang.com/5a9fc8070001a82402060220-100-100.jpg"/></div><ul id="list"></ul><script src="./dom-3.js"></script></body> </html>- 獲取DOM節(jié)點
- attribute
通過修改或者獲取js的屬性來改變頁面樣式、頁面渲染結(jié)構(gòu)的一種形式,Dom結(jié)構(gòu)js變量的修改
- property
修改標簽的屬性,Dom結(jié)構(gòu)節(jié)點屬性修改
- 總結(jié)
DOM結(jié)構(gòu)操作
- 新增/插入節(jié)點
- 獲取子元素列表,獲取父元素
- 刪除子元素
DOM性能
- DOM操作非常“昂貴”,避免頻繁的DOM操作
- 對DOM查詢做緩存
- 將頻繁操作改為一次性操作,一次性插入多個節(jié)點,考慮性能
BOM(Browser Object Model)
- navigator(瀏覽器信息)
- screen(屏幕信息,例如寬度高度等)
- location(地址信息)
- history(前進后退信息)
事件
- 事件綁定
- 事件冒泡
從下向上進行冒泡
- 事件代理
代碼簡潔、減少瀏覽器內(nèi)存占用、但是不要濫用
Ajax
XMLHttpRequest
//get請求 const xhr = new XMLHttpRequest() xhr.open('GET', '/data/test.json', true) //true為異步,false為同步 xhr.onreadystatechange = function () {//這里的函數(shù)異步執(zhí)行if (xhr.readyState === 4) {if (xhr.status === 200) {// console.log(// JSON.parse(xhr.responseText)// )alert(xhr.responseText)} else if (xhr.status === 404) {console.log('404 not found')}} } xhr.send(null)//post請求 const xhr = new XMLHttpRequest() xhr.open('POST', '/login', true) //true為異步,false為同步 xhr.onreadystatechange = function () {//這里的函數(shù)異步執(zhí)行if (xhr.readyState === 4) {if (xhr.status === 200) {// console.log(// JSON.parse(xhr.responseText)// )alert(xhr.responseText)} else if (xhr.status === 404) {console.log('404 not found')}} } const postData = {name:"zhangsan",passsword:"xxx" ] xhr.send(JSON.stringify(postData))狀態(tài)碼
xhr.readyState
- 0-(未初始化)還沒有調(diào)用send()方法
- 1-(載入)已調(diào)用send()方法,正在發(fā)送請求
- 2-(載入完成)send()方法執(zhí)行完成,已經(jīng)接收到全部響應(yīng)內(nèi)容
- 3-(交互)正在解析響應(yīng)內(nèi)容
- 4-(完成)響應(yīng)內(nèi)容解析完成,可以再客戶端調(diào)用
xhr.status
- 2xx-表示成功處理請求,如200
- 3xx-需要重定向,瀏覽器直接跳轉(zhuǎn),如301,302,304
- 4xx-客戶端請求錯誤,如404,403
- 5xx-服務(wù)器端錯誤
跨域:同源策略,跨域解決方案
- 什么是跨域(同源策略)
- JSONP
jsonp.html
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>jsonp 演示</title></head><body><p>一段文字 1</p><script>window.abc = function (data) {//這是我們跨域得到的信息console.log(data)//{ name: 'xxx' }}</script><script src="http://localhost:8002/jsonp.js?username=xxx&callback=abc"></script></body> </html>jsonp.js
abc({ name: 'xxx' } ) //jQuery實現(xiàn)jsonp $.ajax({url:'http://localhost:8882/x-origin.json',dataType:"jsonp",jsonpCallback:"callback",success:function(data){console.log(data);} });- CORS(服務(wù)端支持)- 服務(wù)器設(shè)置http header
手寫一個簡易的Ajax
function ajax(url,successFn) {const xhr = new XMLHttpRequest()xhr.open('GET', url, true)xhr.onreadystatechange = function () {if (xhr.readyState === 4) {if (xhr.status === 200) {successFn(xhr.responseText)}}}xhr.send(null) } function ajax(url) {const p = new Promise((resolve, reject) => {const xhr = new XMLHttpRequest()xhr.open('GET', url, true)xhr.onreadystatechange = function () {if (xhr.readyState === 4) {if (xhr.status === 200) {resolve(JSON.parse(xhr.responseText))} else if (xhr.status === 404 || xhr.status === 500) {reject(new Error('404 not found'))}}}xhr.send(null)})return p }const url = '/data/test.json' ajax(url) .then(res => console.log(res)) .catch(err => console.error(err))實際項目中ajax的常用插件
- $.ajax
- fetch
- axios
存儲
- cookie
- localStorage和sessionStorage
描述cookie localStorage sessionStorage的區(qū)別
- 容量
- API易用性
- 是否跟隨http請求發(fā)送出去
總結(jié)
以上是生活随笔為你收集整理的(九)JS-WEB-API(DOM、BOM、事件、Ajax、存储)【每个工程师必须熟练掌握的技能】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ai表格怎么做3d扭曲效果? AI矩形网
- 下一篇: c4d费马螺旋曲线怎么做? c4d柱体排