Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Refactoring, from AngularJS to React
Search
Alex Tzeng
November 03, 2018
Programming
1
110
Refactoring, from AngularJS to React
Alex Tzeng
November 03, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
170
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
SourceGeneratorのススメ
htkym
0
190
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
420
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
250
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
610
Apache Iceberg V3 and migration to V3
tomtanaka
0
150
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
640
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
120
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
49
Amusing Abliteration
ianozsvald
0
96
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
97
Claude Code のすすめ
schroneko
67
210k
Rails Girls Zürich Keynote
gr2m
96
14k
Prompt Engineering for Job Search
mfonobong
0
160
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
200
Large-scale JavaScript Application Architecture
addyosmani
515
110k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
[SF Ruby Conf 2025] Rails X
palkan
1
740
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
55
Transcript
W 重構 從 AngularJS 到 React Alex Tzeng fb.me/alxtz.tw
W About Senior-ish frontend developer Often credited as a good
storyteller ( not what I expected )
Story Time
None
A desktop app that stimulates effects unit
Built on an eletron-like desktop framwork Use AngularJS as UI
framework
2 months after joining New 2.0 project
Main problems Rewrite from a 5-year-old codebase Recompile time >
40s Outdated abstraction Several 3000+ line behemoths Legacy tooling Chaos coding style
Turing point
Our frontend team lead Promoted to be the product owner
Tips on bringing in the concepts of enginneering health into
your team.
Always communicate Transparency is one of the most important values
in Agile Tip A Only if you express the problems, then you can solve them
If you expected the codebase will at least last 1
year Tip B Caring about enginneering health will save your time in the long run
Most managers want good code, even when they are obsessing
about the schedule. Tip C They may defend the schedule and requirements with passion; but that’s their job. It’s your job to defend the code with equal passion.
3 main problems
1. DI & $events aren’t scalable
AngularJS uses a modularization system called Depedency Injection
It actually works fine
The problem is we usually mess it in global
And auto inject with angularJS magic Makes it hard to
find where the depedency come from
For larger projects, nested dependency would have less pain to
maintain
Solution: replace Angular1 module with CommonJS / ES6 import
Before After
Problems with AngularJS $events
Hard to trace / debug when event grows No established
pattern, just broadcast
Replacement for $events Redux
Reasons to use Redux Relatively easy to debug Completely framework-agnostic
( works well when migrating ) Well known enough for newcomers
Great choice when working with multiple frameworks
Components in AngularJS Combo
Angular 1.5 introduces Components Combo Works similar to the Web
Components Standard
Combo
Combo template / render()
Combo template / render() props
Combo template / render() props lifecycles ComDidMount ComShldUpdate
Combo template / render() props lifecycles ComDidMount ComShldUpdate Methods
None
Ok, maybe not.
None
Components + CommonJS = Scalable AngularJS
2. Build tools
Most legacy projects uses Gulp as its task runner
Reasons to move from Gulp to npm + webpack Supports
CommonJS module, url rewrite out of the box Better dev experience with dev-server Easier to audit module size, compile time
Build JavaScript using Gulp
Build JavaScript using Gulp Entry files
Build JavaScript using Gulp Entry files Preprocessor
Build JavaScript using Gulp Entry files Preprocessor Output path
Build JavaScript using Webpack Entry files Preprocessor Output path
3. Migrate to React
Why migrate to React More mature ecosystem Easier to hire
/ get in project Familiar with team member
How to migrate Total rewrite Progressively rewrite Rewrite per page
Total rewrite ( rm -rf ./ ) Too risky for
production project Only apply for core components Hard to estimate time
Progressively rewrite React & AngularJS coexist Value backward compatibility Only
rewrite when code change
Progressively rewrite actually simple
Progressively rewrite Follows web component standards Easy to reuse component
design
Summary (Story) Care more about engineering health Self-aware is the
key to clean code Refactoring using the scrum way
Summary (3 problems) Nested dependency is more scalable Redux for
cross-framework state Gulp -> Webpack Progressively migrate to React