Table of Contents
{state.count}
Home Web Front-end JS Tutorial Hyperapp: The 1 KB JavaScript Library for Building Front-End Apps

Hyperapp: The 1 KB JavaScript Library for Building Front-End Apps

Feb 15, 2025 am 10:54 AM

Hyperapp: The 1 KB JavaScript Library for Building Front-End Apps

Hyperapp: A streamlined JavaScript library for building feature-rich web applications

Hyperapp is a lightweight JavaScript library for building feature-rich web applications. It combines a pragmatic, Elm-inspired approach to state management with a VDOM engine that supports keyed updates and lifecycle events—all without relying on other libraries. The source code size after it is minimized and gzip compressed is about 1KB.

This tutorial will introduce you to Hyperapp and help you get started quickly with some code examples. I assume you have some understanding of HTML and JavaScript, but don't need to have experience using other frameworks.

Key Points

  • Hyperapp is a compact JavaScript library that allows developers to build web applications that combine state management with a virtual DOM engine, with a size of about 1KB.
  • Applications built with Hyperapp consist of a single state object, operations that modify states, and views that convert states and operations into user interfaces. State is a normal JavaScript object that describes the application's data model and is immutable.
  • Hyperapp uses a virtual DOM, which is a description of what the actual DOM should look like, created from scratch in each rendering cycle. This brings high efficiency, as there are usually only a few nodes that need to be changed.
  • Hyperapp can be used with JSX (a JavaScript language extension for representing dynamic HTML) or alone. You can also load Hyperapp from a CDN like unpkg, which will be available globally via the window.hyperapp object.
  • Hyperapp is simpler compared to other libraries like React or Vue because it is small and is a complete solution for building web applications. It further develops the concept of view as a state function and has built-in state management solutions inspired by Elm.

Hello World

We will start with a simple demonstration showing all the components working together. You can also try this code online.

import { h, app } from "hyperapp";
// @jsx h

const state = { count: 0 };

const actions = {
  down: () => state => ({ count: state.count - 1 }),
  up: () => state => ({ count: state.count + 1 })
};

const view = (state, actions) => (
  <div>
    <h1 id="state-count">{state.count}</h1>
    <button onclick={actions.down}>-</button>
    <button onclick={actions.up}>+</button>
  </div>
);

app(state, actions, view, document.body);
Copy after login
Copy after login

This is roughly what each Hyperapp application looks like: a single state object, operation that fills states, and a view that converts states and operations into user interfaces.

Inside the app function, we copy your state and operations (it is impolite to modify objects we don't own) and pass them to the view. We also wrap your actions so that the application is re-rendered every time the state changes.

app(state, actions, view, document.body);
Copy after login
Copy after login

State is a normal JavaScript object that describes your application data model. It is also immutable. To change it, you need to define the actions and call them.

const state = { count: 0 };
Copy after login
Copy after login

In the view, you can display the properties of the state, use it to determine which parts of the UI should be displayed or hidden, etc.

<h1 id="state-count">{state.count}</h1>
Copy after login

You can also attach an action to a DOM event, or call an action in your own inline event handler.

import { h, app } from "hyperapp";
// @jsx h

const state = { count: 0 };

const actions = {
  down: () => state => ({ count: state.count - 1 }),
  up: () => state => ({ count: state.count + 1 })
};

const view = (state, actions) => (
  <div>
    <h1 id="state-count">{state.count}</h1>
    <button onclick={actions.down}>-</button>
    <button onclick={actions.up}>+</button>
  </div>
);

app(state, actions, view, document.body);
Copy after login
Copy after login

The operation will not directly modify the state, but will return a new clip of the state. If you try to modify the state in an action and then return it, the view will not rerender as you expected.

app(state, actions, view, document.body);
Copy after login
Copy after login

app Call returns the operation object connected to the status update-view rendering cycle. You also receive this object in view functions and operations. It is very useful to expose this object to the outside world because it allows you to interact with your application from another program, framework, or native JavaScript.

const state = { count: 0 };
Copy after login
Copy after login

(The rest of the content is similar, but the sentence is replaced synonyms and sentence structure adjustments, keeping the original meaning unchanged, and the length is too long, omitted here)

Summary: Hyperapp provides a lightweight solution for building efficient web applications with its extremely small size and simple design. It provides powerful features in state management and virtual DOM while maintaining easy-to-learn and use features. Whether it is a small project or a large application, Hyperapp can provide an efficient and flexible development experience.

(The picture remains the original format and position unchanged)

The above is the detailed content of Hyperapp: The 1 KB JavaScript Library for Building Front-End Apps. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How do I create and publish my own JavaScript libraries? How do I create and publish my own JavaScript libraries? Mar 18, 2025 pm 03:12 PM

Article discusses creating, publishing, and maintaining JavaScript libraries, focusing on planning, development, testing, documentation, and promotion strategies.

How do I optimize JavaScript code for performance in the browser? How do I optimize JavaScript code for performance in the browser? Mar 18, 2025 pm 03:14 PM

The article discusses strategies for optimizing JavaScript performance in browsers, focusing on reducing execution time and minimizing impact on page load speed.

What should I do if I encounter garbled code printing for front-end thermal paper receipts? What should I do if I encounter garbled code printing for front-end thermal paper receipts? Apr 04, 2025 pm 02:42 PM

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

Who gets paid more Python or JavaScript? Who gets paid more Python or JavaScript? Apr 04, 2025 am 12:09 AM

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

How do I debug JavaScript code effectively using browser developer tools? How do I debug JavaScript code effectively using browser developer tools? Mar 18, 2025 pm 03:16 PM

The article discusses effective JavaScript debugging using browser developer tools, focusing on setting breakpoints, using the console, and analyzing performance.

How to merge array elements with the same ID into one object using JavaScript? How to merge array elements with the same ID into one object using JavaScript? Apr 04, 2025 pm 05:09 PM

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

How do I use source maps to debug minified JavaScript code? How do I use source maps to debug minified JavaScript code? Mar 18, 2025 pm 03:17 PM

The article explains how to use source maps to debug minified JavaScript by mapping it back to the original code. It discusses enabling source maps, setting breakpoints, and using tools like Chrome DevTools and Webpack.

Demystifying JavaScript: What It Does and Why It Matters Demystifying JavaScript: What It Does and Why It Matters Apr 09, 2025 am 12:07 AM

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

See all articles