【问题标题】:node.js/socket.io how to separate javascript of the html?node.js/socket.io 如何分离html的javascript?
【发布时间】:2014-04-09 14:43:20
【问题描述】:

我想分离 HTML 的 Javascript 代码。

这是我当前的 index.html :

   <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Test</title>
        </head>

        <body>
            <p>Welcome</p>
            <script src="/socket.io/socket.io.js"></script>
            <script>
              var socket = io.connect('http://localhost');
            </script>
        </body>
    </html>

我想要这个:

index.html

   <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Test</title>
        </head>

        <body>
            <p>Welcome</p>
            <script src="client.js"></script>
        </body>
    </html>

client.js

var io = require('socket.io');
var socket = io.connect('http://localhost');

我的服务器路由是这样设置的:(express + fs)

app.get('/', function(req, res) {
    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {"Content-Type": "text/html"});
        res.write(content);
        res.end();
    });
});

我也必须发送 client.js 吗?实际上,index.html 上的 Javascript 控制台显示“无法获取 http::localhost/client.js”。

有什么想法吗?非常感谢。

尼古拉斯。

【问题讨论】:

    标签: javascript html node.js file socket.io


    【解决方案1】:

    您必须为静态内容添加一个文件夹,然后将其添加到您的快速配置中:

    app.configure(function(){
        app.use(express.static(__dirname + '/public'));
    });
    

    之后,您可以删除app.get('/') 路由

    【讨论】:

    • 谢谢,它正在工作!我选择了 mobile-detect 来检测连接的设备。根据我想显示不同的页面。在您的帮助之前,我可以在“app.get('/')”路线中进行管理,但现在我不知道。你知道我该怎么办吗?谢谢!
    • 如果你想处理来自服务器的'/'路由,你需要将你的index.html重命名为index_desktop.html或index_mobile.html,然后,你可以使用get('/' ) 路由并呈现您需要验证客户端类型的文件:req.headers
    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 2012-03-31
    • 2016-01-16
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多