使用express.js,我可以从根目录外访问静态文件吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用express.js,我可以从根目录外访问静态文件吗?相关的知识,希望对你有一定的参考价值。
我有一个express应用,我打算把它作为一个代理来使用,以捕获一些由Angular编写的应用发出的请求。Angular应用已经存在,并且有一个我不想改变的构建配置。
我想在平行的文件树中管理我的Angular和Express应用,例如:。
Angular应用的路径如下rcangularappagesimimg1.gif。
srcexpressappapp.js,我可以从包含Express.js应用的并行文件树中访问Angular应用内部的静态资源吗?
我可以从包含我的Express.js应用的并行文件树中访问Angular应用内部的静态资源吗?我已经尝试了几次,但发现很难正确配置,所以我想知道是否有什么东西阻止了这一点。
我之所以发这个帖子,是因为我一直在寻找答案,却没有找到。从表面上看,这肯定是可以的,但我在正确配置方面遇到了不少困难。
最后,我发现下面的工作很好,但相当细微的语法差异导致事情没有达到预期的效果。
在快递根目录内有一个静态目录的简单模式很简单。
app.use (express.static( './public'));
假设我的静态图像在
/root/expressapp/public/images
我可以通过以下方式检索图像 http:/localhostimagesimage.png。
你也可以看到这样的形式
app.use ( express.static(__dirname + '/public'));
这就把第一个例子中的相对路径换成了一个完全限定的路径。
假设我想从angular应用中的平行目录中获取一个图片。在这种情况下,一个相对路径就像我所期望的一样
app.use( express.static('../angularapp/images'));
现在,我可以在Angular应用中访问图片为
http://localhost/image1.gif
我也可以在平行树中对目录进行别名,这样就可以做到
app.use ('/fbsite', express.static( '../angularapp/images'));
和访问
http://localhost/angularsite/image1.gif
我也可以使用完全限定的路径,但如果你想这样做,你需要在路径中添加一个前导斜杠,因为__dirname没有后导斜杠。
app.use('/angularimages', express.static( __dirname + '/../angularapp/images'));
并通过以下方式访问
http://localhost/angularimages/image1.gif
需要仔细注意路径构造,但只要稍加练习,你就可以组织对资源的访问,而不需要在一个文件树中同时编译express应用和前端代码。这有时可以简化复杂构建的重构,并增强解决方案的模块化。
在我的案例中,我预计将从Angular-js前端进化到涉及React.js的前端,这种并行文件树的方法可以增强重构,因为它可以隔离系统中每个子部分的复杂构建依赖关系。
我不得不使用 path.join()
以使其发挥作用。对于你的例子。
app.use(express.static(path.join(__dirname, '/../angularapp/images')))
如果公共文件夹存在于应用程序的根文件夹内,那么使用 app.use('/static', express.static(path.join(__dirname, 'public')));
如果公共文件夹存在于应用程序的根文件夹之外,则使用 app.use('/static', express.static(path.join(__dirname, '../public')));
以上是关于使用express.js,我可以从根目录外访问静态文件吗?的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Express.js 从请求中获取 POST 正文
Node.js Express js在较大文件上提供静态文件的速度非常慢