在Bubble.io后端工作流中释放JavaScript的功能:案例研究
#javascript #regex #nocode #bubble

在Bubble.io中集成高级功能,这是一种用于创建Web应用程序的无代码工具,偶尔会带来挑战。本文说明了一个这样的挑战,以及如何利用JavaScript来克服它,增强了Bubble.io应用程序的前端和后端工作流程。

该应用程序及其功能:
我的社交网络应用程序允许用户发布帖子并在彼此的帖子上发表评论。这些功能使动态用户交互,使平台吸引并活着。

实现标签插件:
为了进一步增强用户交互,我试图介绍“提及”功能,使用户可以在评论中标记同事。为此,我实施了附加到任何输入的标记插件(https://bubble.io/plugin/tagger-1507658968231x782106515828375600),使用户能够从下拉列表中选择和标记他们的同事。

How the comments look before posting

实现前端JavaScript:
尽管实现了标签插件,但Bubble不会将标签保存为可单击的链接(不使用其他其他插件,例如RTF的各种编辑器,因为我不需要我,因为我需要简单的输入),这是一个重大限制。为了解决这个问题,我想出了一个两步之旅来解决这一挑战:

  1. 创建正则态度模式:第一步是制定一个正则表达式模式,能够识别“ @name”形式中的所有标签。这是使用的模式:“/(^|(?<= \ s))@[a-za-Z0-9+ - ]+(?=(\ s | $)| [!?:; - =+, 。])/g”。

  2. 实现JavaScript:要迅速有效地将标签转换为可单击的HTML链接,我集成了JavaScript代码。这一步骤证明至关重要,因为目前Bubble的本机解决方案无法执行循环,并且使用后端工作流将由于评论发布速度较慢而构成用户不满意的风险。注意:此解决方案仅适用于新评论:

function processText(input) {
    const regex = /(^|(?<=\s))@[a-zA-Z0-9+-]+(?=(\s|$)|[!?:;-=+,\.])/g;
    return input.replace(regex, function(match) {
        let username = match.trim().substring(1); // Remove the @ symbol
        return `<span class="mention" data-index="0" data-denotation-char="@"  style="cursor: pointer;" tabindex=""><span contenteditable="false" tabindex=""><span class="ql-mention-denotation-char" tabindex="">@</span><a href="Website home URL contains version-live:formatted as textprofile/${username}">${username}</a></span></span> `;
    });
}

let processedText = processText('Comment');
bubble_fn_newtextt(processedText);

结果看起来像这样:

How the comment looks after publishing it using the JS code to replace tags with links

下面参见工作流序列以复制流程:

  1. Firstly, run the JS code and save the result to varible Bubble_fn_nextextt
  2. Secondly, use the toolbox JS event to save the result only after the code has been executed

使用后端工作流升级现有注释:
为了处理该平台上数千个预先存在的评论,我实现了递归后端工作流程,部署了相同的JavaScript代码作为后端脚本。这是我用于后端的JavaScript代码:

function processText(input) {
    const regex = /(^|(?<=\s))@[a-zA-Z0-9+-]+(?=(\s|$)|[!?:;-=+,\.])/g;
    return input.replace(regex, function(match) {
        let username = match.trim().substring(1); // Remove the @ symbol
        return `<span class="mention" data-index="0" data-denotation-char="@"  style="cursor: pointer;" tabindex=""><span contenteditable="false" tabindex=""><span class="ql-mention-denotation-char" tabindex="">@</span><a href="Website home URL contains version-live:formatted as textprofile/${username}">${username}</a></span></span> `;
    });
}

let processedText = processText('comments:item #i's Text');
processedText;

请参阅后端工作流序列:

  1. Firstly, run the code and state the variable as the last expression to use the results in the next step
  2. Use the result calculated in the first step to save into the Database

克服挑战:
将JavaScript的整合到泡沫中并非没有障碍。工具箱插件最初运行的JS功能平行于其他气泡工作流,从而破坏了序列。多亏了Toolbox插件的JavascriptTobubble事件,我得以对操作进行测序,确保了平稳执行。

在气泡中使用JavaScript的好处:
JavaScript的集成导致标签快速转换为可点击链接,利用Bubble.io的无代码功率以及增强整体用户体验。该应用程序现在提供无缝的标记功能和引人入胜的用户界面。

限制和风险:
尽管具有优势,但这种方法确实有风险。书面代码不佳会无意间引起服务器问题,可能需要泡沫团队干预。

结论:
通过明智地将JavaScript与Bubble.io集成在一起,我们可以摆脱无代码平台的局限性并提供增强的用户体验。作为开发人员,即使面对挑战,也是我们努力推动界限并继续创新。通过创造力和毅力的融合,没有问题无法解决。