本帖最後由 fx360bx 於 2019-9-24 16:35 編輯
講真,React 冇 Hooks 年代真係喊出黎,乜都用 HOC, RenderProps 解決 Code Sharing 嘅問題,難 Trace 又 ...
hihihi123hk 發表於 2019-9-23 22:32



我係喺已經有 Hooks 既時候學 React,同埋 Redux 都已經係用曬 Hooks,個人覺得算係好易上手。
至於 Vue 同 AngularJS,我以前有參與過 AngularJS(第一代)既 web project,真心唔知佢寫緊咩,勁多圓括號同方括號,之後既 Angular(第二代起)同第一代完全係兩個世界,用 Node.js 同 TypeScript,第二代開始先覺得算係 modern web framework。Vue 既出現係 based on AngularJS 第一代同舊時既 React,結合兩者好既地方,但我睇過好多文章同統計,自己得出既結論係覺得要寫 production code 就用 React,因為多人現時用緊、多支援、多 UI libraries 選擇、JSX 幾好用,亦有人講只會用 Vue 黎做 prototyping。React 係 Facebook 出品同維護,Vue 雖然都多 GitHub 用家 support 同參與開發,好多 GitHub 星星同 pushes,但相比起 React by Facebook 我會揀 React 囉。Vue 就 GitHub hobby projects 比較熱門,但我聽就香港仲係 Angular 同 React 比較多大公司用,例如一啲銀行同保險公司。

你所講既「加上 Vue 好多 Plugin 都自己 Maintain 埋一份,例如 Vue-Router/Vuex,唔似 React 幾乎乜都要 Third party」,如果你想表達 library 質素既問題,其實今時今日 front-end development 個玩法都已經唔同舊時,仲邊有分咩 official 同 3rd party 呢,即使係 Vue 自己出返 Vue-Router 同 Vuex,果啲 developers 咪又係網上義務參與既,可以係 Vue 開發既 core members,可以係三唔識七既路人甲亂入幫手 fix bugs,已經冇話「團隊唔團隊」、「官方唔官方」。而且而家所有野都係 open source 放曬喺網上,玩 open source 既潛規則係,所有 developers 作為 GitHub/npm libraries 既 users 其實都係有義務幫手試,遇到問題都可能要自己 report issue and/or 自己整 pull request。如果你係想官方整曬成套野出黎,咁不如揀 Angular,佢真係一個 framework 黎,而 React 只係 library,亦係所有 web app projects 裡面用到既 N 種 libraries 既其中一個 library,佢係好自由。

你講到「需要有啲業界公認必配嘅 Plugin 但問題係新手好難一開波就知」,講真,大家份工有 20~30% 係自己用腦,但 70~80% 係靠 google search,如果你係 search 開 React,係有心學既,點會唔知咩係必配既 libraries 呢(我學 React day 0 已經知道要用 Redux),當一個新手了解左咩係 JS library,而佢要做一個大 project 既時候,自然就會諗到要做 state management,要學 Redux / Vuex。

2018 統計數據:
https://2018.stateofjs.com/front-end-frameworks/overview/

React 必配 libraries:
https://www.freecodecamp.org/new ... sions-cc965db11594/

TOP

本帖最後由 hihihi123hk 於 2019-9-24 16:54 編輯
我係喺已經有 Hooks 既時候學 React,同埋 Redux 都已經係用曬 Hooks,個人覺得算係好易上手。
至於 Vue ...
fx360bx 發表於 2019-9-24 16:21

只能說如果你經歷過「冇 Hook」 年代,可能你已經用緊 Angular  

亦係點解(2016-2018)年人人都覺得React 難學啲,因為冇 Hook 真係好難/花好多氣力先寫得「標準」,要「標準」不代表「簡潔、易 Trace、易 Maintain」

而當時你會見到好多 Medium 分享都係因為咁而跳船不了 React,因為「冇 Hook 年代」 Vue 真明顯簡潔好多

而 Angular 迫你用 Typescript,唔係咁多 Js Team/Developer 身心都準備好寫 Typescript

via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)

TOP

轉VUE啦, 初頭都係呢三個揀, 好幸運揀左VUE, 好易寫, 其他兩個學都學唔到, 自己天份廢

宜家用VUE寫哂ios, andriod, web超爽

TOP

本帖最後由 fx360bx 於 2019-9-24 17:49 編輯
只能說如果你經歷過「冇 Hook」 年代,可能你已經用緊 Angular



咁我相信又未必,我初頭學 React 都係寫 class components(for 其他唔知既人:class components 係用唔到 Hooks),每個 component 都 extends React.Component,其實都唔係話唔簡潔,我而家有用 withRouter HOC(當然都係人地寫好左既)。可能 ching 你需要自己寫 HOC?我就未寫過 HOC 同自定義 hooks,未去到果個 level,但我 so far 都做到我需要做既野。我係之後見 function components 寫少啲野(唔洗 extends、唔洗寫 render())先轉用 functions。

Ching 講到冇 Hooks 年代好慘咁,但係 Hooks 都係 2019 年 2 月頭出咋喎,出左半年多啲,主要係「let you use React without classes」,如果係咁大問題,State of JS 2018 就唔會咁多人投 React,而 Vue 仲多人投過 Angular 啦。

TOP

本帖最後由 fx360bx 於 2019-9-24 18:05 編輯
而 Angular 迫你用 Typescript,唔係咁多 Js Team/Developer 身心都準備好寫 Typescript


咁我唔清楚其他人 lu,可能好多人都係學黎為左自己搞啲 hobby projects,唔係工作上應用,或者 prepare for 搵工用。

