前言:

  我始終堅(jiān)信的一點(diǎn)是,學(xué)習(xí)的效果80%來自總結(jié),甚至全部都是。總結(jié)的好處就是讓你能翻出你的過往,指出其中的不足,看到未來的改進(jìn)方法,好的總結(jié)更能讓知識(shí)產(chǎn)生飛躍,所以在工作之余,部署項(xiàng)目之際,總結(jié)一番。

架構(gòu)處理:

  一、背景

    公司數(shù)據(jù)量龐大,萬花筒一樣的領(lǐng)導(dǎo)隨即用上了pipeline_kafka這樣的流式數(shù)據(jù)架構(gòu)。其實(shí)在接手項(xiàng)目之前,作為一個(gè)應(yīng)用開發(fā)、我是不太清楚kafka是什么鬼的,還有stream、transform、等等一系列名詞,聽起來很高大上,但是很懵比=-=。

    領(lǐng)導(dǎo)的目標(biāo)是做一個(gè)數(shù)據(jù)流管理系統(tǒng),目的是關(guān)聯(lián)postgresql+kafka+流;通過平臺(tái)的方式管理kafka的關(guān)聯(lián)、流的數(shù)據(jù)規(guī)則、轉(zhuǎn)換數(shù)據(jù)的操作,簡單的來說就是集成一下數(shù)據(jù)工程師平時(shí)的sql操作,用可視化平臺(tái)的方式提高工作效率。

  二、前端結(jié)構(gòu)

   前端框架,選用了React.js,淺略的使用一下便感受到了react作為一個(gè)視圖庫的魅力,它將前端變得更優(yōu)雅。因?yàn)镽eact.js只能處理視圖層,而具體的controller我只是使用了jQuery作為補(bǔ)充,項(xiàng)目的體量不大,變動(dòng)較多,使用jquery是最好的選擇。

列出使用到的技術(shù):

   ?、?nbsp;React.js

   ?、?jQuery

    ③ react-tools 打包jsx

   ?、?sass對css模塊化處理

 

  看前端效果點(diǎn)擊》》》

  由于項(xiàng)目足夠簡單,React也是淺略的使用了一下,并沒有用到es6,也沒有用到webpack打包,算是一邊做項(xiàng)目,一邊入了門,構(gòu)思簡單,實(shí)用為上,且看代碼結(jié)構(gòu):

  以首頁為例子:

  首先一個(gè)公共的index.html文件 引入需要的文件資源:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

  css的處理,使用sass的@import進(jìn)行模塊化加載:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

這么做的好處是可以按需加載,并且一個(gè)index.scss就可以解決所有的依賴關(guān)系,在引入時(shí)也可以減少請求數(shù)量。

再看react:

  component.js 將所有組件打包,頁面公用

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 index.js承載了頁面主要組件,交互處理。

 photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

跑完所有頁面之后,部署到node中 開啟react-tool,移除browser.js進(jìn)行應(yīng)用開發(fā)。

 

  個(gè)人覺得這種前端結(jié)構(gòu)的亮點(diǎn)在于,前端結(jié)構(gòu)清晰,組織邏輯比較易懂,適合用作從傳統(tǒng)開發(fā)轉(zhuǎn)入自動(dòng)化開發(fā)的過度結(jié)構(gòu),也適合開發(fā)環(huán)境特殊,使用npm苦難的群眾,比如我的公司,工作電腦是完全隔絕互聯(lián)網(wǎng)的,使用webpack打包極為不便。另外一個(gè)項(xiàng)目如果不確定將來會(huì)落到哪位程序員的手里維護(hù),使用webpack打包有可能造成困擾,畢竟維護(hù)代碼的人,他可能是個(gè)java開發(fā)......

參考資料:

   

React JSX編譯為JavaScript

React 入門實(shí)例教程

 

 三、server端結(jié)構(gòu)

  經(jīng)典的express框架mvc結(jié)構(gòu),將前端代碼拿到node中,入口文件看起來是這樣的:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

pageName變量由router的render決定,這樣做引出的優(yōu)化點(diǎn)是,頁面由react托管,獨(dú)立的js文件可修改性能更強(qiáng),也加強(qiáng)了邏輯性。

經(jīng)典的express入口文件

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

router路由控制:

 photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

參考資料

  Express 開發(fā)與部署最佳實(shí)踐

  Nodejs進(jìn)階:如何玩轉(zhuǎn)子進(jìn)程(child_process)

  Node.js最新技術(shù)棧之Promise篇

nodejs:

  項(xiàng)目需要跨域,通過token做登陸驗(yàn)證

  項(xiàng)目需要跨域請求,因此如何遠(yuǎn)程登錄成了問題,谷歌很久采用了token機(jī)制,生成token這一步并沒有使用第三方包,而是耍了下花槍,且看代碼實(shí)現(xiàn):

 photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

將token掛在global上,setTimeout延時(shí)刪除,獲取時(shí)再根據(jù)name獲取token對比,跨域時(shí)設(shè)置credentials獲取cookie,或者通過headers獲取token,安全性能良好,后期我將它掛在了另一個(gè)進(jìn)程中,獲取和設(shè)置使用另一個(gè)進(jìn)程進(jìn)行管理。

更多我將另開文章慢慢的說。〓

數(shù)據(jù):

  一、kafka

  nodejs連接kafka我使用的node-rdkafka組件,這個(gè)組件只能在linux環(huán)境下編譯使用,node-rdkafka  git地址 

使用它的原因,是它支持sasl認(rèn)證,這個(gè)組件找了很久才找到,具體的連接代碼在工作環(huán)境拿不出來,這里也就不演示介紹,github上有詳細(xì)的說明。

  二、postgresql

  用pg組件連接postgresql,封裝出增刪改查方法:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

三、其他

  更多的細(xì)節(jié),因?yàn)槠螅诺狡渌恼轮兄v述,這里略略的總結(jié)一下項(xiàng)目主要結(jié)構(gòu)。

總結(jié):

   總的來說,項(xiàng)目不大,能玩的花樣不多,其中的技術(shù)要點(diǎn),點(diǎn)透也就得心應(yīng)手了,博主從接到任務(wù)到部署,花了十天的時(shí)間才開發(fā)完成,感覺各個(gè)地方還是有很多的不足之處??偨Y(jié)寫在博客上和大家探討。

  有什么建議,歡迎留言。

  需要了解其中更詳細(xì)的知識(shí)點(diǎn),可以聯(lián)系我。

http://www.cnblogs.com/ztfjs/p/zj.html