
前端小白、大神、php程序員們。
大家好,這兩天前端圈大熱的文章看的我很捉急。
大漠窮秋寫的兩篇文章火了,為什么火了呢?因?yàn)樗旬?dāng)今最流行的前端框架之一噴的一文不值,還連帶使用者一起貶低。文風(fēng)犀利,倔強(qiáng),帶有一些科幻和超現(xiàn)實(shí)主義色彩,文中引用的例子也是XJB說,做為一個(gè)php程序員,我實(shí)在忍不住,寫這篇文章,來和一下稀泥。
0x 1
我們先來研究一下第一篇文章為什么只會(huì)Vue的都是前端小白?
(下文中的“你”指帶大漠窮秋)
1 文章開頭定義了一些只會(huì)vue的人,我不知道這樣的人應(yīng)該從哪里去找,我去村頭網(wǎng)吧,發(fā)廊都找不到這樣的人,這個(gè)假設(shè)是不是有些牽強(qiáng)。在公司里,你可以隨便找一個(gè)不會(huì)vue的人,然后讓他學(xué)vue,很快他就能用vue上手一個(gè)前端項(xiàng)目。作為一個(gè)開始學(xué)習(xí)前端的同學(xué),難道不應(yīng)該一開始學(xué)習(xí)dom,jQuery,minggeJS嗎?然后學(xué)vue 至少不會(huì)是只會(huì)vue吧。只會(huì)噴vue的人倒是找到一個(gè)。
2 沒有學(xué)習(xí)能力的人能學(xué)會(huì)vue嗎?大漠窮秋用vue寫過真正在線上跑的項(xiàng)目嗎?修改過用vue寫的在線上跑的項(xiàng)目嗎?學(xué)習(xí)vue本身不是在練習(xí)學(xué)習(xí)能力嗎?我想去學(xué)過的人自然明白。
3 坐進(jìn)觀天也沒什么不好,太多的理解和思考反而會(huì)阻礙前進(jìn)的腳步,但是vue也一直在更新發(fā)展,如果一個(gè)學(xué)習(xí)vue的人持續(xù)關(guān)注vue的發(fā)展,宏觀大局是能慢慢凸顯的。但我想說的是,作為一個(gè)為公司寫代碼的員工,能讓產(chǎn)品保質(zhì)保量按時(shí)上線才是真理,你用什么技術(shù)老板不會(huì)管你,就拿殺毒來說,當(dāng)病毒真正橫行的時(shí)候,你給我說你的殺毒軟件采用最新語言,最新設(shè)計(jì)模式,最厲害的軟件架構(gòu),結(jié)果還是殺不死病毒。某數(shù)字公司會(huì)給你說,我們就檢查下文件名字就把病毒殺死了,沒有高科技,只有對問題的快速解決。
4 糟糕的英文水平,作為一個(gè)前端,寫個(gè)頁面,切個(gè)圖,我需要多強(qiáng)的英語水平。來個(gè)反證法,如果你說的是對的。你自己做的教程也是中文的,你不是在毒害大家嗎?我強(qiáng)烈建議你下架你自己做中文教程,readme和教程都改成英文的,來拯救一下大家糟糕的英語水平。
5 團(tuán)隊(duì)協(xié)作和框架有關(guān)系嗎?這個(gè)邏輯和國足踢球贏了,是因?yàn)椴萜禾?,草坪太軟,草坪不硬不軟的理由是一樣,協(xié)作靠的是性格和理解,大家開一波黑,協(xié)作能力就培養(yǎng)起來了。
6 作為一個(gè)php程序員,我們公司有很多前端項(xiàng)目,千萬級(jí)別的訪問量。當(dāng)時(shí)缺少像大漠窮秋這樣的人為我們指點(diǎn)應(yīng)該使用什么技術(shù),然后我們用了一個(gè)最笨的方法,就是每個(gè)框架都試一試,在不同的前端項(xiàng)目,相同的前端項(xiàng)目里,同事們反復(fù)使用不同框架。最后大家得出了一個(gè)結(jié)論,做活動(dòng)頁面用Vue非常合適,做后臺(tái)管理的前端頁面,用Angular輕松自在,做電商,購物車等狀態(tài)比較多的頁面和準(zhǔn)備往RN轉(zhuǎn)的頁面,使用React決對沒錯(cuò)。
一個(gè)框架好不好,使用者水平高不高都不重要,重要的是人,在業(yè)務(wù)問題面前,所有的技術(shù)、框架都是工具,使用工具的人才是核心。你非要說只會(huì)用錘子的人是小白,你就不怕他們用錘子敲你。
真實(shí)事跡,公司有位同事,用各種技術(shù)都慢其他人一步,但他用jQuery(并不鄙視jQuery,Angluar 1.x內(nèi)部還自己實(shí)現(xiàn)了一個(gè)mini jQuery)做的項(xiàng)目,體驗(yàn)比其他人用新興框架做的好,bug少,所以人才是最重要的。
0x 2
再來說一說下一篇Vue從Angular里面抄了哪些東西?
(下文中的“你”指帶大漠窮秋)
作為一個(gè)程序員,抄襲不是很正常嗎。你寫代碼的時(shí)候沒有Crtl+C和Ctrl+V, 你不要給我說你是Command+C和Command+V。古話說的好:優(yōu)秀的藝術(shù)家模仿,偉大的藝術(shù)家則是剽竊。下圖也很好。