以前都掂過下 Angular + TypeScript,其實同 JavaScript 好似,唔覺得有咩大分別,以致一個 developer 會因為 TypeScript 而唔揀 Angular(唔會係主因),fun fact 係,有啲 developers 會喺 React projects 裡面用 TypeScript 添,如果你睇返我 #11 回覆必配 libraries 條 link 既 Decision 2,522 票裡面,42% 既人用 PropTypes,而 34% 既人用 TypeScript,只有 10% 乜都唔用,唔理 type safety。另外,我用既 React libraries 都有見過唔少 source code 係 TypeScript 黎。

又睇下下面 2017 年個圖,React 多人用唔會係因為佢有 Hooks,因為 Hooks 今年先出。

TOP

本帖最後由 hihihi123hk 於 2019-9-24 20:12 編輯
咁我相信又未必,我初頭學 React 都係寫 class components(for 其他唔知既人:class components 係用唔 ...
fx360bx 發表於 2019-9-24 17:46

https://reactjs.org/docs/hooks-intro.html#motivation

由 Motivation 開始睇,官方自己都有認 React 天生缺陷,從而產生好多問題。呢啲問題係 2016-2018 年嘅 React Developer Suffer 哂,去到「有 Hook」 先至係真正解決到

你可能無見過一個 Component HOC 4-5 層,就係為咗 Share Code

withRouter(connect(withLocale(withStyle(Comp))))
....

Hooks Designed for “ React without classes“ 只係其中一個解決咗嘅問題,因為以前一啲又 class component 一啲又 function component 非常 inconsistent

至於你話多人投,基本上係因為「早出優勢」「Back by giant Tech company」「需求大」「可以用同樣方法寫 React Native」,好多人洗濕咗個頭通常就收埋自己係個圈入面,唔去 Explore 下其它野

不過你調番轉咁諗,Vue 遲好多出、冇 Back by Big Names 、冇太大需求都可以成為三大之一,真係冇你想像中咁差。如果你有用 GitLab,GitLab 由 Vue 1.x 嘅時候已經開始用  

有興趣建議你試下起個 Nuxt Project (Vue SSR) 睇下自己可以有幾 Productive

via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)

TOP

本帖最後由 hihihi123hk 於 2019-9-24 20:36 編輯

另外,當你接觸過 Vue 理解到「可以有幾 Productive 去開發一個網站」


當年係 React 寫 HOC 嗰種「indirection」感覺好似隔山打牛咁樣,會感覺到莫名奇妙,甚至會懷疑人生。

個感覺就好似好多好勁嘅人但係一齊做緊啲好唔合理嘅野,因為官方只有呢個方法做 Code Share...

React 的確好多人用,但我相信超過一半係因為當年 React Native 個願景比人個感覺好好,「好似」終於搵到 Hybrid App 嘅答案,比到一種學一樣野可以做埋 Mobile 嘅感覺而個個都衝去學;另一半就係因為 Performance、Job Demands,從來揀 React 唔係因為好寫

Btw,Airbnb 最後都係跳船...
https://medium.com/airbnb-engine ... native-1868ba28e30a

事實上 2016-2018年嘅 React 真係完全唔好寫,係有番 Hooks 之後,Productivity 先可以同 Vue 相提並論。換句話說,如果 Hooks 早三年發明到,相信而家 Vue 一定唔會咁蓬勃,至少我唔會因為 React 唔好寫而試下其它野。

via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)

TOP

本帖最後由 fx360bx 於 2019-9-24 21:25 編輯
Btw,Airbnb 最後都係跳船...



    啲科技公司巨頭跳船,唔用一隻 language 一套 code 去 cross platform,而選擇用返 iOS 同 Android native languages 去 develop apps 係因為佢哋對 app performance 有極致既追求,又甚或佢哋啲 mobile apps 同埋佢哋既 DevOps 超複雜。好似 Dropbox 咁都話棄用 C++,回歸 native language。

https://blogs.dropbox.com/tech/2 ... en-ios-and-android/

但其實唔代表套野差或者有問題喎。呢啲科技巨頭既公司後面行緊既 tech 一定比一般公司複雜得多,而且對性能、用戶體驗既執著都係比一般公司高,用戶數量同訪問流量都有好大差異,所以我覺得唔可以淨係因為佢哋棄用 XXX 就係因為 XXX 唔好用,應該話係呢套野已經唔適合佢哋既 growing demands、開發流程。但你唔應該因為一個美國科技巨頭唔用一樣野,就話果樣野都唔 fit 你既 hobby projects 或者你公司既一般 projects 架嘛。

你條 link 都有話:

Although we weren't able to achieve our goals with React Native, engineers who used React Native generally had a positive experience. Of these engineers:
60% would describe their experience as amazing.
20% were slightly positive.
15% were slightly negative.
5% were strongly negative.

TOP

話說回來, 用左js framework之後, 係咪應該棄用backend的template engine?

而家正正唔知應該用邊個render page

由於我唔係寫spa, 係一個標準網站, 所以需要用到js framework的功能的地方其實不多, 主要係某幾個page中某幾個要用到ajax的section
所以除非刻意規定所有ui都由js render, 否則其實有不要page可以由php framework的template engine直接render的

所以想知道一般做法係咪應該棄用backend的template engine?

TOP

話說回來, 用左js framework之後, 係咪應該棄用backend的template engine?

而家正正唔知應該用邊個render  ...
3ldk 發表於 2019-9-24 21:48

通常

React 就用 Next
Vue 就用 Nuxt

via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)

TOP