如何结合播放框架和angular2?
How to combine play framework and angular2?
我的问题是在项目中如何将前后端组织在一起。
据我所知,有两种方法可以做到这一点
- 使用 web-jars 依赖项和 sbt 插件将前端和后端分组在一个项目中。所以 sbt 将 运行 所有必要的操作,如
uglify
、concat
、compilation
(typescript
到 javascript
)...
- 前后端分离,分别部署。在这种情况下,后端必须添加 header
Access-Control-Allow-Origin
。这样前台和后台就可以部署在2个不同的主机上。要使用的工具将是 npm 和 gulp/grunt
- 1 和 2 的混合。前面和后面仍然使用相同的存储库,但前面是由 npm、bower 和 gulp/grunt
等外部工具构建和生成的
目前,选项 2 和选项 3 的文档不多。而且 typescript
插件还没有准备好。
scala play + angular2开发哪种方式更好?
我最近一直在使用几个 Angular 和 Angular 2 个应用程序并处理了类似的问题。对于所有场景,我们的后端和前端应用程序在代码方面都是分开的,并且仅通过 REST 接口进行通信。尽管如此,我们同时提供了前端和后端部分,并且为两者使用一个托管服务器感觉很自然(可以是 Play Framework 或 Tomcat)。
选项#1
一开始,我们选择了这个。 Webjars 看起来像一个奇迹,几个 sbt
或 maven
插件可以帮助您完成前端项目的缩小、编译、linting 等。 这对某些人来说可能会很顺利。 不幸的是,我发现这个工作流程不自然。某些插件丢失或配置困难。 Webjars 并不总是最新的,其中一些是自动可用的,有些不是......等等。在一个简单的项目中它可能有效,但对我来说,这还不够。
选项#2
我们尝试过单独的服务器进行开发,但我们很快就放弃了。对于大多数操作,您仍然需要同时使用前端和后端服务器。所以你必须同时开始。这意味着您有 2 倍多的命令或工作流程可以记住并教给其他人。 CORS 不是大问题,但您可能会考虑在生产环境中禁用它,这意味着项目需要额外的工作。通过这种方式单独开发后端或前端会更快,但在我看来,如果您要同时提供两者 - 您的开发过程应该可以帮助您。
选项 #3
那就是我们正在使用的那个。使用 sbt 是可能且方便的。 SbtWeb
插件允许您将 playRunHooks
设置为您希望对您的项目 运行 执行的任何操作。这个想法是 运行 一个 JavaScript 构建工具,它将完成所有必要的前端工作,fe:
playRunHooks += {
Process(Seq("npm", "install"), file(portal)).lines.foreach(println)
RunSubProcess(portal, "npm", "run", "watch")
}
可以找到 RunSubProcess here.
长话短说,您让 Play Server 为您的静态内容提供服务,但忽略其更改。这是由 npm
、gulp
、webpack
、grunt
处理的 - 无论您选择什么。有很多 JavaScript 构建工具、插件和模板可以帮助您。您不需要任何 sbt
插件,只需让 JavaScript 世界完成它的工作即可。一开始可能很难设置,但很快就会收到回报。
作为示例项目,您可能需要查看 Activator 模板 Play Framework with Angular 2 and Webpack 2 and it's project is hosted on GitHub: play-ng2-webpack2。它帮了我一些忙。
现在也可以使用 Tomcat、xsbt-web-plugin 和开发模式。哲学是相似的。
希望你能找到自己的路:)。
我的问题是在项目中如何将前后端组织在一起。 据我所知,有两种方法可以做到这一点
- 使用 web-jars 依赖项和 sbt 插件将前端和后端分组在一个项目中。所以 sbt 将 运行 所有必要的操作,如
uglify
、concat
、compilation
(typescript
到javascript
)... - 前后端分离,分别部署。在这种情况下,后端必须添加 header
Access-Control-Allow-Origin
。这样前台和后台就可以部署在2个不同的主机上。要使用的工具将是 npm 和 gulp/grunt - 1 和 2 的混合。前面和后面仍然使用相同的存储库,但前面是由 npm、bower 和 gulp/grunt 等外部工具构建和生成的
目前,选项 2 和选项 3 的文档不多。而且 typescript
插件还没有准备好。
scala play + angular2开发哪种方式更好?
我最近一直在使用几个 Angular 和 Angular 2 个应用程序并处理了类似的问题。对于所有场景,我们的后端和前端应用程序在代码方面都是分开的,并且仅通过 REST 接口进行通信。尽管如此,我们同时提供了前端和后端部分,并且为两者使用一个托管服务器感觉很自然(可以是 Play Framework 或 Tomcat)。
选项#1
一开始,我们选择了这个。 Webjars 看起来像一个奇迹,几个 sbt
或 maven
插件可以帮助您完成前端项目的缩小、编译、linting 等。 这对某些人来说可能会很顺利。 不幸的是,我发现这个工作流程不自然。某些插件丢失或配置困难。 Webjars 并不总是最新的,其中一些是自动可用的,有些不是......等等。在一个简单的项目中它可能有效,但对我来说,这还不够。
选项#2 我们尝试过单独的服务器进行开发,但我们很快就放弃了。对于大多数操作,您仍然需要同时使用前端和后端服务器。所以你必须同时开始。这意味着您有 2 倍多的命令或工作流程可以记住并教给其他人。 CORS 不是大问题,但您可能会考虑在生产环境中禁用它,这意味着项目需要额外的工作。通过这种方式单独开发后端或前端会更快,但在我看来,如果您要同时提供两者 - 您的开发过程应该可以帮助您。
选项 #3
那就是我们正在使用的那个。使用 sbt 是可能且方便的。 SbtWeb
插件允许您将 playRunHooks
设置为您希望对您的项目 运行 执行的任何操作。这个想法是 运行 一个 JavaScript 构建工具,它将完成所有必要的前端工作,fe:
playRunHooks += {
Process(Seq("npm", "install"), file(portal)).lines.foreach(println)
RunSubProcess(portal, "npm", "run", "watch")
}
可以找到 RunSubProcess here.
长话短说,您让 Play Server 为您的静态内容提供服务,但忽略其更改。这是由 npm
、gulp
、webpack
、grunt
处理的 - 无论您选择什么。有很多 JavaScript 构建工具、插件和模板可以帮助您。您不需要任何 sbt
插件,只需让 JavaScript 世界完成它的工作即可。一开始可能很难设置,但很快就会收到回报。
作为示例项目,您可能需要查看 Activator 模板 Play Framework with Angular 2 and Webpack 2 and it's project is hosted on GitHub: play-ng2-webpack2。它帮了我一些忙。
现在也可以使用 Tomcat、xsbt-web-plugin 和开发模式。哲学是相似的。
希望你能找到自己的路:)。