3

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

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

但是服务器不发送test.js文件,它只发送index.html文件,并且脚本链接相对地从同一目录加载它。

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

有没有一种方法可以在node.jswith 代码中指定也可以发送test.js文件?

谢谢。

4

1 回答 1

2

正如 dandavis 所说,您熟悉 Express 吗?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 资产。希望这会有所帮助,并且我并没有冒险偏离您的意图!

于 2013-10-09T01:24:18.300 回答