我试图建立我的Node.js应用程序的管理面板。我的当前文件夹结构如下所示:
client (folder)
images (folder)
fonts (folder)
index.html
index.css
index.js
app.js (node.js server code)
package.json
我想在该根目录中有另一个文件夹,如下所示:
admin (folder)
index.html
index.css
index.js
在我的node.js应用程序中只有两行表达代码(见下文),我尝试了第一个“逻辑”东西。
app.use(express.static(path.join(__dirname, 'client')))
app.use(express.static(path.join(__dirname, 'admin')))
app.get('/admin', (req, res) => res.sendFile(`${__dirname}/admin/index.html`))
app.get('*', (req, res) => res.sendFile(`${__dirname}/client/index.html`))
但是它显然不起作用,在index.html第1行上引发了一些奇怪的错误,即“ <”是无效字符或某些字符,因此它已损坏。
代码:
app.use(express.static(path.join(__dirname, 'client')))
app.get('*', (req, res) => res.sendFile(`${__dirname}/client/index.html`))
这实际上是我目前在express中使用的所有代码,说实话,我什至都不甚了解。所有的路由都在客户端完成,到目前为止,它工作得很好。
我要在这里完成的工作是,无论用户导航到什么路由,他都会重定向到我的客户端应用程序,而前端路由器负责其余的工作(即localhost:8080 /或localhost:8080 / ps4 / games。 ..)。但是,如果我去到localhost:8080 / admin,然后只有在这种情况下,我想成为一个管理面板,从那里我可以登录并管理自己的产品,菜单项,回答聊天消息等
谢谢!
答案 0 :(得分:0)
您可以替换以下4行代码:
app.use(express.static(path.join(__dirname, 'client')))
app.use(express.static(path.join(__dirname, 'admin')))
app.get('/admin', (req, res) => res.sendFile(`${__dirname}/admin/index.html`))
app.get('*', (req, res) => res.sendFile(`${__dirname}/client/index.html`))
带有这些:
app.use('/', express.static(__dirname +'/client'));
app.use('/admin', express.static(__dirname +'/admin'));
上面的express内置函数允许您使用所需路径托管静态文件。您可以在http://expressjs.com/en/starter/static-files.html
的express文档中找到有关托管静态文件的更多信息。