- 的Visual Studio 2017年
- Asp.Net核心工具1.1
- .Net框架4.6.2
單頁應用的和他們融合Visual Studio中的所有新支持都變得更加容易。但在本週早些時候,傑弗裏T.弗裏茨發佈了集成了一個非常好的文章,並實現與以下軟件包:
Microsoft.AspNetCore.SpaServices
Microsoft.AspNetCore.NodeServices
後,你經歷,甚至分析幾個模板,您會在您的解決方案資源管理器中看到一個名爲ClientApp
的目錄。這是配置的,並通過Webpack路由。
在Startup.cs
的內部是問題揭示的地方。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
}
在我們的請求中,我們有一些路由到我們的MVC框架。
問題,爲什麼我們需要指定此路線?如果我們只是簡單地使用app.UseDefaultFiles()
和app.UseStaticFiles()
並且在我們的wwwroot中指定了我們的索引。我們的客戶端路由器將始終返回。那麼,爲什麼我們不能做這種方式:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseDefaultFiles();
app.UseStaticFiles();
}
我明白,直接在我們的wwwroot項目不壓縮,也可以泄漏的安全性,但除了這兩個缺點,爲什麼不使用這條路線,以確保您的索引和客戶端路由器並不總是返回?
我特別提出迫使MVC總是返回Home/Index
或UseDefaultFiles()
/UseStaticFiles()
的概念。我錯過了什麼,爲什麼我們被告知強制MVC返回它?
重要:基本上,問題的目標是如何強制索引返回,以便我們的客戶端框架的路由器正在處理變化與後端返回特定的視圖狀態。
他的第一個名字是「傑弗裏」和文章是:HTTPS:/ /blogs.msdn.microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices/ –