node.js为网页提供访问node.js服务器上资源的权限

node.js to serve web page with access to resources on node.js server

本文关键字:node js 资源 权限 服务器 网页 访问      更新时间:2023-09-26

我有一个html页面,它引用了许多本地脚本文件,而这些脚本文件又引用了其他本地资源。我所说的local是指html文件的local。

有可能使用node.js服务器的方法来提供这样的网页吗?到目前为止,据我所知,node.js服务器可以返回html内容,但当它显示在用户的浏览器中时,我不容易看到它如何引用各种脚本,因为html不是从服务器上的普通文件夹提供的,它可以相对访问其周围的文件夹和资源。

有没有办法做到这一点,或者考虑这样的方法是疯狂的?将html和相关资源粘贴在标准服务器上并完成它更好吗?

EDIT:我应该解释一下,从node.js提供html的动机是,我已经从node.jss服务器提供了图像,这些图像是使用html将使用的相同脚本生成的。因此,用户有两种方法可以获得相同的内容:作为png文件或网页,在这两种方法中,工作都是由相同的核心脚本完成的。。。一个是html前端,另一个是node.js前端。因此,能够将所有代码保存在一个位置会很好,而不必重复并将其保存在两个位置,并且当我在主位置更新代码时,必须记住在辅助位置更新代码。

编辑以添加文件夹结构来帮助调试(请参阅下面的注释):

mypage.html
myLibFile.js
/lib/*.js   (various js resources including jquery)
/lib/modules/*.js   (various js resources)
/lib/fonts/*  (various resources)
/themes/*.js  (various js resources)

在mypage.html中,我有:

<script type="text/javascript" src="/lib/jquery.1.9.1.min.js"></script>
<script type="text/javascript" src="/lib/libFile.js"></script>
<script type="text/javascript" src="/lib/modules/modFile.js"></script>
<link href="/lib/fonts/awesomefont.css" rel="stylesheet">
<script type="text/javascript" src="/myLibFile.js"></script>
<script type="text/javascript">
    $(function () { // On DOM ready...
        // ... code ...
    });
</script>

在我的node.js中,我尝试如下设置express:

self.app.use(express.static(__dirname));
self.app.use('/lib',  express.static(__dirname + '/lib'));
self.app.use('/themes',  express.static(__dirname + '/themes'));

当然,当使用您自己定制的nodejs服务器时,您的相对路径会起作用,该服务器可以提供文件、.html.css.js等。

我假设您有某种public文件夹,用于提供资产。若你们并没有使用任何特殊的路由魔法,只引用公共文件夹的结构,那个么HTML中的相对路径就可以了。

<link rel="stylesheet" href="styles/main.css">

上面的代码可以加载类似的内容:public/styles/main.css