Learn how hypermedia, the revolutionary idea that created The Web, can be used today to build modern, sophisticated web applications, often at a fraction of the complexity of popular JavaScript frameworks. In this book we will explore a simpler approach to building applications on the Web and bey
Hypermedia Systems
β Scribed by Carson Gross, Adam Stepinski, Deniz AkΕimΕekβ
- Tongue
- English
- Leaves
- 338
- Category
- Library
No coin nor oath required. For personal study only.
β¦ Synopsis
lol lmao
β¦ Table of Contents
Foreword
Contents
Hypermedia Concepts
Introduction
What is a Hypermedia System?
Hypermedia-Driven Applications
Goals
Book Layout
Hypermedia: A New Generation
HTML Notes: Hypermedia In Practice
Hypermedia: A Reintroduction
What Is Hypermedia?
A Brief History of Hypermedia
Modern Implementation
The Worldβs Most Successful Hypertext: HTML
The Essence of HTML as a Hypermedia
Anchor tags
Form tags
Web 1.0 applications
So What Isnβt Hypermedia?
Single Page Applications
Why Use Hypermedia?
JavaScript Fatigue
A Hypermedia Resurgence?
Hypermedia-Oriented JavaScript Libraries
Hypermedia-Driven Applications
When Should You Use Hypermedia?
When Shouldnβt You Use Hypermedia?
Hypermedia: A Sophisticated, Modern System Architecture
HTML Notes:
Components Of A Hypermedia System
Components Of A Hypermedia System
The Hypermedia
Hypermedia Protocols
HTTP methods
HTTP response codes
Caching HTTP responses
Hypermedia Servers
Hypermedia Clients
REST
The "Constraints" of REST
The Client-Server Constraint
The Statelessness Constraint
The Caching Constraint
The Uniform Interface Constraint
Identification of resources
Manipulation of resources through representations
Self-descriptive messages
Hypermedia As The Engine of Application State (HATEOAS)
HATEOAS & API churn
Layered System
An Optional Constraint: Code-On-Demand
Conclusion
HTML Notes: HTML5 Soup
A Web 1.0 Application
Picking A "Web Stack"
Python
Introducing Flask: Our First Route
Contact.app Functionality
Showing A Searchable List Of Contacts
The list & search templates
Adding A New Contact
Handling the post to /contacts/new
Viewing The Details Of A Contact
The Contact Detail Template
Editing And Deleting A Contact
Handling the post to /contacts/
Deleting A Contact
Contact.appβ¦β Implemented!
HTML Notes: Framework Soup
Hypermedia-Driven Web Applications With Htmx
Extending HTML As Hypermedia
A Close Look At A Hyperlink
Why Only Anchors & Forms?
Why Only Click & Submit Events?
Why Only GET & POST?
Why Only Replace The Entire Screen?
Extending HTML as a Hypermedia with Htmx
Installing and Using Htmx
No JavaScript Requiredβ¦β
Triggering HTTP Requests
Itβs All Just HTML
Htmx vs. "Plain" HTML Responses
Targeting Other Elements
Swap Styles
Using Events
Htmx: HTML eXtended
Passing Request Parameters
Enclosing Forms
Including Inputs
Relative CSS selectors
Inline Values
History Support
Conclusion
HTML Notes: Budgeting For HTML
Htmx Patterns
Installing Htmx
AJAX-ifying Our Application
Boosted Links
Boosted Forms
Attribute Inheritance
Progressive Enhancement
Adding "hx-boost" to Contact.app
A Second Step: Deleting Contacts With HTTP DELETE
Updating The Server-Side Code
A response code gotcha
Targeting The Right Element
Updating The Location Bar URL Properly
One More Thingβ¦β
Progressive Enhancement?
Next Steps: Validating Contact Emails
Updating Our Input Type
Inline Validation
Validating Emails Server-Side
Taking The User Experience Further
Debouncing Our Validation Requests
Ignoring Non-Mutating Keys
Another Application Improvement: Paging
Click To Load
Infinite Scroll
HTML Notes: Caution With Modals and "display: none"
More Htmx Patterns
Active Search
Our Current Search UI
Adding Active Search
Targeting The Correct Element
Paring Down Our Content
HTTP Request Headers In Htmx
Factoring Your Templates
Using Our New Template
Updating the Navigation Bar With "hx-push-url"
Adding A Request Indicator
Lazy Loading
Pulling Out The Expensive Code
Adding An Indicator
But Thatβs Not Lazy!
Inline Delete
Narrowing Our Target
Updating The Server Side
The Htmx Swapping Model
Taking Advantage of "htmx-swapping"
Bulk Delete
The "Delete Selected Contacts" Button
The Server Side for Delete Selected Contacts
HTML Notes: Accessible by Default?
A Dynamic Archive UI
UI Requirements
Beginning Our Implementation
Adding the Archiving Endpoint
Conditionally Rendering A Progress UI
Polling
Using Polling To Update The Archive UI
Adding The Progress Bar UI
Downloading The Result
Downloading The Completed Archive
Smoothing Things Out: Animations in Htmx
The "Settling" Step in Htmx
Our Smoothing Solution
Dismissing The Download UI
An Alternative UX: Auto-Download
A Dynamic Archive UI: Complete
HTML Notes: Markdown soup
Tricks Of The Htmx Masters
Htmx Attributes
hx-swap
hx-trigger
Trigger filters
Synthetic events
Other Attributes
Events
Htmx-Generated Events
Using the htmx:configRequest Event
Canceling a Request Using htmx:abort
Server Generated Events
HTTP Requests & Responses
HTTP Response Codes
Updating Other Content
Expanding Your Selection
Out of Band Swaps
Events
Being Pragmatic
Debugging
Logging Htmx Events
Monitoring Events in Chrome
Security Considerations
Content Security Policies & Htmx
Configuring
HTML Notes: Semantic HTML
Client Side Scripting
Is Scripting Allowed?
Scripting for Hypermedia
Scripting Tools for the Web
Vanilla JavaScript
A Simple Counter
An inline implementation
Separating our scripting out
Locality of Behavior
What to do with our counter?
RSJS
VanillaJS in Action: An Overflow Menu
Alpine.js
"x-on:click" vs. "onclick"
Reactivity and Templating
Alpine.js in Action: A Bulk Action Toolbar
Implementing actions
_hyperscript
_hyperscript in Action: A Keyboard Shortcut
Why a New Programming Language?
Using Off-the-Shelf Components
Integration Options
Integrating using callbacks
Integrating using events
Pragmatic Scripting
HTML Notes: HTML is for Applications
JSON Data APIs
Hypermedia APIs & JSON Data APIs
Differences Between Hypermedia APIs & Data APIs
Adding a JSON Data API To Contact.app
Picking a Root URL For Our API
Our First JSON Endpoint: Listing All Contacts
Adding Contacts
Viewing Contact Details
Updating & Deleting Contacts
Additional Data API Considerations
Authentication in web applications
The "Shape" of Our Two APIs
The Model View Controller (MVC) Paradigm
HTML Notes: Microformats
Bringing Hypermedia To Mobile
Hyperview: A Mobile Hypermedia
The State of Mobile App Development
Hypermedia for Mobile Apps
Web Views
Hyperview
The format
The client
Extensibility
Which Hypermedia Architecture Should You Use?
Introduction to HXML
Hello World!
UI Elements
Lists
Images
Inputs
Styling
Custom elements
Behaviors
Actions
Navigation actions
Update actions
System actions
Custom actions
Triggers
Long-press
Load
Visible
Refresh
Focus, blur, and change
Using multiple behaviors
Summary
Hypermedia, for Mobile
Hypermedia Notes: Maximize Your Server-Side Strengths
Building A Contacts App With Hyperview
Creating a mobile app
A Searchable List of Contacts
Searching Contacts
Infinite scroll
Pull-to-refresh
Viewing The Details Of A Contact
Editing a Contact
Updating the Contacts List
Deleting a Contact
Adding a New Contact
Deploying the App
One Backend, Multiple Hypermedia formats
What is Content Negotiation?
Approach 1: Template Switching
Approach 2: The Redirect Fork
Contact.app, in Hyperview
Hypermedia Notes: API Endpoints
Extending The Hyperview Client
Adding Phone Calls and Email
Adding Messages
Swipe Gesture on Contacts
Designing The Component
Implementing The Component
Using the component
Mobile Hypermedia-Driven Applications
Hypermedia Notes: Good-Enough UX and Islands of Interactivity
Conclusion
Conclusion
Pausing, and Reflecting
Index
π SIMILAR VOLUMES
The revolutionary ideas that empowered the Web A simpler approach to building applications on the Web and beyond with htmx and Hyperview Enhancing web applications without using SPA frameworks For web developers frustrated with the complexity of modern practice, those looking to brush up on
This text aims at exploring and illustrating the different ways in which hypermedia systems and tools are designed according to those aspects. The design and visualization schemes included in any system will be related to the variety of social and technical complexities confronted by researchers in
<p>This book introduces a new paradigm, Geographic Hypermedia, which emerges from the convergence of Geographic Information Science and - permedia technology. Both GI Science and hypermedia have been rapidly evolving fields. The initial idea of Geographic Hypermedia was born in 2004 when the editors
Hypermedia systems may be one of the most significant contributions to the Internet in recent years. This powerful new technology has revolutionized the delivery of e-content through the Internet. However, as the needs of users have changed, the hypermedia systems themselves have also changed. In ju
<DIV><p>Why don't typical enterprise projects go as smoothly as projects you develop for the Web? Does the REST architectural style really present a viable alternative for building distributed systems and enterprise-class applications? </p><p> In this insightful book, three SOA experts provide a dow