当前位置: 首页 > 后端技术 > Node.js

FEertofullstackdevelopment

时间:2023-04-03 12:44:13 Node.js

前言曾几何时,在类B/S应用中,FEer,或者说切图,切图+表单验证就是全部工作。无奈,我所做的只是整个应用的冰山一角……责任越小,边缘感越强,楼主的意识自然差,眼界自然有限。得益于V8引擎的极速体验&chrome浏览器后续规范,js的执行速度直线上升,w3c规范也越来越全。FEer终于可以站起来当农奴唱歌了。推翻切图仔的定位,继续拓展js的责任领域。其实前端是可以模块化的。其实前端除了老的表单验证,还能满足更多的业务逻辑。其实前端是可以有路由层的。其实前端是可以有数据层的……看,这个趋势已经势不可挡,js从单文件脚本开始有了模块化的概念,前端特性的MVC,业务层更高更容易的MVVMimplementation,react,vue,angular.js(姑且称之为美国前三吧?)越来越多的WEB应用开始变成SPA。什么?你在质疑JS,你说SEO?我们FEer将添加服务器端渲染。对了,我们会解决白屏时间长的问题,发给大家。你还在挑剔吗?请UEmm做一张漂亮的loading图片附上给大家。无话可说~野心越来越强,客户已经满足不了FEer了。感谢酷炫的高性能服务器专家RyanDahl和他的node.js,不仅贡献了一个基于事件的高性能WEB服务器,也给javascript带来了巨大的繁荣。FEer终于可以有机会低成本接触服务端开发了,因为远方不仅会有json“炮弹”,还有熟悉的js兄弟。你知道这意味着什么,两岸是一家人!在未来的沟通中,一切都会变得更简单、更方便、更令人满意。以后对面的大哥(可能就是你自己)会给你一个更舒服易懂的json“大礼包”。事件驱动,异步I/O,顺带一提,FEer可以自信高效的实现VIEW渲染,路由分发等之前无法完成的任务。就这样,FEer的腿不疼了,腰也不困了,一口气完成前后端开发,不费吹灰之力。标题好像可以改。称自己为全栈工程师有更大的责任感和更强的主人翁意识。之前的后端RD被我们好心的变成了服务端RD。FEer可以大胆地说:“给我提供服务吧,好吧,页面渲染、路由分发等小事,小事小事,你可以专心开发更复杂的服务端接口。”但即便如此,我们还是很开心,因为我们是FEer,我们也是FullStackdeveloper,是的,我们更懂前端后端!新责任工作流程我们不再是游击队,我们有自己的作战部队,需要独立指挥。虽然FEer饱受折磨,强烈抗议,获得了前后端分离的荣誉,但是工作流程得到了质的优化(主要体现在会写build.sh,养成良好的编译习惯)。现在作为一个完整的堆栈,我们需要重新组织工作流程。社区有社区计划,在百度,我们就是这样做的。icafe+icode+agile,一站式服务规范,周到,包满意。需求管理网吧是百度的内部工作平台。在我的理解中,它是一个需求管理平台。PM等需求方在icafe上发布需求,开发小哥肢解圣意,不断将一个Application级需求拆分成故事,一个一个开发满足。PM、RD、QA了解icafe平台上PM需要什么,测试RD拿到什么,知道QA测试什么。代码开发记得听开发过icode平台的同学自豪地说,只有百度在BAT有全公司统一的代码仓库,用git来管理代码。我不知道,但我也很自豪。icode平台代码的提交可以通过发布号连接到icafe中的需求商城。通过git进行版本控制是业界和开源社区的主流选择。包括百度EFE在内的高手,都在公司层面制定了各种语言的统一编码规范。代码提交会触发编码规范校验,确保代码入库规范。审查后的访问限制基本保证了代码的质量。持续集成百度的持续集成解决方案是在敏捷平台上实现的。还记得朴大爷的广告,综合,好吃!每个icode项目都会要求开发者写一个BCLOUD脚本,类似于travisci的.travis.yml文件。代码提交会触发在线云端编译集群完成编译,并记录编译状态,帮助开发者保证在线代码分支持续可用。敏捷的另一个主要功能是完成代码发布。发布后,代码进入公司级代码仓库。域名什么,你说的是域名?我真的可以安排域名!在安排域名之前,您首先需要确定您要使用的域名是否已经被占用。dig和nslookup是我使用的判别方法。nslookupbaidu.com//只是一个示范,提醒自己不要野心太大。在确认自己喜欢的域名并且该域名没有被占用后,您应该了解A记录和CNAME。简而言之,域名的A记录是域名到ip的映射,CNAME是域名到其他域名的别名映射。在百度,有一个分系统。shifen系统的域名是一条A记录,其实指向的是一个VIP(虚拟ip)。机房和集群多了以后,这样会尽可能的保证运维的灵活性。数据库B/S架构应用运行的本质是数据的流动。任何业务逻辑的实现,最终都会被抽象成一个数据结构,持久化到数据库中存储。数据库的种类很多,业务中最常用的可能是MySQL、Redis、MongoDB等,B/S应用的数据库选型大多会使用MySQL,因为它是最流行的关系型数据库,体积小,速度快,性能优良。Redis常用于会话共享和业务逻辑数据缓存,以提高接口响应速度。说到MySQL,phpMyAdmin是一款不错的MySQL数据库管理工具。当然,作为新时代的FEer,在不方便使用phpMyAdmin的情况下,还得掌握基本的MySQL命令。//登录MySQL服务器mysql-hIP-Pport-uusername-ppassword//RD可以导出一个表,但是mysqldump数据库表//查看MySQL服务器上有哪些数据库showdatabases;//是哪个数据库doyouwanttooperateusedb;//你要操作的数据库中有哪些表showtables;//检查编码showvariableslike"%char%";//嘿,不是utf8吗?SETcharacter_set_client='utf8';SETcharacter_set_connection='utf8';SETcharacter_set_results='utf8';//增加?INSERTINTO`table`(`prop`,`prop`...)VALUES(value1,value2);//删除?DELETEFROM`table`WHERE条件;//改变?UPDATE`table`SETprop=valueWHEREconditions;//检查?SELECT*FROM`table`WHERE条件;如果前端不用美国前三或者其他MVVM框架(比如百度errorrik的san,据说可以扛起IE6的MVVM),你怎么敢说你是前端结尾。前端标准配置已经是webpack+babel+MVVM+(FE)-router+(FE)-Store/x...包括modulebundler、transformer、MVVM、前端路由、前端状态管理、数据驱动,状态机,这些东西已经融入到现代的WEB前端产品中。少了点什么,就觉得少了点什么,像个中官。说到node.js和后端服务端框架,不得不感谢另一位大佬TJ的贡献。express、koa、co等,进一步降低了FEer的准入门槛。后端选择TJDana的框架就可以了。当然,包括百度、阿里,也有一些自己的服务端框架,基本都是根据同济德纳plus业务线的实际应用场景来封装的。包括yog2、egg等。对了,mysqlorm推荐使用sequelize,这里有一篇文档,介绍的还是比较全面的。服务端如前所述,FEer接手了路由分发和页面渲染的工作后,RD就可以专心写服务端接口了。节点服务器与其他服务器服务器之间的通信可以通过RPC、Webservice等方式实现,节点服务器也可以作为代理,将客户端的请求代理到其他服务器获取业务数据。随着现在开源的趋势越来越强,各种相关的节点包都在蓬勃发展,看中的就选吧。在我的业务场景中,我最常使用的是百度FEX团队的node-ral。责任越大,能力越强。从FEer到Fullstackdeveloper,并不是那么简单,需要做出的改变不止一处。不断扩大自己的技术关注圈,提升自己的技术广度和深度,提升自己的技术视野,必须真正按照RD标准要求自己,配合FEer做一个合格的全栈开发者,必须要有看家本领。