我正在嘗試編寫一個節點應用程序,它將crjavascript代碼提供給一個靜態網頁。代碼將在網頁中進行評估。類似於this example,但用節點而不是php。服務器應用程序是這樣的:通過Node.js Ajax提供Javascript文件的正確方法?
// Load the http module to create an http server.
var http = require('http');
// Configure our HTTP server
var server = http.createServer(function (req, res) {
var js;
//send back all libraries
fs = require('fs');
res.writeHead(200, {'Content-Type': 'text/plain'});
//var paths = ['javascript.js'];
js = fs.readFileSync('example.js').toString();
res.end('_js(\'{"message": " ' + js + '"}\')');
});
// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);
// put a message on the terminal
console.log("Server running at http://127.0.0.1:8000/");
雖然客戶端代碼如下所示:
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no" charset="utf-8"/>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
url: 'http://127.0.0.1:8000/',
dataType: "jsonp",
jsonpCallback: "_js",
cache: false,
timeout: 20000,
success: function(data) {
var dataJson = JSON.parse(data);
console.log(dataJson['message']);
eval(dataJson['message']);
alert(test);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('error ' + textStatus + " " + errorThrown);
}
});
});
</script>
</head>
<body>
<div class="container" id="container"></div>
</body>
</html>
example.js目前包含一行alert('hello world')
。這個想法是使用ajax查詢將這行代碼發送到index.html,然後運行它。不過,我不斷收到因爲撇號和括號的醜陋混亂的基礎上這一行錯誤:
我想必須有一個更好的方式來做到這一點?
res.json()如果你不介意使用Express,或者JSON.stringify? – 2013-02-09 23:09:24