brain dump

Angular 4 Java Developers

视频课程总结

Angular 4 Java Developers是Dan Vega和John Thompson合作的一套视频课程,可以在Dan Vega他的网站The Real Dan Vega找到。这课程名是双关语,Angular for Java Developers. 当时(2017年)Angular的版本是4(beta),这个课程名的确挺不错,不过现在Angular更新到7了吧? 找到这套课程是因为上一年5月到6月写毕业设计项目,要用到Spring Boot, Angular做开发,所以很自然就发现了有这课程,然后就搜集了,当时还没有时间看。当时已经知道JHipster这个项目,很想试试,不过毕设时间紧迫,不敢临时换技术方案。直到前阵子再重新了解JHipster时发现,这套课程的链接出现在JHipster官网推荐的第三方学习资源中。如果使用JHipster官网的链接,就会有8折优惠,而原价多少?$200 折后是$160=¥1084.61 我快速过了一遍,感觉也没有很多干货啊。只不过按照以往录视频的经验看,如果要出一套12小时左右的视频课程,应该要准备很长时间了。课程大纲准备,幻灯片动画制作,演示代码准备,还有后期编辑等等。额,但还是觉得这个价格好贵!好吧,下面记录一下有什么收获。

  1. Inspiration. Intro出现两个Logo,一个是Dan Vega的,另一个是John Thompson(Spring Framework Guru),这两个人的视频都分别看过,就没想到他们会合作一起教这个课程,虽然略惊讶,但又觉得合理。嗯,如果足够出色,自然会吸引到志同道合的人。实际上我也想走类似Dan Vega的路。
  2. 引出问题。 课程前一个小时,创建了一个Tasks Application,其实就相当于Todo list一类的demo应用。也是采用前后端分离的方案,后端Spring Boot,前端Angular,然后演示前后端如何交互。从零开始搭建一个小demo也有点烦,虽然前后端都有脚手架,但建立起很顺手的开发/调试流程还是要配置不少东西,例如设置代理,使得在ng的webpack开发服务器跑的Angular应用去localhost:8080的Spring Boot应用的Rest End Point获取数据。 其实这可以用BrowserSync解决这问题,而JHipster已经想了这些问题,且提供一站式解决方案。
  3. 减少重复劳动。视频里面有个幻灯片给出开始应用开发需要做的任务,以及完成各项任务的大概耗时。客户端开发(前端)6天,服务端10天,实体设计与实现1天,业务逻辑1天,设置开发环境与生产环境的不同配置4小时,Websocket 4小时,Swagger API文档 4小时,配置Browser Sync 4小时。大概需要21天,而使用JHipster可以将项目初期搭环境等时间缩减,直接开始写实体和业务逻辑,2天完事。
  4. IntelliJ registry hacking. 有一节Johm Thompson教了一个偷懒技巧,通过修改IntelliJ IDEA的“注册表”, 允许编译器在应用运行时亦可自动构建,那个key就是compiler.automake.allow.when.app.running. 然后再在IDE设置那里,关于编译器的选项,勾选Build project automatically. 这样,如果在开发过程中使用了Spring Boot Developer Tools,设置了Live reload,正常的情况下,修改完代码后端代码就会自动构建,浏览器内容也会自动重新加载。懒人基本操作。
  5. JDL生成实体。 感觉这部分没什么特别,可能因为语法太简单了?都是一边讲一边写实体,然后导入生成Java类。本来还以为这个主题会深入讲一下使用JDL Studio,如何设计实体,还有实体之间的关系。JDL感觉有点简单粗暴,若是快速搭建原型,用这个很不错,不用考虑太多。而有时候我却想用Enterprise Architect画UML建模,现在想会不会太过overkill了……
  6. 使用MongoDB。 有一部分内容讲到使用MongoDB,以前接触过一点MongoDB,不深入。如果对数据库有比较多插入操作,那可以考虑一下MongoDB。JHipster生成的应用,也实现了链接MongoDB的功能,真的很方便。John还演示了在Docker里使用Mongo,与本机Spring Boot应用交互,内外都是同一个端口,方便。嗯,Docker也要了解。
  7. 微服务。 新系统一般不建议一开始就采用微服务架构吧。通常都是单体应用随着业务增长变得越来越复杂、难以维护,然后被迫拆分成微服务,这才是正常过程。 如果一开始就上微服务,反而增加了复杂性。 只不过微服务架构近几年这么流行,不了解一下说不过去。然后就开始了注册中心,网关,Netflix OSS套件,Spring Cloud等等一系列,现在都很不是很了解。而课程里也不太深入,只是代码过一遍。嗯,想通过看视频深入是不现实的,自己搭应用踩坑吧。
  8. 用户管理。 JHipster默认实现了用户管理,注册登录。课程里简单演示了如何魔改用户管理模块的功能,例如增加角色,还有添加密码错误次数太多限制操作。挺有意思的,只是最后还是要啃Spring Security的文档,不熟Spring Security也玩不转魔改。 另外还有使用OAuth2实现社会化登录的,之前试过通过GitHub登录,感觉还是挺好玩的。
  9. 有用的工具。 一些库,或者插件。 一个 MapStruct,还没有用过,看起来很不错,用于Java bean类型映射,减少类型转换。然后,CircleCI,持续集成,也没有用过,准备尝试使用,可以在GitHub README放个构建状态标志感觉挺酷的。

过完一遍课程,感觉JHipster的确能减少很多重复劳动,但前提是很熟悉Angular、Spring Boot,不然后续开发也快不起来的。 嗯,所以我还是继续学习Angular和Spring Boot吧。