通过Node.js Ajax服务Javascript文件的正确方法?

我正在尝试编写一个节点应用程序,它将crjavascript代码提供给一个静态网页。 代码将在网页中进行评估。 类似于这个例子 ,但用节点而不是php。 服务器应用程序如下所示:

// 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') 。 这个想法是将这一行代码发送到index.html使用ajax查询,然后运行它。 然而,我不断得到错误基于这一行,因为肮脏的撇号和括号:

 res.end('_js(\'{"message": " ' + js + '"}\')'); 

我一直在想有一个更好的方法来做到这一点?

如果你不需要通过ajax服务javascript,那么使用基于节点的web服务器(比如expressjs )可以让你更容易地提供静态内容 。

好的,通过使用res.end('_js(\'{"message": " ' + escape(js) + '"}\')'); 在服务器上和客户端上的eval(unescape(dataJson['message'])) 。 道歉张贴,但我在find解决scheme之前超过一个小时无处可寻…