【问题标题】:Angular Seed project, set index.html by defaultAngular Seed项目,默认设置index.html
【发布时间】:2013-03-24 03:15:42
【问题描述】:

我正在使用Angular Seed project 构建一个简单的网站。当我启动节点服务器并在 localhost:8000 输入 url 时,它会提供目录内容。我希望它提供 index.html 文件,但希望在没有重定向的情况下执行此操作。

我认为我需要修改以下函数并且我应该更改isDirectory 检查的代码,但我不确定这是否是正确的方法。任何建议将不胜感激。

StaticServlet.prototype.handleRequest = function(req, res) {
    var self = this;
    var path = ('./' + req.url.pathname).replace('//','/').replace(/%(..)/g, function(match, hex){
        return String.fromCharCode(parseInt(hex, 16));
    });
    var parts = path.split('/');
    if (parts[parts.length-1].charAt(0) === '.')
        return self.sendForbidden_(req, res, path);
    fs.stat(path, function(err, stat) {
        if (err)
            return self.sendMissing_(req, res, path);
        if (stat.isDirectory())
            return self.sendDirectory_(req, res, path);
        return self.sendFile_(req, res, path);
    });
}

更新 #1

我有两个屏幕截图需要澄清。第一张图是我目前得到的,第二张图是我想要的。

我得到了什么


我想要什么


更新 #2

使用下面的 Restify 链接,我发现以下示例正是我所需要的。

var server = restify.createServer();
var io = socketio.listen(server);

server.get('/', function indexHTML(req, res, next) {
    fs.readFile(__dirname + '/index.html', function (err, data) {
        if (err) {
            next(err);
            return;
        }

        res.setHeader('Content-Type', 'text/html');
        res.writeHead(200);
        res.end(data);
        next();
});


io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
            console.log(data);
    });
});

server.listen(8080, function () {
    console.log('socket.io server listening at %s', server.url);
});

【问题讨论】:

  • 这也应该适用于服务器静态 html: server.get("/", restify.serveStatic({ directory: './public', default: 'index.html' }));

标签: html node.js angularjs


【解决方案1】:

angular-seed 项目是客户端的起点,但实际上不是服务器端的起点。 它们包括一个没有依赖关系的简单 Web 服务器节点脚本。这样你就不需要 npm 或其他模块了。

对于服务器端,您可以使用带有connect/express 或任何其他网络服务器/语言的节点。 您只需要制作休息服务并提供一些静态html。

既然你已经安装了 Node restify 可能适合你。

更新:我创建了一个基本示例,用于将 angular-seed 与 restify 一起使用:
https://github.com/roelandmoors/restify-angular-seed

【讨论】:

  • 很好的答案,你甚至提供了一个链接!我什至找到了一个使用 Socket.IO 需要做什么的具体示例。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2014-05-04
  • 2016-04-25
  • 2018-02-28
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
  • 2011-06-15
  • 2012-02-18
相关资源
最近更新 更多