原创 AST--使用編譯的方式修改代碼

最近有一個面板搭建的需求,環境爲react,而現有面板組件爲vue。 就有了現在這個轉換需求~ AST(抽象語法樹):顧名思義,它把代碼拆解成了樹的形式。 接下來我會以代碼增刪改查的形式帶大家初步瞭解"代碼編輯"! 查:先看再

原创 文件上傳之驗證後綴與內容是否一致

在上傳前驗證,開發者們往往喜歡通過後綴或者File.type()去判斷一個文件類型來決定是否符合上傳要求。但這顯然是不可靠的,當被別有用心的人利用後,就可能在服務器被執行。今天就來解決如何在前端驗證文件內容跟後綴是否一致。 1

原创 解決 removeEventListener 無法清除監聽

1. 原因 許多入前端不久的人都會遇到 removeEventListener 無法清除監聽的情況,這是由於 要移除事件句柄,addEventListener() 的執行函數必須使用外部函數,如上實例所示 (myFunction

原创 使用Proxy實現雙向綁定

前言 技術從來不會受限於語言,受限你的,永遠只是思想。(博主發現了一個有意思的機器學習庫,TensorFlow的js版本,有興趣的同學可以看一下https://www.tensorflow.org/api_docs) => 這

原创 滾動加載--優化滾動性能

親愛的兒子,我還沒有追到你娘,提前祝你新年快樂!爸爸明年會努力的~ 背景 最近有用阿里雲 sdk 中的日誌服務,在它的 api 裏發現它並不支持分頁查詢,倒是有個 offset 指定日誌起點,所以需要配合鼠標滾動做一個懶加載

原创 完美解決 removeEventListener 無法清除監聽

1. 原因 許多入前端不久的人都會遇到 removeEventListener 無法清除監聽的情況,這是由於 要移除事件句柄,addEventListener() 的執行函數必須使用外部函數,如上實例所示 (myFunction)。

原创 canvas 基礎以及2048遊戲實踐

canvas(畫布):顧名思義用來畫畫的容器 1. 點 context.moveTo(x,y)。這句代碼的意思是 移動畫筆至(x,y)這個點(單位是px)。這裏是以 canvas 畫布的左上角爲笛卡爾座標系的原點,且y軸的正方向向下

原创 node fs系統

引入fs模塊 const fs = require("fs") 1. fs.access 檢測 path 指定的文件或目錄的用戶權限 //- path //- mode 默認fs.constants.F_OK / ~R_OK / ~

原创 使用transform-origin 實現loading效果

使用transform-origin 實現loading效果 沒啥意思 突然想到的~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t

原创 ES6

一、 變量賦值與解構 默認值賦值注意點: 只有當一個數組成員嚴格等於undefined,默認值纔會生效。 let [x = 1] = [undefined]; x // 1 let [x = 1] = [nul

原创 日期對象之時間比較

日期對象之時間比較 17:35:00 、 19:20:11 當你拿到這兩個字符串要去比大小的時候,你會怎麼做? 反正我一拿到二話沒說直接去寫了一個轉秒的函數,血虧…(感覺自己在說廢話) 其實時間的比較有現成方法的,只要將字符串轉成日期對

原创 fullPage代碼從基層往上爬(一)

fullPage代碼從基層往上爬(一) 自己打算通過fullPage.js來好好鞏固滾輪事件、兼容性實現、jquery、函數封裝等等…. 這一部分先完成fullPage的基礎功能,接下來就會進行封裝、優雅降級、添加功能等… html代

原创 Redux實踐——減少樣板代碼

Redux實踐——減少樣板代碼 在編寫Redux代碼時,可能最令人感到厭煩的是必須寫一大堆樣板代碼。在編寫同步action時還能忍受,但在編寫異步action時,大量的樣板代碼不僅使代碼量陡增,而且難以維護。接下來我們就來探究如何使用高階

原创 Vue +Node +Mysql 從簡至全(一)

簡單的後端接口連接的實現 –這一部分是實現後端的接口,接下來會依次實現數據庫操作和前後端數據交互過程。 後端: npm install express mysql -S 編寫後端入口文件(app.js): 編寫路由文件: no

原创 Date() 時間的一個 format 格式化函數

formatDate(date, fmt) { if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').subs