Node.JS:如何检查jQuery是否已加载

时间:2012-07-02 16:09:49

标签: jquery node.js npm

我使用了npm install jquery,我在我的server.js中放了一些代码来检查jQuery是否存在:

io.sockets.on('connection', function(socket) {

    console.log("Connection " + socket.id + " accepted.");

    // Check if jQuery is loaded
    if (jQuery) {  
        console.log("jQuery loaded!");
    }
    if (typeof jQuery == 'undefined') {  
        console.log('jQuery has not been loaded!');  
    }

});

当我运行server.js时,我得到ReferenceError: jQuery is not defined

有没有更好的方法来检查jQuery是否已加载,或者此消息是否意味着我还没有成功安装jQuery?

修改

client.html

<body>

<script>
    function send() {
        var user_message = $("#message_box").val();
        socket.send(user_message);
    };
</script>

<input id="message_box" type="text" placeholder="Message" />
<button id="sender" onClick='send()'/>Send Message</button>

</body>

5 个答案:

答案 0 :(得分:4)

那不是web borwser,你应该require jQuery模块并自己定义jQuery变量(就像你使用SocketIO一样)。

var jQuery = require('jQuery')

结帐docs了解详情。

<小时/> 的 UPD

关于问题更新。

您不需要npm install jquery使您的HTML页面中的库工作(因为这些中的javascript将在用户的浏览器中执行,而不是Node)。您需要做的是在HTML文档中包含远程脚本,如下所示:

<html>
  <head>
    <!-- Embedd jQuery into HTML page to make it available in browser -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script>
      // So, browser now knows about jQuery, but don't know about anything in <body>
      // We should wait, untill page will be fully loaded, and only then
      // read html input values, initiate connections, etc.
      $(function() {
        // this code will be executed after DOM is ready
        send();
      });

      // here is your send function
      function send() {
        var user_message = $("#message_box").val();
        socket.send(user_message);
      };
    </script>

  </head>
<!-- ... -->

IMO,你应该仔细阅读一些关于客户端javascript编程的教程(有或没有jQuery - 并不重要)。然后,查看有关使用Node作为站点后端的一些教程。

答案 1 :(得分:0)

您正在查看变量JQuery是否存在,在您的代码中,您还没有定义变量JQuery。 JQuery不是变量,因此它不起作用。

答案 2 :(得分:0)

您可以尝试检查window.jQuery,该窗口应该存在,因此您应该返回未定义。

我实际上会设置其他东西虽然可能像

$(function () {
  Console.log( 'jQuery loaded');
});

然后,您可以在服务器上响应,但需要。

我对socket.io并不是很熟悉所以我怀疑可能有更好的方法,但这至少可以为您提供所需的信息。

答案 3 :(得分:0)

如果typeof jQuery == 'undefined'未定义,则使用jQuery不会崩溃,因此您可以使用以下内容:

if (typeof jQuery == 'undefined') {  
    console.log('jQuery has not been loaded!');  
}
else {
    console.log('jQuery loaded!');
}

答案 4 :(得分:0)

如果我正确理解了这个问题,你只是想确保你没有将socket.io数据发送到网络浏览器,直到 jQuery加载并准备好在浏览器上正确?如果是这种情况,那么您所要做的就是在html中添加引用jQuery的脚本标记,然后在$(document).ready中初始化socket.io客户端。如下所示:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="socket.io/socket.io.js"></script>
<script>
    $(document).ready(function() {
        var socket = io.connect('http://localhost');
        socket.on('news', function (data) {
            $('#news').append(data);
        });
    });
</script>