一名技术人员的能力高低,不只仅在于编程,更多的是一种思惟,越接触上层的技术与底层的原理,越是如此。固然,做为咱们如今所处的位置,确定要踏踏实实地撸代码,不要去过多思考高屋建瓴的东西。熟能生巧,手感热了,思惟天然慢慢地成熟起来。到后面,语言仅仅只是一门工具。前端
书的做者本身编写了一个分享学习编程和设计资源的小网站——技匠社(jijiangshe.com) 我以为这个网站自己就很不错,提供的资源也有益于我的学习交流。 那么这个网站是如何开发出来的呢?不一样架构师确定都有不同的方案,正如一千我的眼中有一千个哈姆莱特。可是,不管使用何种技术,如下几个基本流程是不会变的。程序员
网站定位与功能设定 1.1 你但愿的你网站作什么? 网站或者App不管大小,首先应该很是明确这一点。面对的人群是谁,须要给他们带来什么他们所须要的服务。举一个例子,我和朋友即将上线的App “果核”是一款面向本校大学生的校园学习生活服务类应用。 1.2 但愿设定哪些功能? 围绕“校园学习生活服务”这个核心,咱们分了几个板块:校园应用(课表/绩点/馆藏/俱乐部/校车/空教室);每日推荐(首页/此刻/彼时/星座/地气);小工具(待办便签/吃啥/分贝计/翻译/查快递等);论坛(开发中);健康管理(开发中)angularjs
信息架构(概要设计/业务建模) 这个难度就比较高了,须要必定的经验与思惟力度,对不一样纬度和粒度的信息进行抽象,规划,设计,从而支撑起整个网站的信息体系。这就是架构师干的活,若是达到了这个阶段,已经步入高手的行列了。web
"我经历过不少不一样的信息架构方法论,从最初基于模块的设计,到后来的领域驱动设计(DDD),面向服务的设计(SOA),Oracle的基于数据建模驱动的设计,再到最新的微服务架构设计,等等。我想说,这些方法论大可能是针对那些大规模应用而言的,你须要了解他们,并有意识地在你的系统设计中去匹配这些优秀的架构和设计思想,这有利于你作出拓展性良好的系统,从而避免了因整个系统复杂度的提高而致使大规模重构的风险。"spring
对照技匠社这个网站来看,须要定义三个实体类:User(用户),Resource(资源),Feedback(反馈)。 围绕这三个模块,再定义出三个服务:UserService,ResourceService,FeedbackService。 接着再为这三个服务设计须要用到的方法。shell
UI设计 对于资金充裕的项目,须要由专业设计师来操刀。再不济也须要专业的前端设计和美工,然而不少小型项目,因为***没有钱***,不少时候甚至由后台程序员来凭感受画一画(好比“果核”)。因此有空时,学一点设计,或者不须要刻意去学,多去领会一些美,品味天然会提高一些,这在我看来是颇有必要的。 实际状况是,不少网站开发都会套用开源的模板,这样能够避免重复造轮子,更为便捷温馨。可是使用模板也有他的缺点,大体分为如下几点:数据库
前端开发 就针对技匠社这个网站而言。 目前最流行的前端框架是AngularJS和React。在这个项目中选择的是AngularJS,有如下两个方面的缘由:编程
后台开发 SpringBoot:开发基于REST的服务。 MyBatis:提供基于SQL的持久层支持。 Redis:持久化用户的Session信息。 SpringSecurity:提供安全方面的支持。 MySQL:使用传统的关系型数据库。 Maven:项目的包依赖管理,以及项目打包。安全
Spring Boot并非Spring的一个升级版本,而是一个为构建微服务提供更好支持的全新框架。他是一个可以提供良好拓展性的框架,在初期能够将全部的功能做为一个总体对外服务,随着用户量的上升和系统规模的不断扩大,能够借助Spring Boot,并基于Domain Driven Design的设计思想将系统的的服务进行拆分,构建出一系列微服务。前端框架
"之前,我在启动一套本地的开发环境时,老是须要手工地一个个去单击那些服务,逐一启动web服务器,数据库服务器,打开IDE等等。这看起来每次只须要花费2-3分钟的时间,但这是天天天天都须要进行的操做,并且因为调试须要,一天以内须要重复启动好几回。一个月下来,我光在启动环境的时间就花费了2-3个小时。后来,我便学着写了一个shell脚本,其实很是简单,就是按照顺序去启动服务的命令,这样我只要单击那个脚本,整个环境就搭建好了。所以,我常常鼓励身边的程序员去写自动化脚本,让本身从重复性的工做中解脱出来。"
代码重构 封存,之后再写。
规范代码
暂时就写到这,这本书总体仍是不错的,可是仍是有点偏鸡汤型,这种类型的书现阶段而言只需读一两本就够了,把握一下方向,更多仍是须要去践行。