Fre

小而美的前端框架
授权协议 MIT
开发语言 JavaScript
所属分类 Web应用开发、 JavaScript MVC 框架
软件类型 开源软件
地区 国产
投 递 者 刘棋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

特性:

  • 函数式组件与 hooks API
  • 并发与 Suspense
  • keyed reconcilation algorithm

安装

yarn add fre -S

使用

import { render, h, useState } from 'fre'

function Counter() {
  const [count, setCount] = useState(0)
  return (
    <div>
      <h1>{count}</h1>
      <button onClick={() => setCount(count + 1)}>+</button>
    </div>
  )
}

render(<Counter />, document.getElementById('app'))

hooks API

import { render, useState, h } from "fre"

function Sex() {
  const [sex, setSex] = useState("boy")
  return (
    <div class="sex">
      <button onClick={() => setSex(sex === "boy" ? "girl" : "boy")}>x</button>
      <Counter sex={sex} />
    </div>
  )
}

function Counter(props) {
  const [count, setCount] = useState(0)
  return (
    <div class="counter">
      <h1>{props.sex}</h1>
      <button onClick={() => setCount(count + 1)}>+</button>
      <h1>{count}</h1>
    </div>
  )
}

render(<Sex />, document.getElementById("app"))

props

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

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

function Counter(props) {
  const [count, setCount] = useState(0)
  return (
    <div class="counter">
      <h1>{props.sex}</h1>
      <button onClick={() => 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 的方式,对任务进行优先级调度,打断继续任务

  • halo 大家好,我是 132,然后就是…… 经过最近几天的探讨,fre 终于发了一个……能跑起来的版本了 这次的更新主要是针对 diff 和 proxy 我一直追求一种【刚刚好】的状态,就是代码量缩减到最简,然后性能在崩坏的边缘不断试探 fre 就是一个这样的框架,你可以看到它只有300+行代码,却麻雀虽小,五脏俱全。 install yarn add fre -S 复制代码 use impor

  • halo,大家好,好久不贱呢! 最近因为看了一些 be 的小说,整个人都比较致郁::>_<:: 就在昨天,我用了一天的时间写了 fre,又一个小而美的前端MVMM框架 可能你觉得,有了 vue 和 react,没必要再写一个了::>_<::我觉得我还是想想办法寻找一下它的存在感吧 先看 API: import { useState, html, render } from 'fre' funct

  • fre

    int a  

  • halo 大家好,好久不贱呢~ 好久没出来浪了::>_<::,主要是之前在重构 c站,现在重构完了 是时候重构一下俺的轮子了…… 所以,如你所见,smox、fre、eplayer 都更新了 这篇文章,主要来说说,fre 框架的设计 Use import { h, render, useState } from 'fre' function Counter() { const [count,

 相关资料
  • 前端框架图图形展示: 如上图所示,WeX5前端框架(UI2)分以下部分: 基础库 WeX5前端依赖的两个基础库:数据感知MVVM和jQuery,其中数据感知MVVM基于Knockoutjs改进的。 模块框架 UI2遵循AMD模块标准,采用RequireJS实现。模块化是UI2的基础,UI2的所有资源(包括js、css和html等)都是模块,都采用模块化方式引入,采用模块化方式管理依赖。 组件框架

  • 美团前端一面 1.简短的自我介绍 2.说说平时怎么学习前端的,还问了看那个up主的视频 3.看你项目有用axios,axios底层原理 4.axios用promise怎么写(没搞懂啥意思) 5.现场做了一个promise题,写答案 6.说说了解的数组的方法 7.怎样判断一个值的是什么类型(先typeof,再instance of) 8.原型 原型链 9.浏览器缓存机制 10.http 11.tcp

  • 笔试 3.25 美团一面 酒旅研发 3.30 如何判断一个东西是不是数组 事件委托,利用的是什么原理进行实现 v-for的key的作用 事件循环 做一个题 事件循环 cors跨域原理,前后端需要做什么?通过设置字段来实现跨域 浏览器缓存策略,强缓存,通过什么字段控制的(cache-control,有什么值)(相关缓存头、字段的值等)、协商缓存 全排列 new操作做了什么 Promise.all()

  • 群面,具体题目不知道能不能说就先不说了。 大概流程是给一个开发的题目,5分钟读材料,然后阐述设计思路。 大家轮流说完之后,是20分钟讨论,交流一下思路,最终形成一个方案去进行汇报。 感想:第一次经历这种,本科也没啥项目设计的经验,个人感觉重点在架构上,面试官不太在意你用什么技术,而是你要怎么分析功能,怎么理解需求文档 ps:hr都很好,面试官也挺好,差评给到同组的其他人,9:00到10:00场,咱

  • 1,自己的创新性在哪,用例子说明;2,关注啥热点问题没,出现的原因,自己怎么看;3,自己有没有完全接手一个项目或者实践活动,自己怎么做的;4,面对压力怎么做;5,课堂外学习外的学习能力咋样。

  • 前端技术看起来很繁荣,测试、打包、调试等工具都比较丰富,开发效率比原生开发要高很多。在大型项目中使用前端框架也是一个管理应用好方法,这样更方便于长期维护。 然而,Weex并不是一个前端框架。实际上,前端框架仅仅是 Weex 的语法层或称之为 DSL (Domain-specific Language),它们与原生渲染引擎是分离的。换句话说,Weex 并不依赖于特定的前端框架,随着前端技术的发展,W