2016-03-07 269 views
-1

我是一個PHP開發人員,最近用express來做了一些節點JS的使用。節點JS客戶端vs服務器

我很困惑的一件事是如何告訴你的快遞服務器,如果一個JavaScript文件應該在服務器上執行或發送到瀏覽器在客戶端執行。

在PHP中,這不是一個問題,因爲每個文件類型(php,pearl,jpg,js)都有一個專門的位置(服務器或客戶端)運行。相同的是HTTP應用程序的真正編程其他語言,如Java和C#

考慮此示例代碼

變種快遞=要求(「表示」); var app = express(); ('/ some_page',function(req,res) {res.send('hello world');});

app.listen(3000);

沒有參與這樣的「Hello World」 JS發送到瀏覽器,由瀏覽器渲染。

但是,如果代碼是

VAR快遞=需要( '表達'); var app = express(); ('/',function(req,res){res.send('console.log('hello world')');});

app.listen(3000);

這次我們有JS函數console.log() 那麼node.js如何知道應該運行這段代碼還是發送給瀏覽器。

+2

看來你需要學習的node.js前跳躍來表達的基本知識。 JS –

回答

0

您使用express,所以你應該使用static中間件明確指定客戶端的JavaScript代碼。

在下面的例子中,您定義了public目錄來存儲它。

// GET /style.css etc 
app.use(express.static(__dirname + '/public')); 

其他一切都將在服務器端執行。

更多關於中間件:http://expressjs.com/en/guide/using-middleware.html

1

這是所有whithin的app.get('/', function(req, res){}標籤

res.send('console.log("hello world!")') 

將打印console.log("hello world!")客戶端頁面

res.send('<html><body><script>console.log("hello world!");</script></body></html>') 

上會在控制檯打印hello world!客戶

res.send('hello world!'); 
console.log("hello world!"); 

將在客戶端的頁面上,並在服務器控制檯上顯示hello world!

所以basicly您發送給客戶端會做,你不發送給客戶端,客戶端和代碼來完成服務器端

編輯

Ankur Rana說,你也可以發送HTML文件

res.sendFile('index.html'); 

,並在同一目錄下這個文件,我們有一個文件名爲index.html:

<html> 
<body> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <div id="myId">console.log("hello world!")</div> 
    <script> 
     //regular js here 
    $("#myId").html("Hello World!"); 
    </script> 
</body> 
</html> 
0

把JavaScript代碼的HTML文件的腳本標記和使用 res.sendFile(「pathToFile.html」)發送

相關問題