npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

f-low-code-renderer

v1.0.0

Published

PC renderer v2 components for low-code page building

Readme

f-low-code-renderer

低代码页面 PC 端渲染组件库(v2 版本)。所有组件以 V2 后缀命名,便于与后续版本共存。

安装

npm install f-low-code-renderer

使用

全量注册

import { createApp } from 'vue'
import FLowCodeRenderer from 'f-low-code-renderer'
import 'f-low-code-renderer/style.css'

const app = createApp(App)
app.use(FLowCodeRenderer)

注册后组件会以组件名注册到全局,可直接在模板中使用:

<template>
  <FBannerV2 :config="bannerConfig" />
  <FTitleV2 :config="titleConfig" />
  <FTextV2 :config="textConfig" />
  <FMediaV2 :config="mediaConfig" />
  <FTabTextMediaV2 :config="tabConfig" />
  <FCarouselTextMediaV2 :config="carouselConfig" />
  <FCaseShowV2 :config="caseConfig" />
</template>

按需导入

import { FBannerV2, FTitleV2 } from 'f-low-code-renderer'
import 'f-low-code-renderer/style.css'
<template>
  <FBannerV2 :config="bannerConfig" />
  <FTitleV2 :config="titleConfig" />
</template>

组件

v2 核心组件

| 组件 | 注册名 | 说明 | |------|--------|------| | FBannerV2 | FBannerV2 | 横幅 Banner | | FTitleV2 | FTitleV2 | 标题(模块标题 / 序号标题),支持滚动动画 | | FTextV2 | FTextV2 | 文本块,支持滚动动画 | | FMediaV2 | FMediaV2 | 媒体(图片 / 视频),支持滚动动画 | | FTabTextMediaV2 | FTabTextMediaV2 | Tab 切换图文,支持滚动动画 | | FCarouselTextMediaV2 | FCarouselTextMediaV2 | Swiper 轮播图文 | | FCaseShowV2 | FCaseShowV2 | Swiper 案例展示(支持图片/视频/对比) |

所有核心组件接收 config prop,类型为对应的 *ComponentConfig_v2 接口。

子组件

| 组件 | 说明 | |------|------| | LazyImage | IntersectionObserver 懒加载图片,加载前显示 fallback 占位 | | LazyVideo | IntersectionObserver 懒加载视频,加载前显示 fallback 占位 | | HsTab / HsTabPane | Tab 切换容器,支持 AnimatePresence 动画切换 + KeepAlive | | PreviewMedia | 媒体预览(点击放大,支持左右切换) | | ImageDiffv2 | 图片前后对比(拖拽滑块) | | DynamicTable | 动态表格(编辑/查看模式) |

类型

import type {
  // 联合类型,覆盖所有 v2 配置
  ComponentConfig,
  BannerComponentConfig_v2,
  TitleComponentConfig_v2,
  TextComponentConfig_v2,
  MediaComponentConfig_v2,
  TabTextMediaComponentConfig_v2,
  CarouselTextMediaComponentConfig_v2,
  CaseShowComponentConfig_v2,
  // 内容类型
  TabTextMediaContent,
  CarouselTextMediaContent,
  CaseShowContent,
  TableData,
  Cell,
} from 'f-low-code-renderer'

// 枚举
import {
  ComponentType,
  TextAlignType,
  TitleType,
  TabContentType,
  CaseShowType,
  ThemeType,
} from 'f-low-code-renderer'

Config 类型定义

interface BaseComponentConfig {
  nanoid: string
  type: ComponentType
  bg?: string
  paddingY?: [string, string]
}

interface BannerComponentConfig_v2 extends BaseComponentConfig {
  type: ComponentType.BANNER_V2
  title: string
  text: string
  bgImage: string
}

interface TitleComponentConfig_v2 extends BaseComponentConfig {
  type: ComponentType.TITLE_V2
  text: string
  orderNumber: number
  titleType: TitleType       // 'moduleTitle' | 'sortTitles'
  theme: ThemeType           // 'light' | 'dark'
}

interface TextComponentConfig_v2 extends BaseComponentConfig {
  type: ComponentType.TEXT_V2
  text: string
  align: TextAlignType      // 'left' | 'center' | 'right' | 'justify'
}

interface MediaComponentConfig_v2 extends BaseComponentConfig {
  type: ComponentType.MEDIA_V2
  src: string
}

interface TabTextMediaComponentConfig_v2 extends BaseComponentConfig {
  type: ComponentType.TAB_TEXT_MEDIA_V2
  contentHeight?: string
  items: TabTextMediaContent[]
}

interface CarouselTextMediaComponentConfig_v2 extends BaseComponentConfig {
  type: ComponentType.CAROUSEL_TEXT_MEDIA_V2
  contentHeight?: string
  items: CarouselTextMediaContent[]
}

interface CaseShowComponentConfig_v2 extends BaseComponentConfig {
  type: ComponentType.CASE_SHOW_V2
  contentHeight?: string
  delay?: number
  items: CaseShowContent[]
}

示例

<script setup lang="ts">
import type { BannerComponentConfig_v2 } from 'f-low-code-renderer'
import { ComponentType } from 'f-low-code-renderer'

const bannerConfig: BannerComponentConfig_v2 = {
  nanoid: 'banner-001',
  type: ComponentType.BANNER_V2,
  title: '标题',
  text: '文本1    文本2    文本3',
  bgImage: 'https://example.com/banner.jpg',
}
</script>

<template>
  <FBannerV2 :config="bannerConfig" />
</template>

样式

组件 scoped 样式随 JS 自动注入,但全局 CSS 需要手动导入:

import 'f-low-code-renderer/style.css'

全局 CSS 类名:

| 类名 | 用途 | |------|------| | .csr-v2-title-display | 展示型标题(Banner) | | .csr-v2-title-level-1 | 一级模块标题 | | .csr-v2-title-level-2 | 二级标题 | | .csr-v2-title-tab | Tab 小模块标题 | | .csr-v2-text | 正文 | | .csr-v2-tab | Tab 文字 | | .csr-v2-description | 描述文字 | | .csr-v2-btn | 按钮文字 | | .csr-v2-will-disable | 过渡禁用态 | | .csr-v2-disable | 禁用态 |

开发

# 安装依赖
npm install

# 构建
npm run build          # vite build + 类型声明
npm run dev            # 本地开发

# 发布
npm publish

构建产物在 dist/ 目录:

| 文件 | 说明 | |------|------| | f-low-code-renderer.mjs | ESM 格式 | | f-low-code-renderer.cjs | CJS 格式 | | f-low-code-renderer.css | 全局样式 | | index.d.ts | 类型声明 |

依赖

| 包 | 版本 | 类型 | 说明 | |----|------|------|------| | vue | ^3.4.0 | peer | | | motion-v | ^0.6.0 | dependency | 滚动动画,使用 { Motion } 命名导出 | | swiper | ^11.0.0 | dependency | 轮播组件 |

motion-v 使用命名导入:import { Motion } from 'motion-v',模板中用法为 <Motion is="div">