如何让node.js服务器也发送js文件?

时间:2013-10-09 00:12:21

标签: javascript node.js load client-server

我有一个node.js文件服务器正在运行(当访问时)返回一个html内容。同样在node.js文件的同一目录中,有一个名为test.js的javascript文件。另外在返回的html内容中,我需要加载该javascript文件。但是在html内容中,被返回,称为index.html,脚本看起来像

<script type="text/javascript" src="test.js"></script>

但是服务器没有发送test.js文件,它只发送index.html文件,而脚本链接是从相同的目录中相对加载的。

现在我不想将网址提供给test.js文件。我希望node.js文件也发送test.js文件,以便它最终位于与index.html相同的目录中。然后index.html可以从同一目录加载它。

我可以在node.js中使用代码指定同时发送test.js文件吗?

感谢。

1 个答案:

答案 0 :(得分:2)

你是否熟悉Express,正如dandavis所提到的那样? Express允许您为静态文件设置目录。请参阅下面的标准配置:

app
  .use('view engine', jade)
  .use(express.compress())
  .use(express.limit('10mb'))
  .use(express.bodyParser())
  .use(app.router)
  .use(stylus.middleware({
     src: __dirname + '/www',
     compile: function(str, path) {
          return stylus(str)
              .set('filename', path)
              .set('compress', false)
              .set('warn', true);
        }
    }))
  .use(express.static(__dirname + '/www'))
  .use(express.logger());

这里的重要部分是从底部开始的第二部分。从本质上讲,Express现在知道在该静态目录中查找您在HTML中指定的任何资产。对我来说,我在我的服务器文件夹中创建一个名为WWW的文件夹,然后添加我的JS,CSS和图像。    例如,假设我在WWW文件夹中创建了“stylus”文件夹,并将其添加到store.css中。在我的Jade模板中,我对该CSS资产的链接如下:

link(rel="stylesheet", type="text/css", href="stylus/store.css")

Express知道要查找相对于__dirname +'/ www'路径的资产,从而找到“stylus”文件夹及其包含的CSS资源。希望这会有所帮助,而且我没有冒险离开你的意图!