整理中高級前端系列,能夠看成面試複習,也能夠看成實戰來看,分享一下 方便本身,方便他人。有不足的地方歡迎評論~javascript
第一趴:css進階css
第二趴:js進階html
第四趴:工程化vue
自頂向下稱爲「事件捕獲」自下向上稱爲「事件冒泡」java
DOM2事件規範規定,一個標準的事件流分爲三個階段。node
document.getElementsByTagName('p')[0].onclick = function(event) {
console.log(event);
alert('hello event');
};
document.getElementsByTagName('p')[0].addEventListener('click',
function(event) {
console.log(event);
alert('hello event');
});
複製代碼
event 對象下的屬性webpack
event 對象下的⽅法ios
<ul id="ul">
<p>1234</p>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
document.getElementById('ul').onclick = function(event) {
var target = event.target;
if (target.nodeName.toLowerCase() === 'li') {
alert(target.innerHTML);
}
}
複製代碼
它的大小限制爲4KB左右,衆所周知,cookie是鍵值對的形式即key=value的格式。 咱們來封裝一下,操做更方便:nginx
const userInfo = 'userInfo'
// 添加用戶信息
export function setUserInfo (data) {
return history.setItem(userInfo, JSON.stringify(index))
}
// 獲取用戶信息
export function getUserInfo () {
return JSON.parse(history.getItem(userInfo)) ? JSON.parse(history.getItem(userInfo)) : false
}
複製代碼
限制有5M超大存儲
400 bad request,請求報文存在語法錯誤 ✨
401 unauthorized,表示發送的請求須要有經過 HTTP 認證的認證信息 ✨
403 forbidden,表示對請求資源的訪問被服務器拒絕 ✨
404 not found,表示在服務器上沒有找到請求的資源 ✨
使用數字簽名就是用CA自帶的HASH算法對證書的內容進行HASH獲得一個摘要,再用CA的私鑰加密,最終組成數字簽名。
post 請求發送 form 數據和 json 數據的示例:
// 設置 request 的 content-type 爲 application/x-www-form-urlencoded
// 設置 request 的 content-type 爲 application/json
複製代碼
這裏有一篇很好的文章講解連接
跨域是指一個域下的文檔或腳本試圖去請求另外一個域下的資源,這裏跨域是廣義的。 咱們前端一般所說的跨域是狹義的,由同源策略限制引發的
是一種約定,是瀏覽器最核心也是最基本的安全功能,若是缺了同源策略,瀏覽器很容易受到XSS、CSFR等攻擊。 同源是指:「協議 + 域名 + 端口」知足三者相同。
限制如下幾種行爲:
1.) Cookie、LocalStorage 和 IndexDB 沒法讀取
2.) DOM 和 Js對象沒法得到
3.) AJAX 請求不能發送
複製代碼
普通跨域請求:只服務端設置Access-Control-Allow-Origin便可,前端無須設置, 若要帶cookie請求:先後端都須要設置。
反向代理的原理很簡單,即全部客戶端的請求都必須先通過nginx的處理,nginx做爲代理服務器再講請求轉發給node或者java服務,這樣就規避了同源策略。
利用node + webpack + webpack-dev-server(proxy)代理接口跨域。
目前階段會使用、能夠本身封裝 就OK了
推薦這篇大神寫的 連接 TODO: 本身實現一遍最爽
這裏有詳細講解 連接
第三方數據可視化插件
顯然使用ESModule的模塊明顯符合JS開發的歷史進程,由於任何一個支持JS的環境隨着對應解釋器得分升級,最終必定會支持 ESModule的標準。可是 並不必定對市面上的瀏覽器使用新特性,由此 誕生了 你們所熟知的 babel ,能把靜態高版本規範代碼編譯爲低版本規範代碼,讓更多瀏覽器支持。
可是並不理想,對於 模塊化相關的 import和export關鍵字,babel 最終編譯爲 require和exports的CommonJS規範。致使瀏覽器中沒法運行,爲此 咱們又作了一步 叫作 打包(bundle)
browserify和webpack都是很是優秀的打包工具,browserify可以處理CommonJS模塊化規範的包爲web直接使用, webpack則能處理任何模塊化規範的內容
模塊打包機:分析項目結構找到js模塊以及其餘一些瀏覽器不能直接運行的擴展語言(Scss、TypeScript等),並將其打包爲合適的格式以供瀏覽器使用。
讓webpack擁有加載和解析 「非js文件」的能力
<style>
把css-loader生成的內容掛在到html頁面中擴展webpack的功能,讓其具備更多的靈活性。
UglifyES
壓縮ES6
代碼Loader在module.rules
中配置,也就是說他做爲模塊的解析規則而存在。 類型爲數組,每一項都是一個Object
,裏面描述了對於什麼類型的文件(test
),使用什麼加載(loader
)和使用的參數(options
)
Plugin在plugins
中單獨配置。 類型爲數組,每一項是一個plugin
的實例,參數都經過構造函數傳入。
源代碼與打包後的代碼的映射關係、提高開發效率的利器,保存自動刷新頁面。
就像代碼須要代碼規範同樣,代碼管理一樣須要一個清晰的流程和規範
目的: 統一團隊Git commit 文本標準,便於後續代碼review和團隊協做;
在jenkins(一個網站界面)中經過獲取代碼倉庫中最新代碼,進行自動化部署,而省去手動打包、上傳服務器、部署這一系列步驟,很是方便。
同窗以爲有幫助的能夠點個贊哈,以示鼓勵 😊