前端開發實習日記 -2

  這周開始在導師的帶領下嘗試些功能點。

因爲以前沒有真切接觸過nodejs開發,儘管看了一些教程,但水平遠遠不夠。只是讓我寫一個小接口,也用了整整一天時間。但是主要是功能點雖然不麻煩,但是涉及到的插件及庫都沒有接觸過,所以必須不斷百度,理清代碼。而且代碼弄清楚之後,儘管知道實現功能的思路,但就是不知道該怎麼下手。不過總算是掙扎着寫出了代碼。下面來總結一下自己的收穫。

一. Async:

Async是一個流程控制工具包,提供了直接而強大的異步功能。基於Javascript爲Node.js設計,同時也可以直接在瀏覽器中使用。相比其他流程控制庫,async還是相當靠譜及強大的。主要實現了三個部分的流程控制功能:

  1. 流程控制:control flow
  2. 集合處理:collections
  3. 工具類:util


1). 集合: Collections

  1. each: 如果想對同一個集合中的所有元素都執行同一個異步操作(可以與js中數組操作foreach類比
  2. map:  對集合的每一個元素執行一步操作,得到的結果將彙總到最終的callback中。而each不關心最後的值。
  3. filter:對集合元素進行篩選
  4. reject:與filter相反,將返回爲true的值拋棄。
  5. reduce:類似於js數組操作的reduce方法。並且也有reduceRight方法
  6. detect:獲取集合中第一個滿足條件的元素
  7. sortBy:對集合內元素進行從小到大0排序
  8. some:對元素進行或操作,只要有一個元素滿足條件,callback得到的值爲true,否則爲false;
  9. every:對元素進行與操作。只有所有元素滿足條件,callback得到的值爲true,否則爲false
  10. concat:將多個異步操作得到的結果合併爲一個數組。
(具體的代碼例子在週末有時間的時候補上)

2). 流程控制: Control Flow 

1. series(tasks,[callback]): 串行執行,一個函數數組中的每個函數依次執行。只有上一個函數執行完畢,纔回執行下一個函數

如果任何一個函數向它的回調函數中傳了一個error,則後面的函數都不會被執行,並且將會立刻會將該error以及已經執行了的函數的結果,傳給series中最後那個callback.

當所有的函數執行完後(沒有出錯),則會把每個函數傳給其回調函數的結果合併爲一個數組,傳給series最後的那個callback。

多個series調用部分先後。因爲series本身也是異步調用

2. parallel(tasks,[callback]): 並行執行。每個函數都是立即執行,不需要等待其他函數先執行。傳給最終callback的數組中的數據按照tasks中聲明的順序,而不是執行完成的順序。

如果某個函數出錯,則立刻將err和已經執行完的函數的結果值傳給parallel最終的callback。其它未執行完的函數的值不會傳到最終數據,但要佔個位置。同時支持json形式的tasks,其最終callback的結果也爲json形式。

3. waterfall(tasks,[callback]): 按順序依次執行一組函數。前一個函數的輸出將會成爲下一個函數的輸入。

......

(還有其他的流程控制方法,有時間的繼續寫。以上三種是我在看代碼遇見比較多,以及自己寫代碼遇到的印象比較深刻的。)


3). 工具類: Utils

1. memoize: 讓某一個函數在內存中緩存它的計算結果。對於相同的參數,只計算一次,下次就直接拿到之前算好的結果。

2. unmemoize: 讓已經被緩存的函數,返回不緩存的函數引用。

3. log: 執行某異步函數,並記錄它的返回值,日誌輸出。

4. dir: 與log類似,不同之處在於,會調用瀏覽器的console.dir()函數,顯示爲DOM視圖。

5. noConflict: 如果之前已經在全局域中定義了async變量,當導入本async.js時,會先把之前的async變量保存起來,然後覆蓋它。僅僅用於瀏覽器端,在nodejs中沒用。




二、 插件

  除了async之外,還接觸了不少插件 


1. select2  下拉列表插件

2. plupload  文件上傳組件

3. UEditor   是一套開源的在線HTML編輯器


最後,感謝我的導師不嫌棄我速度慢。而且教了我很多東西~


參考文章:

http://blog.fens.me/nodejs-async/

http://blog.csdn.net/marujunyy/article/details/8695205


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章