原创 我理解的函數節流和防抖

爲什麼需要函數防抖和函數節流? 在瀏覽器中某些計算和處理要比其他的昂貴很多。例如DOM操作比起非DOM交互需要更多的內存和CPU佔用時間。連續進行過多的DOM操作可能會導致瀏覽器掛起,甚至崩潰;例如當調整瀏覽器大小的時候,res

原创 canvas實現塗鴉功能

本文主要實現了canvas塗鴉功能,包括塗鴉,前進後退、清除畫布以及畫筆大小修改。 實現思路 主要是監聽鼠標按下、移動、鬆開事件,將鼠標按下的值賦值給moveTo的x和y值,作爲起始位置。在移動事件中,將鼠標距離可視區x和y值賦給

原创 圖片水平、垂直翻轉

最近有個需求需要實現圖片的水平、垂直翻轉功能,開發完之後感覺挺有意思的,就來總結一下 css實現圖片翻轉功能 利用css動畫屬性rotate旋轉來實現: 水平翻轉:transform: rotateY(180deg);

原创 淺談Node的異步I/O

本文章是通過閱讀深入淺出Node.js這本書寫的總結,有什麼問題,歡迎大家指出。 爲什麼要異步 I/O 異步I/O爲何在Node裏這麼重要,這和Node面向網絡設計有關。現如今Web應用已不再是單臺服務器就能勝任的時代了,在跨網絡

原创 websocket初識

爲什麼需要 WebSocket? 我們已經有HTTP協議了,爲什麼還需要另一個協議?它能給我們帶來什麼好處呢? 原因是:HTTP協議有一個缺陷:通信只能由客戶端發起,做不到服務器主動向客戶端推送信息。這種單向請求的特點意味着如果服

原创 NodeJs中內存機制

node對內存泄露十分敏感,因爲一旦我們線上有成千上萬的大流量,即使是一個字節的內存泄露也會造成堆積,垃圾回收過程中會耗費很多時間進行對象掃描,導致我們的應用響應緩慢,直到進程內存溢出,整個應用崩潰。 一般情況下日常開發中我們應該

原创 淺談javascript深拷貝和淺拷貝

深淺拷貝在我們平常開發中也會經常用到,下來我們來具體談談深淺拷貝。 堆和棧的區別 其實深拷貝和淺拷貝的主要區別就在於其內存中的存儲類型不同。堆和棧都是內存中劃分出來用來存儲的區域。 棧:是自動分配的內存空間,它由系統自動釋放;

原创 vue通過自定義指令實現拖拽功能

vue拖拽自定義指令 在實現拖拽功能之前,首先需要理解鼠標事件的這幾個屬性clientY、pageY、screenY、layerY、offsetY怎麼用,以及彼此之間有什麼區別 clientY 指的是鼠標相對於瀏覽器視口左上角的

原创 javascript數組去重

數組去重在面試和工作中都是比較容易見到的問題,在這裏我們介紹一些數組去重的方法,和大家一起分享一下,如果有的地方不對,大家可以指出來,共同學習。 方法一:使用雙重for循環 這個方法是非常經典的一個數組去重方式,使用比較方式,用數

原创 我理解的promise

什麼是Promise? Promise是JS異步編程中的重要概念,異步抽象處理對象,是目前比較流行Javascript異步編程解決方案之一,最早由社區提出並實現,典型的一些庫有Q,when, bluebird等;它的出現是爲了更

原创 淺談async/await

背景 ES7提出的async/await是JavaScript爲了解決異步問題而提出的一種解決方案,沒有更多的回調,許多人將其稱爲異步的終極解決方案。async函數是Generator函數的語法糖。使用關鍵字async表示,在函

原创 新手小白如何在window把自己的項目上傳到github

作爲一個開發者,寫博客,上傳項目到github好像是不可不會的技能,很多有經驗的老司機都會這麼建議你。本寶寶第一次要把項目傳到github的時候,確實有點矇蔽,什麼鬼,傳個東西有必要這麼難嗎? git 是有gui的,但是網上一搜,一大堆

原创 3.前端常見js問答題

一.進程和線程的區別 1. 一個程序至少有一個進程,一個進程至少有一個線程 2. 線程的劃分尺度小於進程,使得多線程程序的併發性高 3. 另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率

原创 2.前端常見面試編程題整理

1.輸出字符串中出現次數最多的 var str='fdadffddfdffj';  var obj={};  for(var i=0;i<str.length;i++){     var cha=str.charAt(i);if(!obj

原创 1.前端面試js經典題目

1. png24位的圖片在iE6瀏覽器上出現背景 解決方案:做成PNG8,也可以引用一段腳本處理. 2. 瀏覽器默認的margin和padding不同 解決方案:加一個全局的 *{margin:0;padding:0;} 來統一。