Skip to content
View viewfly's full-sized avatar

Block or report viewfly

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
viewfly/README.md

Viewfly Viewfly

🚀 一个简单、易上手、数据驱动的前端框架。

npm version @viewfly/core npm downloads @viewfly/core License MIT

Languages: English

为什么要开发 Viewfly?现在前端开发基本都围绕三大框架,也有一些更多的新星框架在圈内引起了大量关注,要在这种基础之上再推陈出新,无疑是非常困难的事情。

不过,它们都太复杂了,有的创建组件要写很多样板代码,有的需要特殊的语法或编译,有的不方便与 TypeScript 集成,有的有闭包陷阱等等。这给了 Viewfly 推出的契机。

从这里开始

  • 官方文档https://viewfly.org
  • 文档源码(VitePress):位于 packages/docs;克隆仓库后可用 npm run docs:dev 本地阅读,npm run docs:build 构建静态站点(产物在 packages/docs/.vitepress/dist)。
  • 本仓库:Viewfly 各 npm 包与示例工程的源码(pnpm monorepo)。若你只想做业务开发,通常只需安装下方 npm 包,不必克隆本仓库。

环境要求

  • 在本仓库中开发Node ^20.19.0 || >=22.12.0,包管理器 pnpm(版本见根目录 package.jsonpackageManager)。
  • 在业务项目中:以满足 Vite / TypeScript 与所安装的 @viewfly/* 版本为准。

在业务项目里使用 Viewfly

方式一:脚手架(推荐)

npm install -g @viewfly/cli
viewfly create my-app
cd my-app
npm run dev

说明见 @viewfly/cliEnglish)。也可用 npx @viewfly/cli create my-app 避免全局安装。

方式二:手动安装核心包

npm install @viewfly/core @viewfly/platform-browser

JSX / TSX:在 tsconfig.json 中启用 automatic JSX runtime,并将来源指向 Viewfly(与 ReactjsxImportSource 用法相同,仅包名不同):

{
  "compilerOptions": {
    "jsx": "react-jsx",
    "jsxImportSource": "@viewfly/core"
  }
}

使用 Babel 时,将 @babel/preset-react 设为 runtime: "automatic"importSource: "@viewfly/core"

依赖注入相关能力依赖 reflect-metadata。从 @viewfly/core 主入口导入时会随模块加载初始化;若拆包导致异常,可在应用入口最前增加 import 'reflect-metadata'(详见 @viewfly/coreEnglish)。

最小挂载示例

import { reactive } from '@viewfly/core'
import { createApp } from '@viewfly/platform-browser'

const model = reactive({ count: 0 })

function App() {
  return () => <div>{model.count}</div>
}

createApp(<App />).mount(document.getElementById('app')!)

npm 包一览(按常见使用顺序)

包名 用途
@viewfly/core 内核:组件、响应式、signalJSX 运行时、生命周期、inject 等。
@viewfly/platform-browser 浏览器:createApp、挂载与销毁等。
@viewfly/router 路由:RouterModuleLinkRouterOutlet 等。
@viewfly/devtools 构建侧:*.scoped.* 样式与 Vite / Rollup / Webpack 集成。
@viewfly/cli 脚手架,生成 Vite + TypeScript 模板。

(英文说明:仓库根 README.en.md;各 @viewfly/* 包见对应目录下的 README.en.md。)

路由与 scoped CSS 均为可选;scoped CSS 需 @viewfly/core(如 withMark)与 @viewfly/devtools 配合,细节见 devtools 包 README。

克隆本仓库后(贡献 / 本地试跑)

本仓库为 pnpm workspace,请先安装 pnpm,再执行:

pnpm install
pnpm dev

默认启动 @viewfly/playground。构建全部可发布的子包:

pnpm run build

其余脚本见根目录 package.jsonscripts

赞助

若你愿意支持 Viewfly 的持续维护,可通过下方二维码表达支持。

License

MIT

Popular repositories Loading

  1. viewfly viewfly Public

    一个简单、易上手的前端框架。性能出色,使用灵活,拥有极其精简并符合直觉的 API,可以帮助你更高效的构建富交互的用户界面。

    TypeScript 75 8

  2. viewfly.org viewfly.org Public

    viewfly 官网

    TypeScript

  3. js-framework-benchmark js-framework-benchmark Public

    Forked from krausest/js-framework-benchmark

    A comparison of the performance of a few popular javascript frameworks

    JavaScript

  4. ui ui Public

    TypeScript