【问题标题】:Using express.js to serve html file along with scripts, css, and images使用 express.js 提供 html 文件以及脚本、css 和图像
【发布时间】:2015-07-19 18:58:16
【问题描述】:

我正在尝试构建我的第一个 web 应用程序,我从前端开始,并使用 jquery 和 jquery mobile 以及许多插件我已经有一个重要的前端,所有这些都源于一个 html 文件(因为 jquery mobile在同一个文件中使用页面 div),但还有一个用于应用程序的主 js 文件、一个 css 文件以及插件等中包含的许多 css 和 js 文件。我现在正在尝试使用 node.js 和 express.js 添加数据库和其他后端功能,但是当我使用 res.sendFile() 提供脚本和 css 的 html 时,我遇到了麻烦t 加载,当我尝试为目录提供服务时,它会将目录显示为我当然不希望在公共视图中出现的链接(尽管当我这样做并单击 html 文件链接时,它工作正常。

我想知道的是如何使用 express 来 a) 提供外部设计和维护的前端和 b) 允许该前端将请求发送回服务器(这样我就可以使用表单并获取数据和内容) ?

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    你应该做以下事情:

    1. 提供静态文件
    2. 创建一个 API 服务器来侦听来自您的前端应用程序的请求

    1。提供您的静态文件

    要使用 Express 提供静态文件,请阅读 this 链接。

    您基本上会将其添加到您的快递应用中:

    app.use( express.static( __dirname + '/client' ));
    

    '/client' 将是您的前端应用文件所在文件夹的名称。

    2。创建 API 服务器

    您可以查看如何创建 API 服务器here。

    对于应用程序的入口点,您应该发送/呈现文件。

    这可以通过以下代码完成:

    app
      .get( '/', function( req, res ) {
        res.sendFile( path.join( __dirname, 'client', 'index.html' ));
      });
    

    每当用户在应用程序的根路径请求文件时,这将发送一个静态文件。

    您也可以使用星号*(通配符)代替/。该符号意味着对于请求的任何路由,您将使用相同的文件/操作进行响应。

    更多关于here的回复。

    总结

    这些是构建应用程序时应该寻求的东西。

    你可以看到一个简单的应用程序实现了这些东西here。

    【讨论】:

    • 谢谢,这看起来像是我需要的,尤其是 github 页面,但有一件事,当我使用 app.use(express.static(__dirname+ '/public')); public 是包含我所有重要文件的目录我收到一个错误:“无法获取 /”在 localhost 端口,你知道为什么会发生这种情况吗?
    • 你应该设置一个 app.get( '/', function( req, res ) { /* response */ }); “/” = 指应用程序的根路径。要响应此请求,您可以使用多种方法:您可以使用 res.render() 渲染文件,也可以使用 res.sendFile() 方法发送静态文件。对于 (REST) API,您将使用 res.json() 方法。更多信息在这里:expressjs.com/api.html#res
    • @Roscode 我改进了回答您问题的答案。如果您有更多疑问,我会及时帮助您=)
    • @Roscode - 在生产中,您很可能会使用 nginx 作为反向代理。如果是这样,请使用它来提供静态资产。
    猜你喜欢
    • 2022-12-21
    • 1970-01-01
    • 2013-10-02
    • 2011-07-20
    • 2023-03-16
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多