2011-05-18 87 views
4

在php文件我可以做:Node.js:如何將Node.js嵌入到HTML中?

<p><?php echo "hello!";?></p> 

有沒有辦法在節點都做這個,如果是什麼是它的邏輯是什麼?

我有一個想法,怎麼會這樣做:<node>code</node>

  • 負載&解析HTML文件中的節點

    • 在HTML文件中像使用的標識符標記爲節點

    • 從HTML文件中抓取節點標記並運行它

    但我不知道這是最好的方式,甚至如果它工作:)

    請注意,我想學習node.js,所以表達和其他庫和模塊是不適合我的答案,因爲我想知道過程的邏輯。

    +0

    加入我們在[Node.js的聊天室(http://chat.stackoverflow.com/rooms/642/node-js);) – Raynos 2011-05-18 21:05:08

    +0

    這個問題並不涉及到嵌入式系統編程所以我已經移除了標籤。請參閱http://stackoverflow.com/tags/embedded/info – 2011-05-19 08:59:20

    回答

    11

    你在描述/詢問node.js預處理器的內容。 It does exist但它被認爲是有害的。

    更好的解決方案是使用express中使用的視圖。看看screencasts

    如果您必須從頭開始做所有事情,那麼您可以編寫一個微模板引擎。

    function render(_view, data) { 
        var view = render.views[view]; 
        for (var key in data) { 
         var value = data[key]; 
         view.replace("{{" + key + "}}", value); 
        } 
        return view; 
    } 
    
    render.views = { 
        "someView": "<p>{{foo}}</p>" 
    }; 
    
    http.createServer(function(req, res) { 
        res.end(render("someView", { 
         "foo": "bar" 
        })); 
    }); 
    

    有很好的理由爲什麼混合PHP/ASP/JS代碼直接與HTML是不好的。它不促進分離問題並導致意大利麪代碼。現在的標準方法就是上面的模板引擎。

    想要了解更多有關微模板的信息嗎? Read the article by J. Resig

    +0

    嗨@Raynos你能解釋我怎樣才能執行一個'.html'文件與這個模板引擎node.js命令?據我瞭解,這只是改變foo來吧?或者我又被誤解了一些東西? – Adam 2011-05-31 20:30:54

    +0

    @CIRK使用更大的模板引擎。小鬍子,EJS,Jade,jQuery templ等等。看一下[express screencasts](http://expressjs.com/screencasts.html),雖然你使用express,但它有一個很棒的視圖引擎 – Raynos 2011-05-31 20:33:53

    +1

    你好。 3個鏈接中的2個被打破。我不知道他們是否可以修復,但我很樂意訪問這些材料:) – 2014-10-07 17:04:27

    1

    使用模板引擎。從終端

    npm install ejs 
    

    在代碼:

    var ejs = require('ejs'); 
    
    var options = { 
        locals: { 
        foo: function() { return "bar"; } 
        } 
    }; 
    
    var template = "<p><%= foo() %></p>"; 
    console.log(ejs.render(template, options)); 
    
    0

    不知道這是你在找什麼:

    的Javascript預處理器:

    http://www.jspp.io/

    +0

    此鏈接已損壞 – 2014-10-07 17:10:12

    3

    你可以嘗試使用JooDee,一個節點網絡服務器,它允許您嵌入服務器端的javascri在你的網頁上。如果您熟悉Node和PHP/ASP,創建頁面是一件輕而易舉的事情。這裏是一個什麼樣的頁面看起來像下面的例子:

    <!DOCTYPE html> 
    <html> 
    <: //server side code in here 
        var os = require('os'); 
        var hostname = os.hostname(); 
    :> 
    <body> 
        <div>Your hostname is <::hostname:></div> 
    </body> 
    </html> 
    

    使用JooDee也可以讓你暴露服務器的JavaScript通過附加屬性的「客戶」對象服務器端,並訪問瓦爾到客戶端沒有努力所產生的「客戶端的客戶端對象javascript。

    https://github.com/BigIroh/JooDee