原创 Underscore.js template()函數全解析

模板解析引擎有很多,比如mustache.js等。在我們解析從服務端獲取的JSON數據的時候使用模板有很大的便利。下面我們分析一下Underscore.js的template()模板渲染函數。 官網API介紹 將 JavaScript 模

原创 如何判斷樣式表何時真正加載完

原文地址:When is a stylesheet really loaded? require裏面css文件加載的插件:https://github.com/guybedford/require-css/blob/master/css.

原创 從一段Deferred代碼片段想到的

今天讀到一篇解析jQuery源碼的文章,從中抽象出了這麼一段代碼: $.Deferred(function(){ var me = this; setTimeout(function(){ console.log("執行結束")

原创 初識Object.defineProperty

ECMAScript 262v5帶來的新東西,FF把它歸入爲javaScript 1.8.5的功能之一。 先看看MSDN上的描述: 增加一個屬性到對象,或者修改已經存在的屬性。 語法: Object.defineProperty(obj

原创 模擬新浪微博評論textarea輸入框隨着輸入內容增多輸入框高度自適應

新浪微博的評論,隨着你輸入文字增多,高度的增加,textarea也會隨着不變的變高。該效果網上有現成的jQuery插件實現,該插件最大的缺陷就在於: 對於設置了padding(padding-top、padding-bottom)的tex

原创 談談含複雜數據類型的數組去重問題

數組去重是一個老生常談的問題。平常的處理可能只是對僅包含簡單數據類型的數組進行操作,今天我們對複合數據類型做一個討論。 _.isEqual 要實現數組去重,我們首先要有一個比較兩個數據是否相等的函數。Underscore.js給我們提供了

原创 [譯]框架是如何煉成的 —— 揭祕前端頂級框架的底層實現原理

我們每天都使用大量的前端庫和框架,這些各種各樣的庫和框架已經成爲我們日常工作的一部分,我們之所以使用他們,是因爲我們不想重新造輪子,即使我們不明白它們的底層是怎麼回事,在這篇文章中,我將揭示流行框架中發生了哪些神奇的過程,同時我們也會探

原创 Arale Class基類源碼解析

JS中OO的模擬有很多的實現與嘗試(相關文章),Arale則在以下原則的指導下進行構建: 1.如無必要,勿增實體 —— Simple 2. 一目瞭然,容易學習 —— Stupid Class源碼的學習可以通過了解如何調用Class來實現類

原创 徹底理解thunk函數與co框架

ES6帶來了很多新的特性,其中生成器、yield等能對之前金字塔式的異步回調做到很好地解決,而基於此封裝的co框架能讓我們完全已同步的方式來編寫異步代碼。這篇文章就對生成器函數(GeneratorFunction)及框架thunkify、

原创 sublime text3破解版下載

下載地址:下載

原创 browserify--將js代碼解析爲AST樹並解析AST樹

在服務端,nodeJS可以直接使用CommonJS規範來寫,運行在瀏覽器中的前端代碼也可以這樣寫,然後使用browserify可以將其轉化爲模塊化寫法,裝載依賴模塊。其原理就是將js代碼字符串解析爲AST樹,然後遍歷AST樹分析出requ

原创 使用gulp實時編譯sass/sass

背景 在我們新開始的項目中,我們打算使用scss來作爲我們的樣式書寫語言。同時,所有的sass/scss文件經過編譯轉化成css文件後要存放到跟scss/sass文件相同的目錄下。整個前端團隊已經有實時的代碼編譯構建工具,那麼我們只需要書

原创 優秀文章以及實用庫記錄

一、實用庫 1、雪花飄落效果:點擊打開鏈接 2、JavaScript與元素間的拋物線軌跡運動:點擊打開鏈接 二、優秀文章: 1、前端代碼規範及最佳實踐:點擊打開鏈接 2、七天學會NodeJS:點擊打開鏈接 3、Vue.js入門教程:點擊打

原创 在jQuery與Node之間創建跨域請求(Cross-Origin Resource Sharing (CORS) )

原文地址:http://www.bennadel.com/blog/2327-cross-origin-resource-sharing-cors-ajax-requests-between-jquery-and-node-js.htm

原创 Arale aspect切面編程源碼解析

切面編程能讓你有效的控制方法的執行順序。舉個例子: var Dialog = Base.extend({ ... show: function() { console.log(2); t