spz-script 脚本

支持布局: logic

何时使用

  • 需要用 JavaScript 来实现特殊逻辑时。
  • 需要对数据做处理时。

代码演示

基本用法

脚本默认会放入 Web Worker 中异步执行,不会影响页面其他内容加载。脚本内容大小不能超过15KB。

在脚本中,导出函数才可以被外部使用。导出函数需要用 exportFunction 来导出,它的第一个参数是一个字符串,表示导出函数的名字;第二个参数是导出脚本的哪个函数。

下面的例子中,我们使用自定义脚本来实现输入多个信息,使用一个 spz-render 来渲染输入的信息。

<spz-script layout="logic" id="custom-script" @setAge="info-result.toggleClass(class='age-class', force=true);">
  const data = {
    email: '',
    username: '',
    age: '',
  };

  function setEmail(event) {
    data.email = event.value;
    return Promise.resolve({});
  }

  function setUsername(event) {
    data.username = event.value;
    return Promise.resolve({});
  }

  function setAge(event) {
    data.age = event.value;
    return Promise.resolve({});
  }

  function getData() {
    return Promise.resolve(data);
  }

  exportFunction('setEmail', setEmail);
  exportFunction('setUsername', setUsername);
  exportFunction('setAge', setAge);
  exportFunction('getData', getData);
</spz-script>

<div class="info-input-wrapper">
  <label>Input:</label>
  <label>
    Email: <input type="text" name="email" @input-debounced="custom-script.execute(func='setEmail', params=event);info-result.render;">
  </label>
  <label>
    Username: <input type="text" name="username" @input-debounced="custom-script.execute(func='setUsername', params=event);info-result.render;">
  </label>
  <label>
    Age: <input type="number" name="age" @input-debounced="custom-script.execute(func='setAge', params=event);info-result.render;">
  </label>
</div>

<spz-render src="spz-script:custom-script.getData" layout="container" id="info-result">
  <template>
    <div class="info-result-wrapper">
      <p>Input Result:</p>
      <div>
        <p>Email: <span>${data.email}</span></p>
        <p>Username: <span>${data.username}</span></p>
        <p>Age: <span>${data.age}</span></p>
      </div>
    </div>
  </template>
</spz-render>

属性

属性名说明类型默认值是否必需
scope元素ID,指定某个元素作为Web Worker的执行上下文。当 spz-script 脚本中 DOM 操作只涉及一小块整体的元素时,可以设置这一块区域作为执行上下文,其他区域元素不可访问,这有利于提升脚本执行速度stringhtml元素
type当值为application/javascript时,作为普通脚本执行;否则,脚本放入 Web Worker 中异步执行string-

方法

execute

执行脚本内的函数。

参数名说明类型是否必需
func要执行的函数名string
params要传递的参数Object | Array | string

事件

[functionName]

当使用 execute 执行函数时,会自动触发与该函数同名的事件。

AI 摘要(LLM Ready)

  • 组件标识spz-script
  • 用途一句话:用来写异步 JavaScript 代码。
  • 可识别属性条目:2
  • 可识别方法小节:1
  • 可识别事件小节:1
  • 关键属性名(Top)scopetype
  • 关键方法名(Top)execute
  • 关键事件名(Top)[functionName]
  • 阅读顺序建议:先看「何时使用」与「代码演示」,再核对属性/方法/事件。
  • 关联文档/guide/actions-and-events//guide/layouts/