0.0.29 • Published 2 years ago

pure-frame v0.0.29

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Pure-frame

A data-driven, functional, and reactive framework for building Modern Web Apps in JavaScript. It leverages React, inspired by re-frame.

Concepts

Data Flow

Install

npm

npm i pure-frame

yarn

yarn add pure-frame

Example with create-react-app

Step 0: setup

mkdir -p example/{src,public}
cd example

yarn init -y
yarn add pure-frame
yarn add --dev react-scripts

Step 1: create public/index.html

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta name="renderer" content="webkit" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>Hello pure-frame</title>
  </head>
  <body>
    <noscript>please enable javascript to continue using this application.</noscript>
    <div id="app"></div>
  </body>
</html>

Step 2: create src/index.jsx

import React from 'react';
import ReactDOM from 'react-dom';

import {
    PureFrameRoot,
    defineExtractor,
    defineStateReducer,
    defineView,
} from 'pure-frame';

// Step 1: create pure function component.
const ClickCount = ({ count, increase }) => (
    <>
      <h1>Hello pure-frame</h1>
      <p>
        <label>Count is: </label>
        <span>{count}</span>
      </p>
      <p>
        <button onClick={increase}>Increase</button>
      </p>
    </>
);

// Step 2: define view, injects formulas and declares actions.
const ClickCountView = defineView({
    injects: {
        ':count': 'count'
    },
    actions: {
        'increase': ':increase'
    }
}, ClickCount);

// Step 3: provide data (from state snapshot) for component.
defineExtractor(':count', 'count');

// Step 4: handle action from component.
defineStateReducer(':increase', state =>
    state.update('count', count => count + 1));

// Step 5: Compose components.
ReactDOM.render(
    <PureFrameRoot state={{ count: 0 }}>
      <ClickCountView />
    </PureFrameRoot>,
    document.getElementById('app')
);

Step 3: start

yarn react-scripts start

exapmle.png

0.0.21

2 years ago

0.0.22

2 years ago

0.0.24

2 years ago

0.0.25

2 years ago

0.0.27

2 years ago

0.0.29

2 years ago

0.0.20

2 years ago

0.0.18

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.4

3 years ago

0.0.1

3 years ago

1.0.0

3 years ago