gpt4 book ai didi

angularjs - 如何使我的 AngularJS SPA 在 VS 2015 Web 开发环境上运行正确刷新

转载 作者:行者123 更新时间:2023-12-04 08:05:04 24 4
gpt4 key购买 nike

我有一个使用 Visual Studio 2015 开发的 AngularJS SPA 应用程序。当我单击发布时,它会发布 index.html 并且工作正常。但是,如果我在一个页面上并单击刷新,那么它会尝试刷新 SPA 页面,例如 example.com/home/about。这失败了,因为我没有主页/关于页面。

有什么方法可以修改我的 web.config 文件(仅用于本地测试),以便它实际上转到 index.html(加载它)然后转到/home/about 状态?

这是我当前的 web.config:

<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>

最佳答案

看来您正在使用 html5mode .在这种情况下,没有 #使 URL 从请求更改为服务器。
使用此配置,您需要服务器的帮助。当它收到来自您的 SPA 路由的请求时,它将为 index.html 提供服务。

SO answer有关于在 web.config 上配置 URL 重写的详细信息:

规则通过:

  <system.webServer>
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>

它假设您的 API 位于: /api并且对于它找到的任何目录或文件,它都按原样服务。
其他任何内容都会被重写为 /其中默认文档配置为 index.html ,将加载您的 SPA。

另请注意,您需要安装 URL Rewrite module对于 IIS ( IIS Express doesn't need the module )

另一种选择是这些轻量级 HTTP 服务器 npm 包之一。
John Papa has one: lite-server .它使用 BrowserSync引擎盖下:

BrowserSync does most of what we want in a super fast lightweight development server. It serves the static content, detects changes, refreshes the browser, and offers many customizations.

When creating a SPA there are routes that are only known to the browser. For example, /customer/21 may be a client side route for an Angular app. If this route is entered manually or linked to directly as the entry point of the Angular app (aka a deep link) the static server will receive the request, because Angular is not loaded yet. The server will not find a match for the route and thus return a 404. The desired behavior in this case is to return the index.html (or whatever starting page of the app we have defined). BrowserSync does not automatically allow for a fallback page. But it does allow for custom middleware. This is where lite-server steps in.

lite-server is a simple customized wrapper around BrowserSync to make it easy to serve SPAs.

关于angularjs - 如何使我的 AngularJS SPA 在 VS 2015 Web 开发环境上运行正确刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com