原创 Node——異步I/O

單線程編程會因阻塞I/O導致硬件資源得不到更優的使用。多線程編程也因爲編程中的死鎖、狀態同步等問題讓開發人員頭痛。Node在兩者之間給出了它的解決方案:利用單線程,遠離多線程死鎖、狀態同步等問題;利用異步I/O,讓單線程遠離阻塞,

原创 Node——Buffer

對於傳統的前端開發者,我們不需要處理網絡協議,數據庫,圖片數據,接收上傳文件等。但是在Node中這是很基本的場景。這裏用到的大部分都是二進制數據,這是原有JS無法處理的。於是Buffer對象就出現了。 Buffer結構 Buffe

原创 CSS Secret——Shapes

靈活的橢圓 這裏要注意,border-radius是個簡寫,它可以拆成4個部分,8個值。 border-top-left-radius border-top-right-radius border-bottom-right-rad

原创 CSS Secret——Structure & Layout

根據內容指定寬度 假如我們有如下結構: <figure> <img src="img/adamcatlace.jpg" /> <figcaption> The great Sir Adam Catl

原创 CSS Secret——Transitions & Animations

彈性動畫 在真實世界中,很少有物體是線性的從A移動到B。想讓你的界面動畫顯得更加生動,你需要模擬彈性的動畫。 從技術角度來講,彈性動畫就是在動畫達到終止值時,回去一點,再達到終止值時再回去一點,這一點比上一次要小。最終停在終止值

原创 Sort of sort

排序算法 定義 對一序列對象根據某個關鍵字進行排序 評判標準 穩定:如果a原本在b前面,而a=b,排序之後a仍然在b的前面;  不穩定:如果a原本在b的前面,而a=b,排序之後a可能會出現在b的後面; 內排序:所有排序操作都在內存中完成

原创 ES6學習12(Class)

Class基本語法 概述 ES5的傳統方法: function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function () {

原创 ES6學習18(二進制數組)

二進制數組(ArrayBuffer對象、TypedArray視圖和DataView視圖)是JavaScript操作二進制數據的一個接口。 這個接口的原始設計目的,與WebGL項目有關。所謂WebGL,就是指瀏覽器與顯卡之間的通信接口,爲

原创 ES6學習11(Promise)

Promise是異步編程的一種解決方案,比傳統的解決方案——回調函數和事件——更合理和更強大。 Promise對象有以下兩個特點: 對象的狀態不受外界影響。Promise對象代表一個異步操作,有三種狀態:Pending(進行中)、Re

原创 ES6學習15(異步操作和Async函數)

異步編程對JavaScript語言太重要。Javascript語言的執行環境是“單線程”的,如果沒有異步編程,根本沒法用,非卡死不可。 ES6誕生以前,異步編程的方法,大概有下面四種。 回調函數 事件監聽 發佈/訂閱 Promise

原创 Flex

傳統的網頁佈局基於盒裝模型,使用display,position,float屬性來達成各種佈局。 對於一些特殊的佈局使用這些來實現不是很方便,比如垂直居中。 Flex應運而生,它可以簡便、完整、響應式地實現各種頁面佈局。 Chrom

原创 ES6學習14(模塊)

歷史上,JavaScript一直沒有模塊(module)體系,無法將一個大程序拆分成互相依賴的小文件,再用簡單的方法拼裝起來。其他語言都有這項功能,比如Ruby的require、Python的import,甚至就連CSS都有@import

原创 ES6學習6(Symbol)

ES5的對象屬性名都是字符串,這容易造成屬性名的衝突。比如,你使用了一個他人提供的對象,但又想爲這個對象添加新的方法(mixin模式),新方法的名字就有可能與現有方法產生衝突。 ES6引入了一種新的原始數據類型Symbol,表示獨一無二的

原创 React基礎

HTML模板 React主要是兩個庫: react.js是核心庫 react-dom.js 是提供與 DOM 相關的功能 還有一個Browser.js 的作用是將 JSX 語法轉爲 JavaScript 語法,JSX是可以將HTML

原创 ES6學習16(編程風格)

塊級作用域 let取代var ES6提出了兩個新的聲明變量的命令:let和const。其中,let完全可以取代var,因爲兩者語義相同,而且let沒有副作用。 'use strict'; if (true) { let x = 'he