Skip to main content

快速上手

准备完环境后,接下来为大家介绍如何在 1 分钟内将设计稿转换为小程序源代码。

快速上手的教程将以上传 Sketch 设计稿的流程作为范本介绍,Photoshop/XD 目前还处于技术预览版阶段。

CodeFun 的使用流程只有 3 个步骤:

  1. 在 Sketch 插件中上传设计稿
  2. 在 CodeFun 工具中查看代码
  3. 将生成的代码拷贝到自己已有的工程中即可

上传设计稿#

加载一份 Sketch 设计稿,然后插件菜单中打开 CodeFun 插件界面。

Sketch 菜单 > 插件 > CodeFun > 上传设计稿

在插件上登录账号

通过插件创建一个项目

然后选择项目和上传页面。

  • 选择项目,表示当前上传的页面将放置到指定的项目中,这里选择刚刚创建的 helloworld 项目;
  • 选择上传的页面,可以选择单张或上传全部页面。

例子中有 3 个页面,这里选择【该页面全部画板】。 上传完成后,点击【查看项目】按钮。

回到 CodeFun 工具界面,看到刚才上传的页面。

查看代码#

选择一张设计稿,进入详情页,如图所示:

详情页总体分为左中右三部分

  • 左边栏显示文档树,后文称 DOM Tree,该树结构跟 HTML 的树结构保持一致
  • 中间是画布区域,可以用于选择元素对象
  • 右边栏是被选节点的属性面板,用于展示样式属性、交互配置和组件配置

点击顶部工具栏右上角的查看代码按钮,打开代码面板

代码面板中默认展示 4 列,分别展示 HTML、CSS、JS 和全局样式的代码。

第一次打开时,会默认展示设置面板,如果不做任何修改,那么查看到的是小程序平台的原生代码。

依次点击复制按钮,很方便地将代码拷贝到系统的粘贴板中。

得到 v-for 代码#

对于 List、Grid 而言,我们希望得到的代码遵循一种可循环的模式,能够根据数据的长度而自动变化,而不是静态元素的重复拼凑,所以它们在 HTML 上应该是类似 VUE 中 v-for 的写法。

CodeFun 可以支持输出 v-for 模式,以页面中下方的 List 为例,讲解如何得到循环代码。

首先,在代码面板中点击右上角的【设置】按钮,打开【输出为循环列表】的选项,打开这个全局选项后,页面中被打上 List、Grid 这类循环列表标签的元素,都将翻译成 v-for 的模式。

接下来为需要 v-for 的区域打上 List 标签,选中 List 最外层的 View 节点。

点击 Viewport 右上角的【标签】按钮,打开标签面板,然后选择 【List】 标签。 目的是将区域标记为 List。

确保打标签时 List View 节点应该是被选中的状态。

标记完成后,List 区域的代码变为基于 v-for 的写法。

<div class="flex-col list">  <!-- 已改为 v-for 风格 -->  <template v-for="(item, i) in [0,1,2]">    <div class="list-item flex-row" :key="'item' + i">      <div class="flex-row">        <span>全部权益</span>        <img src="..." class="image_16" />      </div>      <div class="right-group flex-row">        <span>热度</span>        <img src="..." class="image_17" />      </div>    </div>  </template></div>

数据绑定#

一个正常的列表由于其数据是从后端读取得到的,所以在 HTML 中的代码通常是需要用变量去绑定,当变量内容更新时,页面展示的效果也同时更新。

现在的代码虽然是基于 v-for 风格的,但里面的图片、文本的数据依然还是静态的。

接下来,我们把这些静态元素替换成 JS 中的动态变量。

首先,打开代码设置面板,开启 DataBinding 输出模式

由于【CSS】面板和【全局样式】面板暂时不需要用到,所以先关掉对应的选项隐藏它们。

选中 List 的最外层 View,然后点击 Viewport 右上角的【数据绑定】按钮,

页面右边出现数据绑定面板,面板展示的是 JS 中变量的名字,默认情况下页面中的元素都是静态的,并非取自 JS 变量,所以面板中的内容都是空的。

这里对 List 区域中的变量进行命名。

在 List 右边的输入框中填写 dataList,表示列表的数据来源于一个叫 dataList 的变量。

列表成员中都有一个图片,这里只需要填写第一个成员即可,这里填写它的变量名叫 avatar。每个成员的上方都有一行文字,变量命名为 title,最后关于折扣的元素命名为 tags。

填写完毕后,点击右下角保存按钮。

保存后回到代码面板,这时代码已经更新,HTML 中原来的静态元素被替换成花括号的变量模式

<!-- HTML --><div class="flex-col list"><!-- 静态内容已被 JS 变量代替 -->  <template v-for="(item, i) in dataList">    <div class="list-item flex-row" :key="'item' + i">      <img class="image_19" :src="item.avatar" />      <div class="right-group flex-col">        <span class="text_16">{{item.title}}</span>        <div class="bottom-text-wrapper flex-col items-center">          <span>{{item.discount}}</span>        </div>      </div>    </div>  </template></div>

而原来 HTML 中的静态元素的值则被抽取到了 JS 代码中

// Javascriptexport default {  data() {    return {      dataList: [                       // 列表的数据源变量        {          avatar:...,                   // list item 中的图片对应的变量          title: "星巴克咖啡(万象天地店)", // list item 中的标题元素对应的变量          discount: "全品类8折",         // list item 中的折扣元素对应的变量        },        {          avatar:...,          title: "NIKE(万象天地店)",          discount: "新品95折",        },      ],    };  },};

如果你希望在微信小程序工具中预览效果,请查看更详细的获取代码章节。