Node.js的銳3服務器端運行

4月5日,2010在7:45 am由DAV玻璃| 開發 | 5評論

對於那些不知道Node.js的 ,這裡是我如何形容它:

Node.js的是一個服務器端的,無阻塞的,事件驅動的運行時為JavaScript V8 JavaScript引擎的頂部建。 認為Node.js的一個可行的替代你的服務器端腳本語言坐在後面像HTTP服務器, Apachenginx的

我最近一直在玩與Node.js的周圍看到所有的興奮。 所以自然我看到怎樣才能得到銳3下運行節點。 3 YUI的了解背後的架構 ,我想,它不會太硬,得到它運行。

由於Node.js的不提供原生的DOM,你可能會感到奇怪,“為什麼要使用一個JavaScript框架?”嗯,銳3是不是所有的DOM操作 - 它也包含一套強大的類/對象管理工具,更遑論我們強大的自定義事件。 所有這些工具都立即在服務器端編程有用的。

入門

首先,它應當指出YUI將裝入在全球範圍內的Node.js,因為所有YUI的3個模塊調用YUI.add在文件的開頭。 YUI的對象將自己分配到的exportsCommonJS的規範的對象,但是,一旦使用一個模塊,它需要一個全球性的YUI的重視。 (這可能是我們的工作在未來的周圍的東西,但是這就是這種探索的起點。)

