Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 直接从谷歌云存储提供html并解析相关链接_Node.js_Google Cloud Platform_Google Cloud Storage_E Commerce - Fatal编程技术网

Node.js 直接从谷歌云存储提供html并解析相关链接

Node.js 直接从谷歌云存储提供html并解析相关链接,node.js,google-cloud-platform,google-cloud-storage,e-commerce,Node.js,Google Cloud Platform,Google Cloud Storage,E Commerce,我有一个简单的html文件,其中包括如下css: <link rel="stylesheet" href="./css/style.css" /> handlers: - url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico - url: /static static_dir: public - url: /.* se

我有一个简单的html文件,其中包括如下css:

<link rel="stylesheet" href="./css/style.css" />
handlers:
  - url: /favicon\.ico
    static_files: favicon.ico
    upload: favicon\.ico

  - url: /static
    static_dir: public

  - url: /.*
    secure: always
    redirect_http_response_code: 301
    script: auto
但据我所知,这在本地机器上不起作用


另外,电子商务公司如何解决这个问题?例如,每个商店都可以有不同的可定制主题。所以我知道每个租户都有自己的bucket,在租户bucket中,这个可定制的主题保存正确吗?那么,我是如何假设这个问题应该和我一样。如何应对这种情况以及如何处理?

您当前正试图从谷歌应用程序引擎url上提供的index.html中访问bucket静态css文件。这是无法开箱即用的

解决这个问题有很多选择:

  • 在公共场所从同一个存储桶中提供index.html,其他静态文件(如css)在哪里。这也得益于Being作为CDN更有效。(如果可能的话,这是我建议的方式,唯一不能这样做的情况可能是当您希望在将index.html文件发送回客户端之前计算index.html文件中的服务器端html内容时,但这很有可能在客户端完成)

  • 在index.html中“动态”或“静态”构建css资源的绝对路径,以便链接标记看起来像:


  • 使用应用程序以编程方式提供所有内容,并使用特殊的路由,通过从bucket读取文件提供静态内容,就像使用index.html一样。这应该允许您为其他静态文件保留相对路径

实际上,如果您更改了为Node.js示例共享的文档链接,那么会有一整节介绍如何为本地开发提供文件,其中有一个
.css
示例使用
express.static
来应用它,下面是特定部分的示例,因此对于生产和本地开发都是可能的。当然,这是针对AppEngine的,不是针对Compute Engine的,但这是一个可能的替代方案,这就足够了吗?如果您的css目录可以通过http或https访问,您可以在服务器端添加一个新的
标记,同时返回更改页面基本url的响应。通过这种方式,html由应用程序引擎提供服务,静态资产从云存储中提取。阅读更多关于
base
tag的信息。您能详细说明第一点吗?因此,如果我想从数据库中提供一些东西,我需要提供index.html,然后这个index.html应该调用backend onPageLoad或类似的东西。正确吗?是的,就是这样,在这种情况下,您必须对一些api(ajax请求)进行一些前端http调用,以与后端应用程序交互。执行此类查询可以返回您想要的任何数据,如json。在这种情况下,原始数据来自API,而不是从后端生成并发送回客户端的html。您很快就会想要使用前端框架来处理常见的东西,比如从json后端数据中提取模板。我会推荐和vue js,但是反应,角度。。。我会做的。这样做可能会导致您构建一个SPA(单页应用程序),它具有所有的优点和缺点。如果您朝这个方向走,您可能还希望坚持使用最小的前端代码并从后端加载html Chunck。但在2020年它是相当脏的(在2000年还可以)。这也很大程度上取决于你的“客户”目标是什么。您需要丰富的前端交互吗?一些原始html表单就足够了吗?还要注意的是,对我来说,潜入前端应用程序是一个无穷无尽、令人兴奋和有益的话题。我回答了你的问题吗?是的,你回答了,我会接受你的回答,除了我有关于这个评论的后续问题。我的问题是,电子商务平台如何解决这个问题?例如…我有一个多租户应用程序,每个租户都有不同的网页主题。如何根据租户提供不同的网页主题?另外,如果这在2000年还可以,而不是现在,你有什么建议如何在2020年做得更好吗?:)我不确定是否理解你的问题,但做多租户应用程序更复杂。这在很大程度上取决于你如何分割你的房客。假设每个子域都有一个租户:1)很难从静态bucket为所有租户提供服务,我认为您可能希望通过在cdn前面放置一个反向代理来处理子域或类似问题,但这超出了本主题的范围。您还可以更简单地拥有一个登录登录页,当用户在租户上下文中登录时,该登录页将被加载,主题数据将在SPA或服务器端页面呈现中相应地加载。
handlers:
  - url: /favicon\.ico
    static_files: favicon.ico
    upload: favicon\.ico

  - url: /static
    static_dir: public

  - url: /.*
    secure: always
    redirect_http_response_code: 301
    script: auto