Fre 小而美的前端框架开源项目

我要开发同款
匿名用户2019年11月15日
67阅读
开发技术JavaScript
所属分类JavaScriptMVC框架、Web应用开发、JavaScript MVC 框架
授权协议MIT

作品详情

Fre(发音/fri:/,likefree) 是一个小而美的前端框架,实现了Concurrent 和 Suspense

特性:

函数式组件与 hooksAPI并发与Suspensekeyedreconcilationalgorithm

安装

yarnaddfre-S

使用

import{render,h,useState}from'fre'functionCounter(){const[count,setCount]=useState(0)return(<div><h1>{count}</h1><buttononClick={()=>setCount(count+1)}>+</button></div>)}render(<Counter/>,document.getElementById('app'))

hooksAPI

import{render,useState,h}from"fre"functionSex(){const[sex,setSex]=useState("boy")return(<divclass="sex"><buttononClick={()=>setSex(sex==="boy"?"girl":"boy")}>x</button><Countersex={sex}/></div>)}functionCounter(props){const[count,setCount]=useState(0)return(<divclass="counter"><h1>{props.sex}</h1><buttononClick={()=>setCount(count+1)}>+</button><h1>{count}</h1></div>)}render(<Sex/>,document.getElementById("app"))

props

虽然hooksAPI使得state在function内部受控,但是props仍然是这个组件从外部接受的√

如下,sex就是从父组件传下来的

functionCounter(props){const[count,setCount]=useState(0)return(<divclass="counter"><h1>{props.sex}</h1><buttononClick={()=>setCount(count+1)}>+</button><h1>{count}</h1></div>)}

JSX

默认也对外暴露了h函数,可以选用JSX

import{h}from'fre'

webpack需配置:

{"plugins":[["transform-react-jsx",{"pragma":"Fre.h"}]]}

keyed-diff-patch

基于 fiber 链表的 diff 方案,使用 hash 标记位置,更方便的比对

Concurrent

异步渲染,通过时间切片,suspense 的方式,对任务进行优先级调度,打断继续任务

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论