构建自己的 framer.js 工具链

本文虽然写的是 framer.js,但是却主要是给前端或者 node 程序员看的。因为其中用到的方法可能对于设计师来说过于“专业”了。但是如果你看到 dribbble 上大量设计师的作品,又不得不赞叹,那些“设计师”能把程序写到这个程度,又有什么是不可能的呢?

Framer.js

framer 是著名的交互原型设计工具。和其他任何“所见即所得”的 交互工具相比, framer.js 唯一一个需要自己编程来实现的。事实上,这也是它强于其他工具的地方,尤其是对前端程序员来说,因为无数的既有 JS库都可以被你所使用。

对于设计师来说,framer 提供了 Framer Studio,一个双栏设计工具,左边是代码区,右边是结果显示,如下图:

Framer Studio

这个工具对于一般设计师来说还不错,但是对于专业程序员来说则存在以下几个问题:

  1. 没有自己用惯的 IDE 好使(例如各种插件支持)。
  2. 使用各种可以编译到 JS 语言,不仅仅是官方的 Coffee-Script。
  3. 集成自己的分发系统或自动化工具(例如自动部署到生产环境等)。
  4. 更方便地集成既有的代码资产(自己的或者开源社区的)。
  5. 更好地组织代码结构。

除此之外,这个工具是要收费的,$99美金,包一年内的升级。

构建自己 Framer.js 工具链

事实上,整个 framer 的核心引擎是在 https://github.com/koenbok/Framer 上。你可以用自己熟悉的工具链去包装这引擎来工作。

为了方便我自己使用,我创建了一个 Yeoman 的 Generator - generator-framer-coffee ,用于直接创建一个特定的 framer project。

如果你之前没有用过 Yeoman,那么可以现在命令行下执行:

$sudo npm install yo -g

安装 generator-framer-coffee:

$sudo npm install generator-framer-coffee -g

然后创你自己的 framer 工程目录,例如:

$mkdir my-framer && cd $_

最后执行:

$yo framer-coffee

这个过程会在你的 my-framer 目录下创建全部的需要的依赖文件,以及用于工程管理的 gulpfile.coffee,目录结构大致如下:

项目目录结构

src 目录下是全部的源代码部分,也就是你自己可以修改编辑的。然后执行 npm start 将构建以及启动一个开发的 Web Server (用的 [browsersync],同时也会启动系统的缺省浏览器来显示 demo 的效果(默认地址是是 http://localhost:3000):

npm start

然后你就可以用自己喜欢的 IDE 一边修改代码,一边看结果了。

Sublime and Preview

Framer.js 的版本

这个 Generator 集成的版本来自于 http://builds.framerjs.com (920106e Thu Dec 17 10:44:06 2015 +0100)。其实原本我希望能够直接直接使用 npm 上的 framer.js 版本,但是很遗憾,framer.js 不是 npm 友好的(https://github.com/koenbok/Framer/issues/71) :

  1. framer.js 没有直接发布编译好的版本到 npm,需要你从 npm 安装后自己编译。
  2. framer.js 开发时大量依赖的 packages 都被写进了 package.jsondependencies 而不是 devDependencies,因此造成安装过程很漫长。
  3. 有些 Package (例如 Phantom.js) 的安装需要从 amazon s3 下载文件,这个在国内是被封的

我看到最近的一些 commits,这个问题正在改进,但是还没改完。

Gulpfile.coffee

生成的工程目录下的 gulpfile.coffee 管理了整个应用的开发过程,从监视文件系统变化、到自动编译和复制,以及完成编译/复制任务后通知浏览器重新加载内容。我在这里用了 browserify 作为代码的 Bundle 工具,以及 BrowserSync 作为开发用的 Web Server。

其他 Tricks

执行 npm run build 可以直接编译代码和复制其他工程文件到构建目录,发布时可以用这个命令。

通过设置环境变量 NODE_ENV 可以控制是否生成 uglify 之后的 JS 代码。

export NODE_ENV=production && npm start

此时也会显示 app.js gzip 之后的尺寸作为参考。

Production

制作你自己的 Generator

这个 [generator-framer-coffee]
(https://github.com/jacobbubu/generator-framer-coffee) 的设计目标是使用 Coffee-Script 来编写 framer 程序的。如果你希望使用自己的语言,例如:ES2015 +Babel,或者 TypeScript,那么可以看看我的实现自己来修改。当然前提是要了解 GulpYeoman

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容