2014-10-20 61 views
0

自2010年起,我是一名PHP開發人員。 我喜歡PHP,僅僅因爲它很簡單。但我想了解更多關於Node.js.它看起來很有趣,特別是因爲我瞭解JavaScript並且我非常喜歡它。我如何使用PHP在HTML頁面中如何運行Node.js腳本?

有誰知道我如何在HTML頁面中運行Node.js腳本,而不顯示源代碼,就像PHP那樣?那是如何真正起作用的?

我見過很多教程,他們在終端中執行Node.js,但我沒有找到在簡單的HTML頁面中快速運行Node.js的方法。

謝謝! :)

+1

太多的PHP程序員似乎並沒有得到這個。您不要在您的HTML頁面中運行PHP。您的'.php'文件在PHP解釋器中運行,該解釋器輸出一個HTML頁面...輸出的頁面包含_no_ PHP以「在頁面中運行」。 – 2014-10-20 18:16:16

+0

Hi @StephenP。我知道。也許我沒有很好地表達自己,因爲英語不是我的主要語言。不管怎麼說,還是要謝謝你。 – alwayslearning 2014-10-20 18:25:45

+0

@guimadaleno爲了公平起見,你在你的問題中指出你不知道它是如何工作的。 *「有誰知道我如何在我的HTML頁面中運行Node.js腳本,而不顯示源代碼,就像PHP那樣?是這樣它真正起作用的嗎?」*不,那根本不是它的工作原理。 – 2014-10-20 18:29:35

回答

3

你似乎混爲一談PHP的兩個不同的特點:

  1. 許多Web服務器可以被配置爲運行通過PHP解釋PHP程序和結果有助於瀏覽器。
  2. PHP是作爲模板語言設計的,所以PHP代碼被嵌入到模板中。

如果您正在使用Node.js的,那麼你通常會:

  1. 寫的Node.js您的Web服務器(雖然你可能配置前端代理吧)。在the Node.js homepage上有一個這樣的例子,但也有各種框架,例如express,它們爲你做了很多繁重的工作。
  2. 保持您的模板代碼與程序代碼分離。節點有很多可用的template modules

從Node.js的主頁引用:

一個例子:Web服務器

寫在節點這個簡單的Web服務器的 「Hello World」 爲每個請求的響應 。

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 

要運行服務器,把代碼到一個文件example.js並執行它 與來自命令行的節點程序:

% node example.js 
Server running at http://127.0.0.1:1337/ 

下面是一個簡單的TCP服務器的示例它偵聽端口1337 和回聲不管你把它:

var net = require('net'); 

var server = net.createServer(function (socket) { 
    socket.write('Echo server\r\n'); 
    socket.pipe(socket); 
}); 

server.listen(1337, '127.0.0.1'); 
+0

好的,明白了。感謝您的幫助。 – alwayslearning 2014-10-20 18:50:11

0

PHP代碼THA你一直在寫的可能只是PHP的html模板版本(因爲缺乏更好的條款...)

當瀏覽器請求.php頁面時,會調用一個php解釋器來解析php標籤html並用html/text替換它。該結果然後被髮送到瀏覽器。

node.js不能這樣工作。

Node.js比php更詳細,當涉及到這個特定的主題。節點。js不僅僅是一個Web應用程序框架或Web服務器,它還可以用作執行常見任務的可執行程序。

通常,爲了獲得您在node.js中尋找的功能,您可以使用模板框架(例如把手和express)來處理Web服務器和路由。這裏有一個例子:

// this is just an example, it may or may not work, I did not test it. 
var express = require('express'), 
    app = express(), 
    exphbs = require('express-handlebars'), 
    hbs, 
    path = require('path'); 

// serve all files under the /assets folder as static files 
app.use('/assets', express.static(path.join(__dirname, '/assets'))); 

// handlebar engine config 
hbs = exphbs.create({ 
    defaultLayout: 'main' 
}); 

// attach engine and specify view location 
app.engine('handlebars', hbs.engine); 
app.set('view engine', 'handlebars'); 
app.set('views', path.join(__dirname, '/views')); 

// home page http://domain.com/ 
app.get('/', function (req, resp) { 
    resp.render('home', {title: 'Home | Hello World!', text: 'Welcome to my site!'}); 
}); 

// start webserver 
app.listen(3000); 

以上節點的應用程序將創建一個Web服務器偵聽端口3000來響應請求/assets/

/視圖/佈局:當請求/,從/views文件夾中的home.handlebars視圖將使用main.handlebars佈局從/views/layouts下面是將顯示已傳遞在上面創建的/路線的標題的示例圖來呈現/main.handlebars

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>{{title}}</title> 
</head> 
<body> 
    {{{body}}} 
</body> 
</html> 

/views/home.handlebars

<h1>Hello World!</h1> 
<p>{{text}}</p> 
+0

太棒了!我會詳細瞭解Express。謝謝凱文。 – alwayslearning 2014-10-20 18:48:25