对新手极其友好!带你从零开始了解Replit和多维表格插件。
写在前面
英文不好?没关系。不懂代码?没关系。@孝夕夕 将带你逐步了解并熟悉 Replit 以及多维表格插件,真正从零开始——从 最初的注册账号 到 移植一款2048游戏。
是什么
在开始之前,我们先简要了解一下多维表格插件是什么—— 使用多维表格插件 www.feishu.cn/hc/zh-CN/ar…
其主要用途是扩充函数、读取/写入第三方系统的数据。
本文的主要读者为没有编程能力或编程能力较弱的入门级用户。 如果你具有良好的编程能力,建议直接阅读官方文档 bytedance.feishu.cn/docx/HazFdS…
为什么
这个插件和应用平台里的插件的区别是什么?为什么做两套相似的功能?
在操作多维表格相关数据方面,本插件和应用平台里的插件能实现的功能是几乎一样的。
区别在于本插件更轻量,不需要开放平台的开发者身份,也无需走上架审批流程,
提供了一个 Base 级的 key,降低开发插件的门槛。
从零开始
注册账号
访问replit注册一个账号,需要一个邮箱:
Hello world (HTML.CSS.JS)
完成目标是页面显示字符串“Hello world”
点击+Create Repl
创建一个项目,选择HTML.CSS.JS
:
默认打开的文件是index.html
,是放置代码的地方,以后将会经常和这个文件打交道。
目前不需要改动代码,需要做的是复制链接后粘贴到多维表格中:
需要注意的是,如果重命名项目,一定记得要一并更新上图中5的链接,否则会导致之前添加的脚本失效。
好了,你已经学会如何输出 Hello world
了。
做好后是这样的:replit.com/@xiaoxixi2/…
官方示例模板HTML Template
接下来完成目标是熟悉基于这类项目的官方模板 HTML Template replit.com/@lark-base/…
示例模板的用途是在指定数据表新建空白记录,界面上有6行文字、1个列表、1个按钮。
我们来看看Replit
,点击Fork
按钮即可将模板复制到自己的账号下。
左侧的文件树中有7个文件,我们依次看看都是什么用途。
1、favicon.svg
默认自带的图标
,并未实际用到,可删除
2、index.scss
默认自带的样式
,并未实际用到,可删除
3、index.ts
经过修改的脚本
,不可删除
4、index.html
经过修改的主页面
,不可删除
5、README.md
经过修改的使用说明
,帮助理解文件内容,可删除
6、package-lock.json
默认自带的数据文件,无实际用途,可删除
7、package.json
默认自带的数据文件,无实际用途,可删除
示例模板中,真正发挥作用的只有两个文件:
1、index.ts
2、index.html
好了,你已经认识了官方示例模板 HTML Template。
Hello world (记录)
接下来完成目标是新增记录并在多行文本字段写入Hello world
。
上一章提到官方模板界面上有6行文字、1个列表、1个按钮。
前五行和 hello world 没什么关系,让我们来把他注释掉。
在index.html
文件中选中第13行,按CTRL+/,变成绿色即为注释成功。
按相同的方式注释掉第15~42行,可以看到界面干净多了,只留下了菜单和按钮。
接下来点击index.ts
文件,将模板的15~17行替换掉:
替换前:
<div class="hljs-line" data-start="1"> table.addRecord({</div><div class="hljs-line" data-start="2"> fields: {},</div><div class="hljs-line" data-start="3"> });</div>
替换后:
<div class="hljs-line" data-start="1"> const field = await table.getFieldByName('多行文本'); // 选择"多行文本"字段</div><div class="hljs-line" data-start="2"> const res = await table.addRecord({</div><div class="hljs-line" data-start="3"> fields: {</div><div class="hljs-line" data-start="4"> [field.id]: [ // 多行文本对应的值的格式</div><div class="hljs-line" data-start="5"> {</div><div class="hljs-line" data-start="6"> type: 'text',</div><div class="hljs-line" data-start="7"> text: 'hello world'</div><div class="hljs-line" data-start="8"> }</div><div class="hljs-line" data-start="9"> ]</div><div class="hljs-line" data-start="10"> }</div><div class="hljs-line" data-start="11"> });</div>
运行:
好了,你已经学会如何新增记录并在多行文本字段写入Hello world
了。
做好后是这样的:replit.com/@xiaoxixi2/…
2048游戏(HTML)
接下来完成目标是移植游戏,在多维表格玩2048
。
从零写一份2048太烧脑,所以这里准备好了一份样例:replit.com/@xiaoxixi2/…
样例代码基于:codepen.io/camsong/pen…
制作过程参考#教程# CodePen→Replit hsiaohsihsi.feishu.cn/wiki/S1Iawk…
为了方便描述,样例中index.html
、script.js
、style.css
三个文件的代码分别简称为: 样例代码H
、样例代码J
、样例代码C
利用上一环节的模板,在src文件夹下新建文件style.css
:
将代码C
原样粘贴进去:
在src文件夹下新建文件script.js
,将代码J
原样粘贴进去:
切换到index.html
文件,在第8行后插入一行代码(截取自代码H
), 目的是链接之前创建的样式表CSS (Cascading Style Sheets,层叠样式表)。
插入代码前
插入的代码
<div class="hljs-line" data-start="1"><link href="/src/style.css" rel="stylesheet" type="text/css" /></div>
插入代码后
需要提醒的是,文件树比样例增加了一层src文件夹,所以截取自代码H
的代码多了字符/src/:
<div class="hljs-line" data-start="1"><link href="style.css" rel="stylesheet" type="text/css" /></div>
<div class="hljs-line" data-start="1"><link href="/src/style.css" rel="stylesheet" type="text/css" /></div>
在第53行后插入多行代码(截取自代码H
),把2048的主界面抄过来。
同样,在链接script.js
文件时多了字符/src/:
插入代码前
插入代码后
点击运行按钮后,看到的界面是这样:
可以看到,界面上方是原自官方模板HTML Template的Select Table
和Add Record
按钮;
界面下方是原自样例2048的界面。
看起来SCORE
没有正常显示,我们来到文件,将代码注释掉。嗯,这样看起来好些了:
好了,你已经学会如何移植游戏,在多维表格玩2048
了。
做好后是这样的:replit.com/@xiaoxixi2/…
2048记录成绩(HTML)
接下来完成目标是在点击按钮时将成绩写入表格
。
我们知道,写入数据主要是在index.ts
中实现的,那么接下来修改这个文件。
修改代码前
修改代码后
我们试着运行一下:
看起来游戏界面有点大,无法展示全4行,影响游戏体验,那么来调整一下:
修改代码前:
第12行代码改为
<div class="hljs-line" data-start="1"><body style="zoom:0.7"></div>
修改代码后:
这样看起来好多了:
好了,你已经学会如何在点击按钮时将成绩写入表格
了。
做好后是这样的:replit.com/@xiaoxixi2/…
2048自动记录成绩(HTML)
接下来完成目标是在游戏结束时自动将成绩写入表格
。
我们知道,游戏是在script.js
中实现的,那么接下来修改这个文件。
目的是当游戏结束时自动点击按钮。
修改代码前:
修改代码后:
<div class="hljs-line" data-start="1"> // The mighty 2048 tile</div><div class="hljs-line" data-start="2"> if (merged.value === 2048) {</div><div class="hljs-line" data-start="3"> self.won = true;</div><div class="hljs-line" data-start="4"> // console.log("你成功了!");</div><div class="hljs-line" data-start="5"> $("#addRecord").click();</div><div class="hljs-line" data-start="6"> }</div><div class="hljs-line" data-start="7"> } else {</div><div class="hljs-line" data-start="8"> self.moveTile(tile, positions.farthest);</div><div class="hljs-line" data-start="9"> }</div><div class="hljs-line" data-start="10"></div><div class="hljs-line" data-start="11"> if (!self.positionsEqual(cell, tile)) {</div><div class="hljs-line" data-start="12"> moved = true; // The tile moved from its original cell!</div><div class="hljs-line" data-start="13"> }</div><div class="hljs-line" data-start="14"> }</div><div class="hljs-line" data-start="15"> });</div><div class="hljs-line" data-start="16"> });</div><div class="hljs-line" data-start="17"></div><div class="hljs-line" data-start="18"> if (moved) {</div><div class="hljs-line" data-start="19"> this.addRandomTile();</div><div class="hljs-line" data-start="20"></div><div class="hljs-line" data-start="21"> if (!this.movesAvailable()) {</div><div class="hljs-line" data-start="22"> this.over = true; // Game over!</div><div class="hljs-line" data-start="23"> // console.log("你失败了!");</div><div class="hljs-line" data-start="24"> $("#addRecord").click();</div><div class="hljs-line" data-start="25"> }</div><div class="hljs-line" data-start="26"></div><div class="hljs-line" data-start="27"> this.actuate();</div><div class="hljs-line" data-start="28"> }</div><div class="hljs-line" data-start="29">};</div>
在index.html
当中插入一行代码,用于引入 jQuery 库:
<div class="hljs-line" data-start="1"><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script></div>
好了,你已经学会如何在游戏结束时自动将成绩写入表格
了。
做好后是这样的:replit.com/@xiaoxixi2/…
相关文档
关于插件的游戏部分就介绍到这里了,接下来我们尝试实用功能:利用多维表格插件制作「轻便地图」 https://juejin.cn/post/7366451908141482024