詳細比較 www.jianshu.com/p/b1022d224…javascript
Gulp就是爲了規範前端開發流程,實現先後端分離、模塊化開發、版本控制、文件合併與壓縮、mock數據等功能的一個前端自動化構建工具。說的形象點,「Gulp就像是一個產品的流水線,整個產品從無到有,都要受流水線的控制,在流水線上咱們能夠對產品進行管理。」css
Webpack 是當下最熱門的前端資源模塊化管理和打包工具。它能夠將許多鬆散的模塊按照依賴和規則打包成符合生產環境部署的前端資源。還能夠將按需加載的模塊進行代碼分隔,等到實際須要的時候再異步加載。經過 loader的轉換,任何形式的資源均可以視做模塊,好比 CommonJs 模塊、AMD 模塊、ES6 模塊、CSS、圖片、JSON、Coffeescript、LESS 等。html
* 基於css的,能讓css也有一種編程語言範。解決了css的諸多問題,如css模塊化、沒法嵌套書寫、沒有變量。
複製代碼
將幾回操做合併爲一此操做進行。原理是維護一個計時器,規定在delay時間後觸發函數,可是在delay時間內再次觸發的話,就會取消以前的計時器而從新設置。這樣一來,只有最後一次操做能被觸發。前端
使得必定時間內只觸發一次函數。 它和防抖動最大的區別就是,節流函數無論事件觸發有多頻繁,都會保證在規定時間內必定會執行一次真正的事件處理函數,而防抖動只是在最後一次事件後才觸發一次函數。 原理是經過判斷是否到達必定時間來觸發函數,若沒到規定時間則使用計時器延後,而下一次事件則會從新設定計時器。vue
同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,若是缺乏了同源策略,則瀏覽器的正常功能可能都會受到影響。能夠說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現。java
同源策略,它是由Netscape提出的一個著名的安全策略。 如今全部支持JavaScript 的瀏覽器都會使用這個策略。 所謂同源是指,域名,協議,端口相同。 當一個瀏覽器的兩個tab頁中分別打開來 百度和谷歌的頁面 當瀏覽器的百度tab頁執行一個腳本的時候會檢查這個腳本是屬於哪一個頁面的, 即檢查是否同源,只有和百度同源的腳本纔會被執行。[1] 若是非同源,那麼在請求數據時,瀏覽器會在控制檯中報一個異常,提示拒絕訪問。jquery
const jsonArr = [
{name: 'a', id: 1, pid: 0},
{name: 'b', id: 2, pid: 1},
{name: 'c', id: 3, pid: 1},
{name: 'd', id: 4, pid: 2},
{name: 'e', id: 5, pid: 2}
]
function fn(data, pid = 0) {
let result = []
let temp
for (let i = 0; i < data.length; i++) {
if (data[i].pid === pid) {
let obj = {
'name': data[i].name,
'id': data[i].id
}
result.push(obj)
// 返回了一個result數組,先遞歸完,在for循壞
temp = fn(data, data[i].id)
// 若是數組大於0,就是他的子級
if (temp.length > 0) {
obj.children = temp
}
}
}
return result
}
複製代碼
function resertJson(aryTreeObj, pid = 0) {
var wrapper = [];
if (ary.length < 1) return wrapper;
for (var i = 0; i < ary.length; i++) {
var item = ary[i];
var obj = {
name: item.name,
id: item.id,
pid: pid
};
wrapper.push(obj);
if (item.children && item.children.length > 0) {
resertJson(item.children, item.id);
}
}
return wrapper;
}
複製代碼