原创 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