前端開發(fā)框架的網(wǎng)站有哪些問題,java開發(fā)一個(gè)網(wǎng)站平臺(tái)技術(shù)方面需要考慮哪些?
只論技術(shù)方面的話,通俗的說就是前端界面,后端邏輯,數(shù)據(jù)庫(kù),web服務(wù)器,以及真實(shí)服務(wù)器(云服務(wù)器或?qū)崒?shí)在在的硬件服務(wù)器)。
前端界面這一塊,現(xiàn)在比較流行熱門的技術(shù)有vue.js,vue.js是一個(gè)基于數(shù)據(jù)驅(qū)動(dòng)的漸進(jìn)式前端開源框架,不僅適用于PC端,也適總于移動(dòng)端,現(xiàn)在很多大型的網(wǎng)站都在用vue.js。多說一句,vue.js的作者是中國(guó)人。
再說后端這一塊,基本上是被springboot一統(tǒng)天下,springboot的IOC和AOP特性以及一系列的設(shè)計(jì)模式,讓開發(fā)變得簡(jiǎn)單高效。
數(shù)據(jù)庫(kù)這一塊,市面上比較流行的有商業(yè)數(shù)據(jù)庫(kù)有甲骨文公司的oracle,微軟的sqlserver,開源的有postgresql,mysql,redis,sqlite等。
web服務(wù)器,比較常用的就是tomcat,nginx等。
服務(wù)器硬件的話,要么是云服務(wù)器(阿里云或者騰訊云),要么是真是的硬件服務(wù)器。
最后,網(wǎng)站開發(fā),說簡(jiǎn)單也簡(jiǎn)單,就是三層構(gòu)架,說難也難,其中涉及高并發(fā)大數(shù)據(jù)負(fù)載均衡的問題,都是現(xiàn)在熱門的問題。如果想快速開發(fā),建議借助現(xiàn)有的開源平臺(tái),快速高效,省時(shí)省力。
React解決了前端開發(fā)中的哪些痛點(diǎn)?
下面我分一下邏輯來詳述一下我對(duì)這個(gè)問題的見解。
1. 前端開發(fā)中會(huì)有哪些問題需要考慮
2. 目前解決這些問題的技術(shù)方案
3. React 技術(shù)棧對(duì)上述問題的解決
一、前端開發(fā)中會(huì)有哪些問題需要考慮
討論這個(gè)問題我覺得應(yīng)該回到問題的本質(zhì) -【前端開發(fā)會(huì)考慮些什么問題】,這些問題即是前端開發(fā)過程中的痛點(diǎn)也是難點(diǎn),了解了這些問題才能知道為什么會(huì)有 React 出現(xiàn),以及 React 如何解決這些問題的。
首先,對(duì)于一個(gè)前端團(tuán)隊(duì)來說,在進(jìn)行前端技術(shù)規(guī)劃的時(shí)候都應(yīng)該考慮的事情:
組件庫(kù)、模塊化
開發(fā)效率
運(yùn)行效率
可維護(hù)性
體驗(yàn)優(yōu)化
組件庫(kù)、模塊化
首先是組件庫(kù),任何一個(gè)前端業(yè)務(wù)團(tuán)隊(duì)都會(huì)做的事情就是沉淀組件,公共基礎(chǔ)組件,業(yè)務(wù)組件,函數(shù)工具庫(kù),這對(duì)于業(yè)界的前端來說是共識(shí)。 組件庫(kù)也就是輪子庫(kù),是提高團(tuán)隊(duì)開發(fā)效率的最好方式,同時(shí)也是團(tuán)隊(duì)的基礎(chǔ)沉淀(拿 KPI 的絕佳幫手)
然后是模塊化,在幾年前,經(jīng)常會(huì)看到一個(gè) js 幾千行的情況,但是基于可維護(hù)性和重用性的考慮,會(huì)把js 拆分成模塊,模塊化的需求已經(jīng)很普遍,出現(xiàn)了很多如 `AMD` `CMD` `CommonJs` `UMD` 這些規(guī)范,以及 `require.js` `seaJs` `Browserify` `webpack` 這些工具和庫(kù)來解決這些問題。
開發(fā)效率
開發(fā)效率是前端團(tuán)隊(duì)對(duì)業(yè)務(wù)響應(yīng)速度的反饋,如果一個(gè)業(yè)務(wù)交給前端團(tuán)隊(duì)過后幾個(gè)月都沒有結(jié)果那必然會(huì)引起上下游的不滿, 不管技術(shù)做的多棒,選什么框架,最終的目的都是完成業(yè)務(wù)。 那哪些因素會(huì)影響開發(fā)效率呢?
1. 業(yè)務(wù)代碼架構(gòu)設(shè)計(jì)
2. 可重用模塊和組件
第一點(diǎn)是業(yè)務(wù)代碼的架構(gòu)設(shè)計(jì),好的設(shè)計(jì)能夠極大的減少代碼量和出 bug 的可能。 第二是擁有大量可重用的模塊和組件,能夠快速的實(shí)現(xiàn)交互
運(yùn)行效率
運(yùn)行效率是用戶體驗(yàn)的關(guān)鍵,對(duì)于對(duì)效率要求極高的業(yè)務(wù)場(chǎng)景來說,這可能是選擇框架的第一標(biāo)準(zhǔn)
可維護(hù)性
前端開發(fā)中大多數(shù)在做的事情是:
1. 新業(yè)務(wù)加功能
2. 改版
3. 解決 bug
特別是在大公司的前端更是體會(huì)深刻,可能重來沒有做過新業(yè)務(wù),都是在維護(hù)舊的代碼,填坑加埋坑。 如果業(yè)務(wù)代碼設(shè)計(jì)差,可閱讀性差,很難定位 bug。 特別是千奇百怪的 MVC 設(shè)計(jì),大控制器,復(fù)雜的 Model ,想要定位出哪里出了問題真是一件 eggache 的事情。
體驗(yàn)優(yōu)化
體驗(yàn)已經(jīng)成了現(xiàn)代化前端開發(fā)的必談之物,所以出現(xiàn)了當(dāng)頁(yè)面應(yīng)用(SPA),Instant Loading,Application Shell],Progress webapp 這些名詞。
二、目前解決這些問題的技術(shù)方案
組件化:webComponent、polymer、x-tag、react、jQuery-plugin、angular-directive
模塊化:webpack、browserify、require.js、sea.js
開發(fā)效率:MVC(Backbone) < Flux(React) < MVVM(Angular.js、vue、ember.js)
運(yùn)行效率:Backbone、React
可維護(hù)性:Flux、Redux
現(xiàn)代化的一些框架幾乎都包含組件化的考慮,不過在其他方面各有其優(yōu)勢(shì),關(guān)鍵點(diǎn)是在開發(fā)效率和運(yùn)行效率之間的平衡
三、React 技術(shù)棧對(duì)上述問題的解決
注意我這里提的是 React 技術(shù)棧,并非題主說的 React,個(gè)人認(rèn)為在描述 React 的時(shí)候應(yīng)該是在講 React 生態(tài)體系,那對(duì)于上面說的難點(diǎn)痛點(diǎn)在 React 中一一對(duì)應(yīng)的解決方案。
組件化:React 天生組件化,這是 React 的核心,除了能夠在團(tuán)隊(duì)內(nèi)部積累業(yè)務(wù)組件以外,也能找到眾多開源組件的實(shí)現(xiàn)
模塊化:基于 webpack 可以使用 Es6 或 CommonJs 的寫法實(shí)現(xiàn)模塊化代碼
開發(fā)效率:React 的代碼基本就是組件的組合,分而治之的方式讓代碼的可閱讀性很高,容易理解。 而且相比于 MVC 幾乎是去除了 Controller 的角色,只用關(guān)心一個(gè) render 函數(shù),不用關(guān)系視圖局部的修改。
運(yùn)行效率:React 實(shí)現(xiàn)了 Virtual DOM ,相比于 MVVM 框架具有更優(yōu)的效率
可維護(hù)性:React 基于 flux 或 redux 的架構(gòu)設(shè)計(jì),確定性的 store 很容易定位問題,無論是新增業(yè)務(wù)代碼還是查找業(yè)務(wù) bug 都不再是難題
體驗(yàn):基于 React 可以很容易的實(shí)現(xiàn) SPA (React-router)
題外話:大多數(shù)人說 React 技術(shù)棧的學(xué)習(xí)成本太高,其實(shí)我想說的是真沒有那么難。。。。真的,如果要學(xué) React 但又苦于沒有系統(tǒng)的學(xué)習(xí)資源,那我就打個(gè)小廣告,最近在維護(hù) LeanReact - 知乎專欄 ,會(huì)系統(tǒng)的講解 React 生態(tài)的知識(shí),有興趣的朋友可以關(guān)注
為什么我做網(wǎng)站開發(fā)不使用前端框架?
1、框架、框架?何為框架?框架就只是一種工具、半成品。相當(dāng)于在別人以后的項(xiàng)目之上做開發(fā)。
2、做網(wǎng)站、做軟件、做系統(tǒng)架構(gòu)你都可以不使用框架,你都可以使用原生的代碼實(shí)現(xiàn)項(xiàng)目需求,不過對(duì)于一般程序員,這樣的開發(fā)效率要慢些,可能寫出來的代碼性能要低些,特別是冗余代碼可能會(huì)太多了。
3、有框架本身其實(shí)非常方便的,不過只會(huì)依賴框架寫代碼,我認(rèn)為是不行的,而且就拿現(xiàn)在JAVA框架來說,像spring、struts、hibernate、mybatis這樣的框架本身是非常龐大的,功能強(qiáng)大,占用內(nèi)存大,體積大,一個(gè)項(xiàng)目跑起來,資源占用比較大。所以在這樣的情況下出現(xiàn)了springboot這樣類似的微架構(gòu),減少配置文件和內(nèi)存的占用。
4、我自己開發(fā)項(xiàng)目都是不使用任何框架的,我一般都是使用自己寫的工具代碼,或通過其他方式例如:反射、抽象的方式進(jìn)行代碼的重用、加快開發(fā)效率。