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
The State of Angular
Search
Minko Gechev
July 08, 2020
460
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The State of Angular
Minko Gechev
July 08, 2020
More Decks by Minko Gechev
See All by Minko Gechev
Change the World With Open Source Software
mgechev
0
270
Fast Angular Apps from End to End
mgechev
1
270
The State of Angular
mgechev
1
240
Software Engineering as a Superpower
mgechev
1
270
Introduction to Angular
mgechev
1
290
Internals of the Angular CLI
mgechev
3
1.5k
The State of Angular
mgechev
1
270
The State of Angular Deployment, SSR, and Prerendering, ng-conf keynote
mgechev
2
3.1k
The Future of the Front-End Frameworks
mgechev
2
400
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Facilitating Awesome Meetings
lara
57
7.1k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
330
Everyday Curiosity
cassininazir
0
270
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Visualization
eitanlees
152
17k
Documentation Writing (for coders)
carmenintech
77
5.4k
Believing is Seeing
oripsolob
1
180
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
460
sira's awesome portfolio website redesign presentation
elsirapls
0
320
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
@yourtwitter The State of Angular Minko Gechev twitter.com/mgechev github.com/mgechev blog.mgechev.com
@mgechev 100
@mgechev
@mgechev 2,000+ Projects at Google
@yourtwitter https://unsplash.com/photos/rafblRbne3o
@mgechev v10 RC is out
@mgechev
Predictability vs Flexibility trade-offs Predictable Flexible
Static vs Dynamic trade-offs Static Dynamic
Static vs Dynamic trade-offs Static Dynamic Rust Haskell Idris C#
/ Java Go JavaScript TypeScript Ruby
Static vs Dynamic trade-offs Static Dynamic
• Compile-time optimizations • Excellent IDE/text editor support • Strict
type checking • Source code visualization • Lazy component loading • Dynamic UI assembling • Fast (no) builds Static Dynamic
twitter.com/mgechev
twitter.com/mgechev 15% of bugs detectable at build time
twitter.com/mgechev
twitter.com/mgechev
• Compile-time optimizations • Excellent IDE/text editor support • Strict
type checking • Source code visualization • Lazy component loading • Dynamic UI assembling • Fast (no) builds Static Dynamic
• Compile-time optimizations • Excellent IDE/text editor support • Strict
type checking • Source code visualization • Lazy component loading • Dynamic UI assembling • Fast (no) builds Static Dynamic 2.0 4.0
• Compile-time optimizations • Excellent IDE/text editor support • Strict
type checking • Source code visualization • Lazy component loading • Dynamic UI assembling • Fast (no) builds Static Dynamic 4.0 9.0
• Compile-time optimizations • Excellent IDE/text editor support • Strict
type checking • Source code visualization • Lazy component loading • Dynamic UI assembling • Fast (no) builds Static Dynamic 9.0
@mgechev What’s in v10?
@mgechev v10 focus • Opt-in strict flag • Increase visibility
@mgechev v10 focus • Opt-in strict flag • Increase visibility
@mgechev Strict Mode " Strict TypeScript type checking strictTemplates in
Angular Opt-in ES5 support Opt-in CommonJS support Reduced side-effects
@mgechev
twitter.com/mgechev >15% of bugs detectable at build time
@mgechev Opt-in CommonJS
twitter.com/mgechev https://web.dev/commonjs-larger-bundles/
@mgechev !// index.js import { add } from './utils'; console.log(add(1,
2)); !// utils.js module.exports.add = (a, b) !=> a + b, module.exports.subtract = (a, b) !=> a - b, module.exports.multiply = (a, b) !=> a * b, module.exports.divide = (a, b) !=> a / b, const { maxBy } = require('lodash-es'); module.exports.max = arr !=> maxBy(arr)
@mgechev !// output.js !!... (() !=> { "use strict"; !/*
harmony import !*/ var _utils!__WEBPACK_IMPORTED_MODULE_0!__ = !__webpack_require!__(288); const subtract = (a, b) !=> a - b; console.log((0,_utils!__WEBPACK_IMPORTED_MODULE_0!__!/* .add !*/ .IH)(1, 2)); })();
@mgechev !// utils.js export const add = (a, b) !=>
a + b; export const subtract = (a, b) !=> a - b; export const multiply = (a, b) !=> a * b; export const divide = (a, b) !=> a / b; import { maxBy } from 'lodash-es'; export const max = arr !=> maxBy(arr); !// index.js import { add } from './utils'; console.log(add(1, 2));
@mgechev !// output.js (()!=>{"use strict";console.log(1+2)})();
@mgechev !// utils.js module.exports.add = (a, b) !=> a +
b, module.exports.subtract = (a, b) !=> a - b, module.exports.multiply = (a, b) !=> a * b, module.exports.divide = (a, b) !=> a / b, const { maxBy } = require('lodash-es'); module.exports.max = arr !=> maxBy(arr)
@mgechev !// utils.js export const add = (a, b) !=>
a + b; export const subtract = (a, b) !=> a - b; export const multiply = (a, b) !=> a * b; export const divide = (a, b) !=> a / b; import { maxBy } from 'lodash-es'; export const max = arr !=> maxBy(arr);
@mgechev !// output.js /******/ (() !=> { !// webpackBootstrap /******/
"use strict"; !// CONCATENATED MODULE: ./utils.js!** const add = (a, b) !=> a + b; const subtract = (a, b) !=> a - b; !// CONCATENATED MODULE: ./index.js!** const index_subtract = (a, b) !=> a - b;!** console.log(add(1, 2));!** /******/ })();
@mgechev !// example.js module.exports[localStorage.getItem(Math.random())] = () !=> { … };
@yourtwitter Examples Automated updates Optimized i18n pipeline Angular Universal Compile-time
optimizations Efficient prefetching
@mgechev Zero-overhead i18n
Angular compile-time i18n (Ivy) src lib Link & optimize l10n
repeat ngc
twitter.com/mgechev @mgechev
@mgechev Thank you! twitter.com/mgechev github.com/mgechev blog.mgechev.com Survey: mgv.io/talk