从前,一个类B/S架构的应用里,FEer,或者叫切图仔,切图+表单验证就是工做的所有。无奈我所作的所有,只是整个应用的冰山一角...责任小了,边缘感就强了,owner意识天然差,视野天然受限。javascript
感谢V8引擎的极速体验&chrome浏览器的紧随规范,js执行速度快的飞起,w3c规范越发丰满,FEer终于能够翻身农奴把歌唱了。推倒了切图仔的定位并不断扩展js的责任田。php
其实前端能够有模块化前端
其实前端能够知足除老本行表单验证外更多的业务逻辑vue
其实前端能够有路由层java
其实前端能够有数据层node
...mysql
看吧,这种趋势已经势不可挡,js从单文件脚本开始有模块化概念,有前端主义特点的MVC,有更高大上、业务层实现更easy的MVVM,react,vue,angular.js (姑且叫美中三强?)愈来愈多的WEB应用开始变为SPA。react
什么?你在质疑JS,你说SEO?咱们FEer来加一个服务端渲染,顺带白屏时间长问题一同解决送你,还吹毛求疵?请UEmm作一张精美的loading图附加给你,无话可说了吧~webpack
野心愈来愈强,client已经没法知足FEer,感谢酷酷的高性能服务器专家Ryan Dahl和他的node.js,不只贡献了一个基于事件的高性能的WEB服务器,还带来了javascript的大繁荣。FEer终于能够有机会低成本触及server端开发了,由于遥远的对岸将不止有json"炮弹",还会有咱们熟悉的js大兄弟,你懂得这意味着什么,海峡两岸是一家!将来的沟通,一切将变得更加简单方便趁心如意,将来对岸的大兄弟(可能就是你本身)将给你更舒心更懂你的json"礼包"。事件驱动,异步I/O,顺带手FEer就能够自信高效的将VIEW渲染、路由分发等以前可望不可及的工做包揽实现。git
也就是这样,FEer腿也不疼了,腰也不困了,一口气完成先后端开发,不费劲。好像title均可以变了,把本身称为全栈工程师,责任大了,owner意识强了,曾经的后端RD被咱们亲切的成为服务端RD,FEer能够豪爽的说:『提供给我服务就好,页面渲染、路由分发这些小事儿,小的作就好了,您去专心开发更复杂的服务端接口吧』。不过就算这样,咱们仍是很开心,由于咱们是FEer,咱们也是Full Stack developer,没错,咱们是更懂前端的后端!
咱们已经不是游击队了,咱们有本身的做战部队,须要本身独立指挥。虽然FEer在饱受折磨,强烈抗议,争得先后端分离开发的荣誉后,已经在工做流上有质的优化了(主要体如今有了写build.sh,养成了编译的好习惯)。如今做为全栈,还须要从新梳理下工做流。在社区有社区的方案,在百度,咱们这样作。icafe + icode + agile ,一条龙服务标准、周到、包满意。
icafe是百度内部的工做平台,在我理解,就是需求管理平台。PM等需求方在icafe上发布需求,开发小哥肢解圣意,将一个Aplication级别的需求不断拆分,拆分红story,逐个开发知足。PM、RD、QA在icafe平台了解PM所需,测验RD所得,清楚QA所测。
记得曾经听开发icode平台的同窗骄傲的讲,BAT中只有百度有全公司级别的统一代码仓库,而且使用git管理代码,不明觉厉,我也很骄傲。icode平台代码的提交能够经过issue号与icafe里的需求store链接起来。经过git进行版本控制是业界及开源社区主流的选择。包括百度EFE的大神们编纂了公司级别统一的各类语言的编码规范,代码提交会触发编码规范校验,保证了入库代码的规范,review后准入的限制基本保证了代码的质量。
百度的持续集成解决方案是依托于agile平台实现。还记得朴大的广告,集成的,好喝的!
。每一个icode项目都会要求开发者编写一个BCLOUD脚本,相似travis ci的.travis.yml
的文件,代码提交会触发线上云编译机集群完成编译,并记录编译状态,协助开发者保证线上代码分支的持续可用。agile另外一个主要功能是完成代码发布,发布后,代码即进入公司级代码仓库。
什么,你在说域名?我真的能够包办域名了!在你要包办域名的前,首先须要判断你心仪的但愿使用的域名是否已被占用。dig
、nslookup
是我使用的判别方法。
nslookup baidu.com //只是作示范,提醒本身小伙子野心不要太大
在确认你心仪且该域名还没有被占用的后,你就应该了解下A记录、CNAME了。简言之,一个域名的A记录是域名指向ip的映射,而CNAME是域名指向其余域名的别名映射。在百度,有shifen系统,shifen系统的域名是A记录,但它其实指向的是vip(虚拟ip),机房、机群多了之后,这样会尽量的保证运维的灵活度。
B/S架构应用运转的本质就是数据的流动。任何业务逻辑的实现到最后都会被抽象成数据结构,持久化到数据库中保存。数据库种类不少,业务中最经常使用的可能就是MySQL,Redis,MongoDB等。大多数的B/S应用数据库选型都会使用MySQL,由于它是最流行的关系型数据库,体积小、速度快、性能卓越。Redis经常使用于session共享及业务逻辑数据缓存,提升接口响应速度。说到MySQL,phpMyAdmin是一个不错的MySQL数据库管理工具,固然,做为新时代的FEer,在不方便使用phpMyAdmin的场合,你也得掌握基础的MySQL命令。
// 登陆MySQL server mysql -h IP -P port -u username -ppassword // RD让你导出个表,不能不会 mysqldump database table // 看下MySQL server上有哪些数据库 show databases; // 想操做哪一个库 use db; // 想操做的库里有哪些表 show tables; // 查看下编码 show variables like "%char%"; // 咦、不是utf8? SET character_set_client='utf8'; SET character_set_connection='utf8'; SET character_set_results='utf8'; // 增? INSERT INTO `table` (`prop`,`prop`...) VALUES(value1,value2); // 删? DELETE FROM `table` WHERE conditions; // 改? UPDATE `table` SET prop=value WHERE conditions; // 查? SELECT * FROM `table` WHERE condition;
若是还不用美中三强或其余MVVM框架(好比百度errorrik大神的san,听说能扛IE6的MVVM)怎么好意思说本身是前端。前端标配已是webpack + babel + MVVM + (FE)-router + (FE)-Store/x... 包括module bundler,transformer,MVVM,前端路由,前端状态管理,数据驱动,状态机,这些东西已经融入到现代WEB前端产品内,缺乏同样,都以为少了点什么,像个中官
。
说到node.js,说到后端服务器框架,不得再也不感谢一个大拿,TJ,贡献太大了。express, koa, co等等,进一步下降了FEer进入的门槛。后端选TJ大拿的框架就够了,固然包括百度、阿里在内都有一些本身的服务端框架,基本都是基于TJ大拿加上业务线的实际运用场景之上的封装。包括yog2,egg等。对了,MySQL orm推荐使用sequelize,这里有篇文档介绍的挺全。
如上文所述,FEer把路由分发、页面渲染这些杂活揽下之后,RD大大们就能够专心写服务端接口了。node server 与其余服务端server的通讯能够经过RPC、Webservice等方式实现,node server也能够作proxy,将客户端的请求代理到其余服务器获取业务的数据。当前开源风越来越强的风气下,各种相关node包一片大繁荣,你们能够自行选择你看中的。在个人业务场景下,我最常使用的是百度FEX Team的 node-ral。
责任越大,就要求能力越强。从FEer到Full stack developer,不是那么简单,须要变化的不止一点,要不断扩大本身的技术关注圈,提高本身的技术广度与深度,加强技术视野,只有真正按RD的标准来要求本身,配合FEer的看家本领,才能作一名合格的全栈开发。