我有一个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
文件吗?
感谢。
答案 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资源。希望这会有所帮助,而且我没有冒险离开你的意图!