c# - 带有 angularjs 的模块化 ASP.NET 5 SPA

标签 c# angularjs single-page-application asp.net-core

我们一直致力于使用 SPA 作为前端的大型项目。 我们要求应用程序必须是模块化的,这意味着我们可以向不同的客户出售不同的模块。 我们一直在努力为该项目寻找最佳方法。

我们选择这种方法: 一个具有通用功能的 Web 应用程序和每个模块 - 一个类库(包)。 但是我们有静态文件的问题。我们无法将 Main WebApp 配置为在不同位置查找静态文件。

我们试试这个:

app.UseStaticFiles(new StaticFileOptions()
{
  FileProvider = new EmbeddedFileProvider(webModuleAssembly),
  RequestPath = new PathString("/Module1")
}

但它不起作用。

我们找不到这种情况的例子。 (我们使用 ASP.Net 5、MVC 6-beta 8)

有没有人建议我们如何解决这个问题,或者您建议另一种方法。

更多信息:每个模块可能有很多文件,包括帮助页面、本地化、图像等。

附言。我们讨论了在主 WebApp 中为每个模块创建文件夹的解决方案。但有时我们需要一些 Controller (mvc/web api)来支持客户端。 - 如果我们将它们放在一个项目中,我们必须将它们安装给没有购买它的客户。 - 如果我们只将 MVC/WEB API Controller 分离到类库中,我们将在维护代码方面遇到问题。 当我说 MVC/WEB API Controller 时,我只谈论一些支持特定客户端操作的 Controller ——我们有不同的 WebApi 项目来实现业务逻辑。

最佳答案

真正的问题是在您的应用启动并运行后跟踪新插件。

最好的办法是为所有插件创建一个基本文件夹(例如:wwwroot/Modules)。插件应该在那里工作(加载)。

之后,我建议基于原始实现 available on GitHub here 创建 StaticFileMiddleware 的自定义实现,即:

  1. 根据缓存的“可用插件”(可用目录信息)集合解析每个请求;
  2. 每当在您的标准插件文件夹下添加新文件夹时(例如:在 wwwroot/Modules 下),请手动重置该缓存。

使用基于 EmbeddedFileProvider 的自定义 FileProvider 还可以让您隐藏路径元素。例如:您可以使用“/Billing/Views/something.html”而不是浏览“/Modules/Billing/Views/something.html”。

关于c# - 带有 angularjs 的模块化 ASP.NET 5 SPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33345116/

相关文章:

javascript - 颤振网络 : SPA: Open Graph: Dynamically assign og:image meta tags

javascript - 通过类 html 内容对 html 单页站点进行 SEO

javascript - 获取客户的一些身份信息

c# - 如何在 ASP.NET 中将对象保存到 session 并在 View 中访问它

javascript - 如何在 chrome 开发人员工具时间轴中获得可重现的节点数?

angularjs - 将提供程序注入(inject)指令不起作用

single-page-application - 如何将 Durandal.js 配置为在同一个文件夹中拥有多个具有 View 和 View 模型的区域?

c# - 消息 - 更新 Azure 上的函数版本

c# - 如何在 C# 中以 mm/dd/yyyy 格式获取今天的日期?

angularjs - 设置索引默认主页 angularjs