從前,一個類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的看家本領,才能作一名合格的全棧開發。