我计划创建一个纯DART应用程序,其中HTTP服务器和Web客户端都是用DART编写的.来自Java和Eclipse的终极目标是,我可以在DART编辑器中打开整个项目层次 struct ,并且能够运行为客户端文件提供服务的服务器,并调试应用程序的两端(服务器端使用DartVM,客户端使用Dartium).
我启动了Dart编辑器,在创建了一个简单的命令行应用程序作为服务器端的基础之后,我对项目布局感到困惑.
直接服务器端代码文件(web服务器boostrap类、处理程序和过滤器类)肯定会进入projects bin/文件夹.服务器端依赖关系将进入项目的pubspec.yaml文件.
当服务器必须访问客户端应用程序文件(.dart文件、静态页面源等)才能将其提供给浏览器时,问题就会出现.最简单的解决方案是在服务器项目中创建一个web文件夹,并将客户机web文件放在那里,但这样(据我所知)服务器端依赖项会继承到客户机中,因为我们仍然在同一个pubspec范围内.我不要这个.
我想过在项目的lib/文件夹中创建一个客户端库,并将web文件放在那里,但我不知道在那里放一个完整的web应用程序是什么好做法.我想我必须将HTML语言和其他客户端静电文件放到库的ASSET/子文件夹中.我担心这样会失go IDE对Web应用程序的帮助.
我还可以做的是将客户端放到一个单独的项目中,用它自己的pubspec.yaml像DART Webapp项目一样组织它,然后以某种方式使其成为服务器应用程序的依赖项.我不知道这样服务器是否可以访问另一个项目中的Web文件来提供服务.这可能是执行此操作的最佳方式,因为它提供了客户端和服务器文件的清晰分离.
有人能告诉我做这件事的正确方法吗?
一些更多的解释. 假设我采用其他人已经在答案中建议的单独项目方法,但我仍然喜欢运行服务器,它能够在开发阶段为客户端提供服务,而不需要任何花哨的技巧.服务器必须访问其他项目中的客户端文件.不管它是Javascript还是DART,静电文件无论如何都在那里.在开发过程中,我希望服务于DART文件,因为Dartium的直接DART运行能力大大加快了开发速度.
使用Java和Maven,我可以使客户机包成为服务器的运行时依赖项,并且我可以简单地从类路径提供客户机文件.Dart是否支持以类似的方式访问pub依赖项的内部文件,或者唯一的方式是将所有内容放入客户端的assets资源 文件夹,或者使用相对路径黑客?