簡體   English   中英

通過Node.js Ajax提供JavaScript文件的正確方法?

[英]Correct Approach for Serving Javascript Files via Node.js Ajax?

我正在嘗試編寫一個將crjavascript代碼提供給靜態網頁的節點應用程序。 然后,將在網頁中評估代碼。 此示例類似,但使用node而不是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') 想法是使用ajax查詢將這行代碼發送到index.html,然后運行它。 但是,由於撇號和方括號的混亂情況,我一直在基於此行出現錯誤:

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

我以為必須有更好的方法來做到這一點?

如果您對通過ajax服務javascript並沒有嚴格的要求,那么使用基於節點的Web服務器(例如expressjs)會更簡單,這使您可以輕松地服務靜態內容

好的,使用res.end('_js(\\'{"message": " ' + escape(js) + '"}\\')'); 服務器上的eval(unescape(dataJson['message']))上的客戶端。 抱歉致歉,但在找到解決方案之前一個多小時我都無處可去...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM