惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
A
About on SuperTechFans
J
Java Code Geeks
量子位
博客园 - 三生石上(FineUI控件)
博客园 - Franky
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Framer X 更像一个设计工具了,但对设计师的门槛也更高了 - ...
2019-01-06 · via 少数派

早在 6 月份,设计工具 Framer 官方就在网站上放出了新产品 Framer X 的消息,并表明这是一个“突破性的产品,能够更好地融合设计和开发”。同时,这款产品最初有一句 Slogan 是 “React meets design” ,React 是 Facebook 2013 年开源的一款组件化构建界面的前端框架,主要特点是用数据维护界面状态。将代码更完美地融合进设计,构筑更强大的设计系统,这一切都给我们很丰富的想象空间。

null

通过这几个月对 Framer X 的使用,我试着写一下我的感受,以及我对于设计师用代码做设计这件事,和我对设计系统的理解。

先抛出结论:Framer X 更像一个设计工具了,布局、组件、路径这些功能都很完善;但是对于想要实现高保真可交互原型的人来说,却更难了,因为要学会使用 React 构建组件;不过它却更接近一个可以构建设计系统的设计工具了。

null

好用的特性

Framer 最初是通过 “Code to Design” 进入设计工具市场的,最开始的几个版本都只能通过代码来完成设计。后来为了降低门槛增加了设计模式,即通过图形化的方式进行设计。Framer X 则是以设计模式为主,代码为辅,而其图形化设计模式也已经十分成熟。

像简单的自适应布局、基本动效、形状绘制完全不在话下,除此之外,Framer X 相比于其它设计工具还有一些更好用的特性。

Stack

第一个就是 Stack ,Stack 翻译成中文是“堆、栈”,这里的 Stack 其实就是前端里的弹性布局( Flex Box ),在设计工具中的作用有点类似于 Sketch 的 Paddy 插件。有了这个功能,你可以很简单地进行多个元素的排列。如下图,先画出一个 Stack ,再把其他元素拖进去就会自动对齐排列,能大大节省时间。

null

更方便的是,当你拖动 Stack 中的元素时,他们会自动改变顺序。

null

组件商店

Framer X 内置了一个组件商店,支持设计师们将自己创建的组件上传,供其他设计师使用。这很像是一个开源社区,集众人之力,来完善一个组件社区。想象一下,当你需要设计一个小程序时不需要从零开始,直接从组件商店下载小程序基础组件,是不是可以节省很多时间?

null

Framer X 内置的组件商店,聚集了用户创建的各种组件,方便其他用户拿来就用,不用重复造轮子。以后组件会逐渐增多,生态慢慢发展起来,这些即开即用的组件可以大大提升我们的工作效率。何况这其中的代码组件还是可以交互的,可以组合起来实现一个极其高保真的设计。

最近 Framer 团队正在内测团队商店功能,帮助团队实现私有组件商店,统一管理设计组件,也是很值得期待的。

强大的代码组件

最后详细的介绍一下在 Framer X 中最强大也是我最看好的功能——代码组件。

简介

在 Framer X 中创建组件有两种方式——设计组件和代码组件,设计组件即通过图形化模式创建组件,这和 Sketch Symbol 类似,而代码组件就是完全使用代码创建的组件。代码组件的好处是它极其接近真实产品,比如说一个视频播放器组件是可以进行真正的播放、暂停的。而且你可以在右侧面板中像调节图层属性一样调节组件的属性,比如播放器的背景色。

null

当你要使用代码创建组件时,Framer X 会使用第三方代码编辑器(如果没有安装则会推荐你安装 VS Code)打开一个 React 模板文件,里面写好了一些基本代码。我们现在创建一个 Button 组件试试看,下图左边就是这个组件在设计区的样子,右边是其代码。右边的代码看起来有些难懂,后面会简要介绍。

null

React 原理

首先回顾一下前端界面实现的传统方式:用 HTML 绘制基本结构,用 CSS 添加样式,用 JS 控制逻辑,即通过 JS 改变 HTML 或者 CSS 来响应用户的操作,从而改变界面状态。

null

在 React 中则是通过数据维护界面状态的。每个 React 组件内都维护了一些数据,这些数据对应界面中的一些内容,想要改变界面状态则需要改变这些数据。

拿官方的 StatusBar 组件举例。这个组件的数据包含了外部属性( Props )和内部状态( State )。所谓外部属性就是通过外部数据来调节它,StatusBar 有三个外部属性: Carrier 、Appearance 、Battery ,分别对应着界面的运营商、外观(暗色或亮色)、电量这几个界面状态。其内部维护了一个 State ,即显示时间。而每个组件都有一个生命周期,包含初始化、已经装载、渲染等等。其中 render (渲染)所做的工作就是随时观察 Props 和 State 变化,并跟着重新渲染组件界面。

null

我们再通过上述最简单的 Button 组件的代码来对应一下这些概念。

null

这里只做一个简要介绍,React 的概念细节繁多,具体的了解入门可以参考文末的文章。

为什么强大?

最后说一说我为什么觉得代码组件是很强大的,以及为什么看好它。

从上面的文字中可以看出,虽然用代码实现组件能做出更加复杂逼真的效果,但对设计师的门槛也更高了(需要很扎实的 JS 基础,能理解 React 实现方式,还要学会 TypeScript )。那我为什么会看好它呢?

很多设计师认为,像 Framer 这一类要求设计师具有代码能力的设计工具的目标就是导出代码,给工程师复用。在我看来这是错误的,要知道“术业有专攻”,不要以为会用 JS 写几个动效你的代码就能够作为工程代码了,其实还差得远,你的代码很多时候都会被开发嫌弃的。

null

那设计师学编程的意义何在呢?我认为是为了构建“设计系统”,使用一种工程化的思维去提高设计效率,缩减设计和开发之间的罅隙。

在开发圈有一句话,“懒出效率是工程师的美德”。我们身边的程序员经常会写一些脚本去替代体力工作,但是我们设计师却一直在做很多重复性劳动。要想提高效率,其实使用代码是很好的一种方式。

最近流行的“设计系统”概念,其实就是为了提高设计效率。回想一下我们现在使用的 Sketch Symbol ,想要制作一套组件库很容易,但是想要做出一套包含丰富可调节属性的组件库却不容易,需要按照命名规范组合,还得预先想好各种可能的组合。

null

这其实还是很低效的设计方式,而用代码来描述组件逻辑才是真正高效和自然的。在 Framer X 中通过代码做出的组件,可以给它设定各种属性,这些属性可以和一般图层属性一样调节。如下图,StatusBar 组件的属性可以在 Framer X 右侧面板中调节,就像调节一个图层的样式一样简单。

null

如果你有关注 Airbnb 的设计博客,应该会注意到他们正在使用代码构建设计系统。

null

他们曾经在自己的开源工具 React Sketch.app 介绍中说过:在 Sketch 中管理设计系统资源是很复杂的——容易出错且很耗费时间。而这套工具使用代码来管理设计系统资源,它具有数据源唯一(改动组件代码,所有设计图文件中的组件更新)、可使用真实数据等特点

而这一切,在 Framer X 中则更简单了一些。现在的 Framer X 代码组件,允许我们自定义组件逻辑,可以在设计区直接调节属性,在预览时还是真实可交互的,这让我们距离构建一个真正的设计系统更近了一步,唯一变难的是,你需要真正地写代码了。

附:React 入门资料

阮一峰:React 入门实例教程
http://www.ruanyifeng.com/blog/2015/03/react.html
完全在浏览器中开发React应用
https://zhuanlan.zhihu.com/p/40523470
awesome-react 中文版
https://github.com/Pines-Cheng/awesome-react-cn