Module 具有多个单页应用程序的聚合物项目

Module 具有多个单页应用程序的聚合物项目,module,single-page-application,polymer-1.0,project-structure,Module,Single Page Application,Polymer 1.0,Project Structure,我想用Polymer创建项目。项目必须有几个模块(例如:联系人、日程安排、接待、管理…) Polymer starter kitscaffold是“项目的一个SPA” 如果我想要模块化项目,我必须如何组织文件(每个模块拥有SPA,独立的模块部署)。或者模块必须是多个项目?有一些选择,但最好的方法可能不是简短或直接的回答。有很多事情需要考虑 我假设,当你说“模块”时,你指的是与同一应用程序相关的、运行在同一URL中、处于同一身份验证领域的软件片段,并且一个用户可以在一天内访问一个或多个模块。如果这

我想用
Polymer
创建项目。项目必须有几个模块(例如:联系人、日程安排、接待、管理…)

Polymer starter kit
scaffold是“项目的一个SPA”


如果我想要模块化项目,我必须如何组织文件(每个模块拥有SPA,独立的模块部署)。或者模块必须是多个项目?

有一些选择,但最好的方法可能不是简短或直接的回答。有很多事情需要考虑

我假设,当你说“模块”时,你指的是与同一应用程序相关的、运行在同一URL中、处于同一身份验证领域的软件片段,并且一个用户可以在一天内访问一个或多个模块。如果这个描述不合适,您可能有很多应用程序,而不是很多模块

以下是一些选项,但我认为最后一个(“动态加载元素的SPA”方法)可能最适合您:

“加载另一个HTML页面”方法 我想你的应用程序有一些身份验证机制。我不知道您是否正在使用RESTAPI,但如果您正在使用RESTAPI,则可能需要存储登录时收到的令牌。当为每个模块调用单独的HTML时,可能需要在新加载的页面之间传递标记。可以通过HTML5 sessionStorage元素完成,也可以通过Cookie(由于CSRF攻击,不推荐使用,请参阅此处的更多内容:)

好处

  • 它将从内存中卸载不必要的脚本,内存只用于服务另一个模块。这样可以释放一些内存
  • 你可以有一个完全独立的模块,它可以帮助你的模块组织
缺点

  • 您的浏览器将重新加载,在这种情况下,您对页面的控制将减少
  • 它将重新加载您的Java脚本,即使它们在以前使用过的地方。它们可能会从缓存中读取,但浏览器可能需要向您的网站发出新请求,以便检查304未修改的标题
  • 这将需要更多的时间,你需要带来更多的信息来重新创建整个屏幕(你已经绘制了你的界面,你需要重新创建)
“一体式水疗”方法 好处

  • Javascript状态将在模块之间保持
  • 装东西一次
  • 每个模块的界面都是相同的
  • 你可以硫化你的应用程序,将其保存在一个HTML文件中
缺点

  • 臃肿而沉重。将加载很多可能未使用的东西
  • 由于组件中甚至未使用的问题,可能会产生问题
“带动态加载元素的SPA”方法 您可以动态导入新元素(我在中写了一篇文章)

好处

  • Javascript状态将在模块之间保持
  • 只在需要的时候加载东西
  • 每个模块的界面都是相同的
  • 你可以硫化你的应用程序,将其保存在一个HTML文件中
缺点

  • 加载的元素和javascript将保留在内存中,即使不再需要它们。没有简单的方法可以从内存中“卸载”东西
  • 您需要付出一些努力来正确实现该模式