對于抄,我想說的是,好的思想,我們當(dāng)然要拿來使用。硬說是別人抄是不對的,本身就是不對的。Angular是MVVM,但是里面也有MVC的東西。算不算抄我php各種MVC框架。
1.雙向數(shù)據(jù)綁定
最早把雙向數(shù)據(jù)綁定帶到前段領(lǐng)域到底是不是Angular,我不知道,不過用我那蹩腳的英文在google里搜索`The earliest data binding in js` 出來的靠前面的js是knockoutjs。不過看github提交,Angluar在2010年1月就開始了,但是knockoutjs在7月才開始第一次提交。
我很不負(fù)責(zé)的說一句,“新版本的Angular引入了RxJS+Immutable的設(shè)計(jì)”。這是不是在抄襲React。
2.HTML解析器
這就和項(xiàng)目文件的package.json文件里依賴,是不是我抄襲了所有這些庫,才完成了我的項(xiàng)目。這也能算抄,于正會(huì)心一笑。
3.Filters
用個(gè)管道也是抄襲嗎?,當(dāng)年Unix就應(yīng)該把這個(gè)申請為專利,現(xiàn)在都可以上市了。不寫成` | `難道要寫成`->`,或者`.`。
3.組件和指令分離
Vue官方教程里,組件和指令就是分開的兩個(gè)東西,和最新版的Angular也不一樣,這有啥問題,而且你不覺得Vue里的組件寫起來比Angular不管哪個(gè)版本都要簡單嗎?
4.新的概念和設(shè)計(jì)思想
新的概念和設(shè)計(jì)思想真的會(huì)給現(xiàn)在公司的業(yè)務(wù)帶來好處嗎?Vue借鑒了其他框架,把復(fù)雜的變成了簡單的自己的,不做一個(gè)“One framework.Mobile & desktop”。而是一個(gè)“The Progressive
JavaScript Framework”,我覺得是OK的,你覺得不行,你可以繼續(xù)噴,反正我們使用合適業(yè)務(wù)的技術(shù),最快的時(shí)間解決好問題,然后才有時(shí)間出去浪,(????)??嗨酒吧,睡大街上。
0x3
作為一個(gè)php程序員,深知前端浮躁,需求不可靠,今天寫完代碼,明天邏輯就變化很大。真的要做到把業(yè)務(wù)寫好,拼的不是框架,不是熱潮,不是新技術(shù)新概念。而是對業(yè)務(wù)的理解和自己對代碼的態(tài)度,會(huì)用框架成不了高手,但把框架融入到解決業(yè)務(wù)問題中才是真理。程序員們研究新技術(shù)新思想歸根到底還是為了更好的解決實(shí)際業(yè)務(wù)問題,而不是炫技。不要急躁,開心就好。
如果把前端人員比作江湖中人,前端框架比作兵器。真正的高手草木皆可為劍,現(xiàn)在我們在這里討論那把劍更厲害,真的有必要嗎?悟空超級(jí)賽亞人一個(gè)龜太氣功就把你kill了。
所以我說前端框架終將在歷史的長河中死去,留下來的不是兵器,而是人,呼吁大家理性看待,互相學(xué)習(xí),共同進(jìn)步。