我需要做的第一件事是裝載機工作。 這樣做是很簡單,我只用了3內置在YUI的工具。 YUI的3個模塊系統是強大的和易於配置,使用YUI.add方法,我能創造一個新的模塊。 get 這個新的模塊接受客戶端實用程序的默認參數,而不是創建一個腳本節點,包括銳這樣它從CDN和當前進程加載數據到磁盤或從銳。 下面是一個簡單的代碼片段,顯示如何做到這一點:

 YUI.add('get'的功能(Y){
     Y.Get =函數(){};
     Y.Get.script =功能(CB){
        功網址= Y.Array(S),URL,我,L = urls.length;
        為(i = 0; <L;我+){
             URL =網址[我];
             (網址[I]匹配(/ ^ HTTPS:?\ / \ / /)){
                 URL = url.replace JS(/ \ $ /,'');
             }
             y.log(網址:“+ URL,'信息','得到');
             / /不需要被封鎖,所以不會阻止。
             require.async(URL,函數(MOD){
                通過(CB);
             });
         }
     };
     / /只要把這個,所以我們沒有得到錯誤
     Y.Get.css =功能(CB){
         y.log(“載入CSS:'+'調試','得到');
        通過(CB);
     };
 });

現在我已經得到加載腳本,我希望能夠跟踪它是做什麼的。 YUI的3包括一個配置屬性,稱為logFn ,可以記錄在本地控制台日誌記錄可能不存在的環境下的支持。 我用這個配置屬性添加一個選項,以全球的YUI YUI的對象,告訴排放日誌消息時,它應該使用一個特殊的功能。 這裡有一個看看這個函數:

 logFn:功能(STR,T,M){
     T = T | |'信息';
     M =(M)?  “(”+ M +')':'';
     VAR O = FALSE;
     (STR的instanceof對象| | str中的instanceof數組){
         / /如果我們用這個嗎?
         (str.toString){
             STR = str.toString();
         }否則{
             STR = sys.inspect的(STR);
         }
     }
     / /輸出日誌信息到stderr
     sys.error('['+ t.toUpperCase()+']'+ M + STR);
 }

現在,我已經銳3加載和日誌消息,下一步是測試系統。 我決定加載我YQL的庫模塊和嘗試使YQL的要求,。 事實證明,這比我預想的更容易。 YQL的模塊使用Get以來,它的工作開箱。 下面是它的一個示例控制台打印輸出,對我的GitHub的表運行YQL的查詢。

 [INFO]:(YUI)模塊要求:[陣列]:3
 [信息]:(YUI)模塊丟失:[陣列]:3,3
 [信息]:(YUI)取回裝載機:http://yui......oader/loader-min.js
 [信息]:(得到)網址:http://yui.yahooapis.co.../loader/loader-min.js
 [信息]:(YUI)模塊的要求:[陣列]:11
 [信息]:(YUI)模塊丟失:[陣列]:8 8
 [信息]:(YUI)使用裝載機
 [信息]:(得到)網址:http://yui.yahooapis.com/combo?3.1.0/build/du ......
 ...........ild /畫廊YQL /畫廊YQL-debug.js
 [生活]:(基地)構造函數調用
 [信息]:(屬性)屬性的構造函數調用
 [生活]:(基地)init調用
 [信息]:(事件)yui_3_1_0_1_12703536585676:射擊的:初始化
 [信息]:(屬性)initValue為初始化:假
 [信息]:(屬性)添加屬性:初始化
 [信息]:(屬性)initValue銷毀:假
 [信息]:(屬性)添加屬性:破壞
 [信息]:(屬性)添加屬性:初始化
 [信息]:(事件):射擊的:富
 [信息]:(事件):一:美孚 - >子:yui_3_1_0_1_127035365856711
 [調試]:(MyApp的)美孚射擊
 [信息]:(獲取)網址:http://query.yahooapis.com/v1/public/yql?q=select%20%20fro ....... bles.env
 [信息]:(事件)yui_3_1_0_1_127035365856715:查詢>子:yui_3_1_0_1_127035365856716
 {計數:'1'
 ,創建:'2010-04-04T04:01:00ž“
郎:“EN-US
 ,更新:'2010-04-04T04:01:00 Z“
 ,URI:http://query.yahooapis.com/v1/yql“
 ,結果:
    {用戶:
       {'的gravatar-ID':'d5c18055c50c5b34b0163e0bf0dbf59f
      名稱:“DAV玻璃”
      公司:[對象]
       .....
      博客:“http://blog.davglass.com/”的
       }
    }
 }

因此,所有容易的工作,因為它沒有,我想是時候看到銳3 IO加入支持。 銳3的IO模塊已經支持通過閃存運輸的跨域請求。 我決定將添加只是Node.js.新的運輸 IO的作者托馬斯·沙,是能夠使IO的第三方接受以同樣的方式傳輸,閃存運輸工作。 在這一點上,很容易整合HTTP連接已經Node.js.提供的處理 這使得代碼設計上運行的XDR運輸要在服務器上運行的瀏覽器 - 所有你需要做的是改變傳輸類型,和其他一切工作完全一樣的。

 YUI的()。使用('JSON','基地','IO-nodejs',函數(y){
     VAR URL ='呻'+'/ yuilibrary.com /畫廊/ API /用戶/ davglass“;
     Y.io(網址,{
         XDR:{
            使用:“nodejs
         },
         :{
            開始:函數(){
                 y.log(“開始IO','信息','測試');
             },
            成功:函數(ID,O){
                 y.log(Y.JSON.parse(o.responseText)的UserInfo。);
             }
         }
     });

IO模塊工作後,我闡述了使用該庫的建立好玩的東西。 我怎麼建立? 我用銳3和Node.js的建立一個當地的組合服務器。 換句話說,我可以使用YUI 3建立一個工具,它提供銳3 combo'd文件。 這個項目是出奇的容易做的一樣好。 在組合裝載機源,從我的GitHub的帳戶 ,我這裡有一個演示服務器

所有的一切,核心銳3公用事業Node.js的工作過程是簡單的感謝銳3的架構。 在我的GitHub的庫Node.js的銳3模塊為我的代碼如何得到它運行的指令。

請繼續關注我的下一個職位時,我會談論一些額外的實驗我一直奉行自入門銳3在Node.js.運行,

共享和擴展: 書籤del.icio.us Digg它! | reddit!

5評論

  1. 巨大的! 偉大的工作DAV感謝:)

    評論JoeDev - 2010年4月5日,

  2. JoeDev - 謝謝!

    評論由DAV玻璃 - 4月5日,2010

  3. [...]上一篇文章:3銳不再在全球範圍內運行。 我已經做了一些調整,我的nodejs-yui3項目[...]

    pingback的由Node.js的,YUI 3 DOM操作......噢,我的! »雅虎用戶界面博客(YUIBlog)的 - 4月9日,2010

  4. [...]玻璃YUI的一些很酷的工作和服務器,當他上運行的Node.js和得到的DOM [...]

    pingback的才算是Ajax»服務器上Node.js的銳邊渲染 - 4月20日,2010

  5. 很酷的東西。 這是未來! 也許有一天我們將下降銳UI叫它Y(因為圖書館可能變成是同樣強大的服務器端...)

    評論阿瑟·布萊克 - 2010年4月20日,

很抱歉,評論已被封閉,在這個時候。

主辦雅虎

©2006-2012雅虎公司所有權利保留。 隱私政策 - 服務條款

支持WordPress的關於雅虎 虛擬主機