NodeJS - 如何在现有项目中注入所有依赖项?

时间:2015-10-02 15:02:49

标签: javascript css node.js html5 socket.io

我有一个现有的Web项目,其中包含很少的依赖项,例如

  • Materialize.css
  • lodash.js
  • 的script.js
  • 的style.css

    依旧......

我认为socketIO无法加载这样的文件:

<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>

问题是我想让我的应用程序与socket.io进行通信,但是当我启动服务器文件(index.js)时,我可以看到我的页面,但完全没有css而没有脚本。

我的index.js看起来像这样:

var http = require('http');
var fs = require('fs');

var server = http.createServer(function(req, res) {
    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {"Content-Type": "text/html"});
        res.end(content);
    });
});


var io = require('socket.io').listen(server);


io.sockets.on('connection', function (socket) {
    console.log('Un client est connecté !');
    socket.emit('message', 'Vous êtes bien connecté !');
});


server.listen(8080);

那么您是否知道如何告诉服务器注入我现有网站的所有资源?

1 个答案:

答案 0 :(得分:0)

我认为您使用的示例代码仅仅是为客户提供服务的简单示例,而不是实际提供HTML网页或其他静态内容。

使用Express,您可以这样做:

var app = require('../app');
var server = http.createServer(app);

然后在app.js:

app.use(express.static(path.join(__dirname, 'public')));    //to render static content files to the browser from a predefined static resource directory

请注意express.static如何指向静态内容的位置。在这种情况下,它位于/public文件夹中(可以是您选择的任何其他文件夹)。这就是index.html*.css以及您提到的所有资源的位置。

可以找到详细的示例here

最后,您在问题中粘贴的代码无需在index.html内打开并提供http.createServer文件即可运行;它不适用于静态内容。