链接的文件不公开时sendFile的替代方法

我正在做一个节点项目,我揭露我的公共文件夹,如:

app.use(express.static(path.join(__dirname, '/public'))) 

所以现在,我所有的公共文件都可以通过localhost:8080/*

我还创build了一个名为“views”的文件夹,我保存私人的意见,与他们关联的JavaScript和CSS文件。 他们是私人的意见,所以我不希望任何用户访问它们。

正如我有HTML链接我的CSS文件和JavaScript,当浏览器尝试GET,它说“找不到”,因为它们不在公用文件夹中。

我发送HTML作为sendFile在快递路线。

有没有办法把所有的文件放在公共文件夹中,然后保护它们不被公共用户访问? 或者有没有其他的sendFile,所以文件是本地呈现,它不需要请求的CSS和JavaScript文件

先谢谢你

意见在技术上是私人的。 因为它们呈现在服务器端,而不是由访问者直接访问。

但是,你通常不希望像Javascript,CSS和视图的东西是私人的。 无论如何,用户都会看到它们。 将Node.js视图设置为private的唯一原因是它们需要先由Node.js呈现,然后再发送给用户。

如果你有私人文件,你可能想要做同样的事情。
否则,只需将它们放在/public文件夹。 你不应该隐藏你的JS / CSS代码中的秘密。

编辑(以下评论):

你有几个方法来做到这一点。

要么你build立一个包含所有必要的HTML /视图 – CSS – JS的唯一的响应。

 render('view.ejs', { css: 'body { color: blue }' }) 

您需要将该variables渲染到您的视图中,就像您可能已经在使用其他视图一样。

您可能还想从文件中读取它:

 fs.readFile(`${__dirname}/css/style.css`, (error, styles) => { ... } 

或者你分别处理每个文件请求:

Node.js – 外部JS和CSS文件(只是使用node.js不表示)

(如果你使用Node.js视图,只需渲染这些而不是HTML文件)