A course I gave for advanced web developers in Mexico City. The course has a focus on development with the web components standard, and understanding the browser as a modern development platform in par with iOS and Android. #useThePlatform
The course took place on August 2017.
- Ecmascript
- Basics
- Values and Types
- Operators
- Variables
- Comments
- Comparisons. Falsy and Truthy statements.
- Control statements
- Conditionals
- Loops
- Switch
- Strict mode
- Functions
- this identifier
- Prototypes
- Polyfilling and transpiling
- Scope and closures
- What is a scope?
- Lexical scope
- Function scope vs. block scope
- Hoisting
- Scope closure
- This and object prototypes
- What is this?
- How this is assigned
- Binding exceptions
- Lexical this
- ES Objects
- Property descriptors
- Getters and setters
- Prototypes
- Prototypical inheritance
- Behavior delegation
- ES6 Block bindings
- Strings and regular expressions
- ES6 functions
- Default parameters
- Arrow functions
- ES6 Object functionality
- Destructuring
- Object destructuring
- Array destructuring
- Sets and maps
- Set and Weakset
- Map and Weakmap
- Iterators and generators
- ES6 Classes
- ES6 Arrays
- Promises and asynchronous programming
- ES6 Modules
- Basics
- Browser mechanics
- Engines (webkit, gecko, blink, spartan) / (nitro, spiderMonkey, v8, chakra)
- Critical rendering path
- DOM
- CSSOM
- Render tree
- Layout
- Paint
- Composite
- Platform
- DOM manipulation
- Events
- Networking
- Web APIs
- OS bindings
- Web components
- Template tag
- Previous client side templating techniques
- How to use an HTML template?
- Shadow DOM
- What is shadow DOM?
- Composition and slots
- Styling
- Manipulating slots with JS
- Event model
- Handling focus
- Custom elements
- Defining a new element
- Extending other elements
- Custom elements reactions
- Properties and attributes
- Element upgrades
- Styling
- Unknown elements vs. undefined elements
- HTML imports
- Basics
- Execution order
- Dependency management (de duping)
- Webcomponents.js
- Browser support
- Template tag
- Polymer
- Under the hoods
- Polymer 2.0
- Mixins, Elements and utils
- UI and application elements
- Custom elements
- Custom elements concepts
- Define an element
- Declare properties
- Shadow DOM and styling
- Shadow DOM concepts
- DOM templating
- Style shadow DOM
- Custom CSS properties
- Events
- Handle and fire events
- Gesture events
- Data system
- Data system concepts
- Work with object and array data
- Observers and computed properties
- Data binding
- Helper elements
- Polymer CLI
- Installation
- Commands
- Web component tester
- Mocha
- Chai
- Test fixture
- Polymer.json
- Entrypoint
- Shell
- Fragments
- Other configurations
- Under the hoods
- Development tools (package managers and linters)
- Gulp
- Gulpfile
- Tasks
- Watch
- Plugins
- Bower
- bower.json specification
- NPM
- package.json specification
- ESLint
- Lighthouse
- Pagespeed
- Gulp
- App architecture
- Feature detection (Modernizr)
- App shell
- App layout
- app-header-layout
- app-header
- app-drawer-layout
- app-drawer
- app-toolbar
- app-grid
- Routing
- app-route
- app-location
- iron-pages
- i18n
- app-localize-behavior
- PRPL
- Push
- Render
- Precache
- Lazy load
- Accessibility
- Focus and tabs
- Semantic markup
- Screen readers
- WAI-ARIA
- WCAG2
- MVCSS
- Styleguide
- Reset
- Helpers
- Config / Theme
- Base
- Tools
- Presentation, logic and data components
- Redux
- Three principles
- Actions
- Reducers
- Store
- Data flow
- Async actions
- Middleware
- PolymerRedux
- Analytics
- Google Analytics
- Custom events
- Custom dimensions
- Custom metrics
- Offline Analytics
- Performance
- RAIL
- Progressive webapps
- HTTPS
- TLS
- Certificates
- HTTP/2
- Server push
- Multiplex
- Header compression
- Service workers
- Life cycle
- Offline models (runtime caching)
- sw-precache
- sw-toolbox
- Webapp manifest
- Webapp manifest specification
- Start URL
- Custom icons
- Splash screen
- Launch style
- Theme color
- Push notifications
- How push works
- Subscribing a user
- Web push protocol
- Handling push events
- Common notification patterns
- HTTPS
- Backend services
- Registrar
- DNS
- Firebase hosting
- Deploy
- Custom domains
- Hosting customization
- Firebase real time database
- Structure data
- Read / Write
- Database security rules
- Firebase Authentication
- Google auth
- Custom auth
- Anonymous auth
- User management
- Firebase Storage
- Upload, download and delete files
- Storage security rules
- PolymerFire
- firebase-app
- firebase-auth
- firebase-document
- firebase-query
- Cloud functions for firebase
- Database triggers
- Auth triggers
- Analytics triggers
- Storage triggers
- HTTP triggers
- pub/sub triggers
- Final project
- Trip advisor clone
- Instagram clone
https://docs.google.com/presentation/d/1wgIUHwkA42C1rImZmUWdXoIZptkrP3yrnQssHA70eqU/edit?usp=sharing
- Archibald, Jake. ES modules in browsers. https://jakearchibald.com/2017/es-modules-in-browsers/
- Archibald, Jake. The offline cookbook. https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/
- Archibald, Jake. The service worker lifecyle. https://developers.google.com/web/fundamentals/instant-and-offline/service-worker/lifecycle
- Biedelman, Eric. What is shadow DOM?. https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom
- Biedelman, Eric. Custom elements v1. https://developers.google.com/web/fundamentals/getting-started/primers/customelements
- Biedelman, Eric. HTML imports. https://www.html5rocks.com/en/tutorials/webcomponents/imports/
- Biedelman, Eric. Html's new template tag. https://www.html5rocks.com/en/tutorials/webcomponents/template/
- Brubeck, Matt. https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html
- Burns, Peter. Encapsulated routing with elements. https://www.polymer-project.org/blog/routing
- Burns, Peter. Modular routing. https://www.youtube.com/watch?v=FbJQ4ghag_M
- Crockford, Douglas. The javascript trilogy. https://www.youtube.com/playlist?list=PL5586336C26BDB324
- CSS reflow demo. https://www.youtube.com/watch?v=ZTnIxIA5KGw
- CSS triggers. https://csstriggers.com/
- https://developers.google.com/web/fundamentals/performance/rail
- https://developers.google.com/web/progressive-web-apps/
- https://developers.google.com/web/tools/
- Dodson, Rob. Introduction to focus. https://developers.google.com/web/fundamentals/accessibility/focus/
- Dodson, Rob. Polymer 2.0 Under the hoods. https://www.youtube.com/watch?v=9vYJ8K6A_Kc
- Dutton, Sam. Progressive Web Apps Course. https://www.youtube.com/playlist?list=PLNYkxOF6rcIAdnzEsWkg0KpMn2WJwMBmN
- ES6 Language Specification. http://www.ecma-international.org/ecma-262/6.0/
- Garsiel, Tali. How browsers work internally? https://vimeo.com/44182484
- Gaunt, Matt. Service workers: an introduction. https://developers.google.com/web/fundamentals/getting-started/primers/service-workers
- Gaunt, Matt. The webapp manifest. https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
- Gaunt, Matt. Intro to Gulp. https://www.youtube.com/watch?v=N42LQ2dLoA8
- Ginsberg, Wendy. Building Progressive Web Apps with Polymer. https://www.youtube.com/watch?v=fKsVXO3AztY
- Glazkov, Dimitri. What the heck is shadow DOM? https://glazkov.com/2011/01/14/what-the-heck-is-shadow-dom/
- Grigorik, Ilya. Introduction to HTTP/2. https://developers.google.com/web/fundamentals/performance/http2/
- Irish, Paul. https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
- Kearney, Meggin. Introduction to ARIA. https://developers.google.com/web/fundamentals/accessibility/semantics-aria/
- Kearney, Meggin. Introduction to semantics. https://developers.google.com/web/fundamentals/accessibility/semantics-builtin/
- Kearney, Meggin. The accessibility tree. https://developers.google.com/web/fundamentals/accessibility/semantics-builtin/the-accessibility-tree
- Kitamura, Eiji. Introduction to HTML imports. https://www.webcomponents.org/community/articles/introduction-to-html-imports
- Kitamura, Eiji. Introduction to the template element. https://www.webcomponents.org/community/articles/introduction-to-template-element
- Kitamura, Eiji. Introduction to Shadow DOM. https://www.webcomponents.org/community/articles/introduction-to-shadow-dom
- Kitamura, Eiji. Introduction to Custom Elements. https://www.webcomponents.org/community/articles/introduction-to-custom-elements
- Kosaka, Mariko. https://medium.com/@kosamari/how-to-be-a-compiler-make-a-compiler-with-javascript-4a8a13d473b4
- Maynard, Travis. Getting started with Gulp. Packt publishing. 2015.
- Medley, Joseph. Web push notificaitons: timely, relevant, precise. https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications/
- Moore, John. Getting organized with NPM and Bower. https://www.packtpub.com/books/content/getting-organized-npm-and-bower
- Mozilla Developer Network. https://developer.mozilla.org
- MVCSS. http://mvcss.io/
- Norton, Gray. Data flow in Polymer Elements and Apps. https://www.youtube.com/watch?v=pAW4YDLtPVs&t=1390s
- Osamani, Addy. The PRPL pattern. https://developers.google.com/web/fundamentals/performance/prpl-pattern/
- Osamani, Addy. The app shell model. https://developers.google.com/web/fundamentals/architecture/app-shell
- Osamani, Addy. Instant Loading with the App Shell Model. https://www.youtube.com/watch?v=QhUzmR8eZAo
- Page, Wilson. http://wilsonpage.co.uk/preventing-layout-thrashing/
- Pontelin, Teemu. State of Web Components and Polymer 2.0. https://www.youtube.com/watch?v=aZyt5K0HYVg
- Posnick, Jake. Service worker registration. https://developers.google.com/web/fundamentals/instant-and-offline/service-worker/registration
- Polymer Project. https://www.polymer-project.org
- Polymer Project. https://github.com/Polymer/polymer
- Polymer Project. The PRPL pattern. https://www.polymer-project.org/2.0/toolbox/prpl
- Polymer Project. Routing. https://www.polymer-project.org/2.0/toolbox/routing
- Polymer Project. Layout. https://www.polymer-project.org/2.0/toolbox/app-layout
- Russel, Alex. Progressive Web Apps. https://www.youtube.com/watch?v=x7cfLDFVyHo
- Seddon, Ryan. So how do the browser actually renders a website? https://www.youtube.com/watch?v=SmE4OwHztCc
- Simpson, Kyle. You don’t know JS series. O’Reilly Media. 2015.
- Sturm, Gerwin. https://codingwithgerwin.blogspot.mx/2017/03/polymer-in-production.html
- Web APIs list. https://developer.mozilla.org/en-US/docs/Web/API
- Web components catalog. https://www.webcomponents.org/
- Webcomponents polyfills. https://www.webcomponents.org/polyfills/
- webcomponents.js polyfills. https://github.com/webcomponents/webcomponentsjs
- Walto, Philip. Web components and the future of modular CSS. https://philipwalton.github.io/talks/2015-10-26/
- Wiltzius, Tom. https://www.html5rocks.com/en/tutorials/speed/layers/
- Zachas, Nicholas. Understanding ECMAscript 6. No starch press. 2016.