带有node.js的基本web服务器,用于提供服务html文件和资产

dje*_*evg 40 javascript node.js express

我正在做一些前端实验,我想有一个非常基本的网络服务器来快速启动项目并提供文件(一个index.html文件+一些css/js/img文件).所以我正在尝试使用node.js和express,我已经玩了两次,但是这次我不想使用渲染引擎,因为我只有一个静态文件,这个代码我得到了html文件但不是资产(错误404):

var express = require('express'),
    app = express.createServer();

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

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法(如果可能,在一个文件中)或Express需要使用视图和渲染引擎?

ajv*_*nti 61

我遇到了这个,因为我有类似的情况.我不需要或不喜欢模板.您放在express下的public /目录中的任何内容都将作为静态内容提供(就像Apache一样).所以我将index.html放在那里并使用sendfile来处理没有文件的请求(例如:GET http:// mysite /):

app.get('/', function(req,res) {
  res.sendfile('public/index.html');
});
Run Code Online (Sandbox Code Playgroud)

  • 并使用`app.get(/^(.+)$/,function(req,res){res.sendfile('public /'+ req.params [0]);});提供其余文件. (16认同)
  • 在express 4.14.3中:`express deprecated res.sendfile:使用res.sendFile代替` (2认同)

vin*_*esh 29

以下代码为我工作.

var express = require('express'),
  app = express(),
  http = require('http'),
  httpServer = http.Server(app);

app.use(express.static(__dirname + '/folder_containing_assets_OR_scripts'));

app.get('/', function(req, res) {
  res.sendfile(__dirname + '/index.html');
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

这会加载包含资产的页面


isN*_*247 13

你可以用 在node.js中有这样的解决方案 (链接不再有效),正如我之前发表的博客.

总结,安装连接npm install connect.

然后将此代码粘贴到server.js与HTML/CSS/JS文件位于同一文件夹中的文件中.

var util = require('util'),
    connect = require('connect'),
    port = 1337;

connect.createServer(connect.static(__dirname)).listen(port);
util.puts('Listening on ' + port + '...');
util.puts('Press Ctrl + C to stop.');
Run Code Online (Sandbox Code Playgroud)

现在导航到终端中的该文件夹并运行node server.js,这将为您提供一个临时Web服务器http://localhost:1337

  • 我认为这是旧的,我得到'没有方法'静态' (3认同)
  • 获取 `connect.static 不是一个函数` (2认同)