当前位置: 首页 > news >正文

深入解析:@scqilin/phone-ui 手机外观组件库

深入解析:@scqilin/phone-ui 手机外观组件库

@scqilin/phone-ui 手机外观组件库

实际项目演示,左边编辑,右边预览,完美。

写在最前面

最近开发一个移动端编辑器,我需要一个非常轻量的“手机壳”来把内容包起来用于预览与截图。于是做了 @scqilin/phone-ui:一个零依赖、用原生 TypeScript 写的手机外观渲染库,核心目标是简单、可复用、易适配。我的目标很明确:

  • 零依赖:能用在任何项目里,不管是 Vue、React 还是原生 JS。
  • 纯粹:只做“手机外观”这一件事,保持轻量。
  • 易用:API 简单,上手快。

✨ 特点

安装

npm install @scqilin/phone-ui

快速开始

把下面这段代码扔进你的项目,就能看到效果。

HTML 结构:

<div id="phone-demo" style="width: 500px; height: 900px;"></div>

JS 调用:

import { createPhoneUI } from '@scqilin/phone-ui';
const container = document.getElementById('phone-demo');
// 方式一:使用预设机型
createPhoneUI({
container,
phoneType: 'iphone16pro'
});
// 方式二:完全自定义
createPhoneUI({
container,
width: 400,
height: 800,
frameColor: '#1a1a1a',
screenColor: '#ffffff',
showButtons: true
});

设计思路与权衡

1. 为什么是原生库,而不是 Vue/React 组件?

最开始我也想直接写个 Vue 组件,但很快发现,把核心做成原生库更灵活。

2. 样式隔离

为了避免污染宿主页面的样式,我没有让用户引入 CSS 文件,而是通过 JS 动态创建 <style> 标签并注入到 head 中。所有样式都带上了 phone-ui- 前缀,并通过 CSS 变量暴露定制接口,比如 --phone-ui-frame-color

API 文档

createPhoneUI(options)

参数类型必填说明
containerHTMLElement渲染目标容器
phoneTypestring机型名称,支持 'iphone16', 'iphone16plus', 'iphone16pro', 'iphone16promax'
widthnumber自定义宽度(phoneType 存在时无效)
heightnumber自定义高度(phoneType 存在时无效)
frameColorstring边框颜色,默认 '#1a1a1a'
screenColorstring屏幕颜色,默认 '#ffffff'
showButtonsboolean是否显示侧边按钮,默认 true
borderRadiusnumber圆角大小,默认 30

支持的机型

机型phoneType尺寸 (宽×高)
iPhone 16'iphone16'402×874
iPhone 16 Plus'iphone16plus'440×950
iPhone 16 Pro'iphone16pro'402×874
iPhone 16 Pro Max'iphone16promax'440×950

常见问题

关于 Vue 的适配

我最初尝试在 Vue 项目里直接用这个原生库,但发现不太“顺手”:

  1. 插槽不好用:想用 Vue 的 <slot> 功能把内容放进“手机屏幕”里,操作起来很别扭。
  2. 生命周期问题:必须在 onMounted 之后手动调用,在 onBeforeUnmount 手动销毁,很繁琐。

为了解决这个问题,我另外写了一个轻量的 Vue 3 适配包,它做的事情很简单:

  • 把原生库的 API 封装成一个真正的 Vue 组件。
  • onMountedonBeforeUnmount 管理生命周期。
  • 把组件的默认插槽内容正确地渲染到手机屏幕里。

现在,在 Vue 里可以这样用:


<script setup>
// 假设你已经安装并配置了 vue 适配包
import PhoneUi from '@scqilin/phone-ui-vue';
</script>

这样就舒服多了。这个 Vue 适配包是独立的项目,你可以在这里找到它:

  • Vue 适配包仓库: https://github.com/scqilin/phone-ui-vue
  • 相关博文: https://juejin.cn/post/7536120422825033743

结语

如果你对这个小项目感兴趣,或者希望支持其他机型,欢迎在 GitHub 上提 Issue 或 PR!

http://www.zskr.cn/news/13575.html

相关文章:

  • ES 是否有类似mysql explain的语句诊断用法
  • Codeforces 补题笔记
  • 【RabbitMQ】消息可靠性保障
  • 变电站、开闭所、环网柜、配电站
  • 聚焦 AI 应用基础设施,云栖大会 Serverless AI 全回顾
  • Redis HASH+RediSearch 设计自定义索引
  • Altium Designer 25.8.1 最新版安装指南
  • 数据结构篇
  • 2025 年二氧化氯发生器厂家最新权威推荐排行榜:TOP 级企业技术实力与成本优势解析,助力用户精准选购电解法二氧化氯发生器/电解食盐二氧化氯发生器厂家推荐
  • winform 烦人的键盘事件 再遇上 chart 上下左右 失灵
  • 2025 年铝板品牌最新权威推荐排行榜:1-7 系主流铝板企业 TOP5 精选及工艺品质测评指南1060/1100/3003/3004/5052/6061/6063/6082铝板厂家推荐
  • 2025 防撞软包生产厂家权威推荐排行榜:E0 级环保 + B1 级阻燃,公检法 / 幼儿园场景最新优选厂家谈话室/留置病房/教育中心/体育馆防撞软包厂家推荐
  • 中位数定理
  • 计算机网络---网络层 - 详解
  • 国标GB28181视频平台EasyGBS:强大的视频监控与一站式视频服务解决方案
  • 题解:P13507 [OOI 2024] Three Arrays
  • 2025 年最新编织袋生产厂家权威推荐排行榜:聚焦 TOP5 优质企业,助力企业精准甄选可靠合作伙伴牛皮纸/塑料/PP彩膜/化工/化肥编织袋厂家推荐
  • # PostgreSQL高可用架构深度解析:从单机到分布式的演进之路
  • Foojay 播客 #71:与 James Gosling 一起庆祝 Java 诞生 30 周年
  • win 系统安装
  • 微算法科技(NASDAQ MLGO)探索全同态加密与安全多方计算融合,开启区块链隐私执行新时代
  • 2025 年棕刚玉源头厂家最新推荐排行榜:TOP 级生产厂家原料与烧结工艺权威解析,助力企业精准选购一级棕刚玉/棕刚玉磨料/优质棕刚玉/棕刚玉喷砂废料回收厂家推荐
  • 杀疯了!GitHub 发布 Copilot CLI!!!
  • 2025 年生态木厂商最新推荐榜单:TOP 前五企业实力解析及厂商选择指南生态木方通/户外地板/装饰线条/隔断/背景墙厂商推荐
  • 解题报告-泥路(muddyroad.*)
  • 2025 地坪研磨机厂家推荐权威推荐排行榜:品牌深度解析及格力 / 宁德时代合作案例速递水磨石/遥控式/座驾式/小型地坪研磨机厂家推荐
  • 2025 年真空袋生产厂家最新权威推荐排行榜:TOP 级企业工艺、服务及适配场景全景对比指南木箱/设备/海运防潮/铝塑/电柜真空袋厂家推荐
  • Win FAQ
  • Xcode 火焰图
  • 完整教程:Nginx反向代理与缓存功能