New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

the-fun-framework

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

the-fun-framework

An experimental homegrown JS framework.

latest
Source
npmnpm
Version
0.0.1-alpha.1
Version published
Weekly downloads
9
-30.77%
Maintainers
1
Weekly downloads
 
Created
Source

The Fun Framework

playground slide

An experimental homegrown JS framework.

The goals of this project are:

  • HTML-first templating
  • No VDOM
  • Implicit re-renders (instead of calling an update function manually, "mutate")

Installation

npm install the-fun-framework

Usage

<!-- index.html -->

<!-- You can have multiple islands in one HTML file -->
<div data-island-comp="App">
  <p>{{message}}</p>
</div>
// index.ts
import { createState, registerComponent, render } from "the-fun-framework";

function App() {
  return {
    message: "Hello, world",
  };
}

// Register with the same name as `data-island-comp`
App.selector = "App";
registerComponent(App);
render();

Conditional Display

<!-- index.html -->
<div data-island-comp="Counter">
  <button data-on-click="updateCount()">Count</button>
  <p>Count: {{count.value}}</p>
  <p data-if="count.value % 2 === 0">{{count.value}} is even</p>
</div>
// index.ts
import { createState, registerComponent, render } from "the-fun-framework";

function Counter() {
  let count = createState(0);

  function updateCount() {
    count.value++;
  }

  return {
    count,
    updateCount,
  };
}

// Register with the same name as `data-island-comp`
Counter.selector = "Counter";
registerComponent(Counter);
render();

Loop Display

<!-- index.html -->
<div data-island-comp="People">
  <h1>Names</h1>
  <ul>
    <li data-for="item of list.value" data-key="item.key">{{item.name}}</li>
  </ul>
  <button data-on-click="addPerson()">Add person</button>
</div>
// index.ts
function People() {
  const list = createState([
    {
      name: "Corbin",
      key: "corbin",
    },
    {
      name: "Ade",
      key: "ade",
    },
  ]);

  let personCount = 0;
  function addPerson() {
    const newList = [...list.value];
    ++personCount;
    newList.push({
      name: `Person ${personCount}`,
      key: `person_${personCount}`,
    });
    list.value = newList;
  }

  return {
    list,
    addPerson,
  };
}

People.selector = "People";
registerComponent(People);
render();

FAQs

Package last updated on 13 Jul 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts