context="module" 在 Svelte 和 Sapper 中如何工作?

2024-02-02

当我使用 Sapper 构建项目时,每当我从服务器获取数据时,预加载函数都会在 script context="module" 内部声明,如下所示。

<script context="module">
  export async function preload(page) {
    return await this.fetch(`https://reqres.in/api/users?page=1`)
    .then(res1 => {
      return res1.json()
    }).then(res2 => {
      return { 
        notices: res2.data,
      }
    })
  }
</script>

根据document https://svelte.dev/docs

A <script> tag with a context="module" attribute runs once when the module first evaluates, rather than for each component instance. 

但这是什么意思当模块第一次评估时?

这是否意味着组件首次渲染时?那么在 onMount 生命周期方法中声明 api fetch 函数是不是像下面的代码一样?

<script>
  onMount(async() => {
    const res = await fetch(`https://reqres.in/api/users?page=1`);
    const json = await res.json();
  })
</script>

考虑一个导出类的常规 JavaScript 模块:

// Component.js

console.log('evaluating module');

export class Component {
  constructor() {
    console.log('instantiating component');
  }
}

如果您将该模块导入到您的应用程序中,该代码将立即运行:

import { Component } from './Component.js';

// "evaluating module" has already been logged. This will only happen once
// for the entire application, however many modules import Component.js

const component1 = new Component(); // logs "instantiating component"
const component2 = new Component(); // logs "instantiating component" again

现在我们可以用 Svelte 的术语来表述:

  • “评估模块”代码发生在<script context="module">
  • “实例化组件”代码与常规中发生的情况等效<script> tag
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

context="module" 在 Svelte 和 Sapper 中如何工作? 的相关文章

随机推荐

  • Webpack Sass - 无法解析图像

    我正在尝试通过 webpack 编译我的 Sass 编译正常的 sass 没问题 但出现错误 Module not found Error Can t resolve img twitter svg in Users Steve myweb
  • PHP 解码base64文件内容

    我有一个脚本 可以获取文件的内容并使用 base64 对其进行编码 这个脚本运行良好 现在 我想将内容解码回其原始值 我试过
  • 如何运行批处理文件以隐藏控制台窗口?

    我想在安装完成后启动我成功安装的Java程序 我原则上知道该怎么做 Run FileName app LaunchApp bat Description cm LaunchApp Flags nowait postinstall skipi
  • 如何在执行函数之前等待 Swift 中的变量? (迅速)

    下面是我的代码 我想要我的后字符串中的纬度和经度值 但是当他执行 poststring 时 我的值仍然为零 因为 swift 还没有更新位置 那么在 poststring 获取值之前如何等待纬度和经度呢 我听说过 didset 但我不知道如
  • KeyNotFoundException 信息

    我有一个 C Silverlight 应用程序 它随机抛出一个 KeyNotFoundException 我不知道找不到什么钥匙 这让我想到了两个问题 Does a KeyNotFoundException存储 暴露它试图找到什么密钥 当我
  • 如何判断弹出页面是否打开?

    我正在开发一个 Chrome 扩展程序 我正在寻找如何 从后台页面 找出弹出页面是否打开 我调查了消息传递 http code google com chrome extensions messaging html但我不确定这是否对我有帮助
  • 如何为 ASP.net/C# 应用程序配置文件值中的值添加 & 符号

    我有一个 C 程序 其值位于配置文件中 我想要的是存储 url 值的 符号 例如
  • 为非零值的运行创建组 ID

    我想在向量中找到连续的非零元素 至少由一个零分隔 并为每个组分配一个 ID 后续整数 玩具矢量 value lt c 1 1 2 3 4 3 0 0 0 1 2 3 9 8 0 0 3 2 在此示例中 存在三个非零值 1 1 2 3 4 3
  • 如何链接不同的表单?

    我在第一个问题中得到了很大的帮助 希望有人能告诉我或让我参考有关该主题的早期问题 我想链接不同的表单 就像我单击第一个表单上的按钮一样 它会打开第二个 基本上 我要为手机功能 如短信 通话等 制作一个菜单 所以我希望如果我单击 通话 则会打
  • VIM - 基于搜索正则表达式替换

    我有一个包含多条 1000 多条 记录的文件 例如 lbc3 ssa2 lie1 sld0 ssdasd 我可以通过以下方式找到它们 s w l 0 9 我想要做的是将找到的每个模式的最后部分替换为 我做不到 s s w l 0 9 因为它
  • 如何对齐换行成多行的跨度中的缩进线?

    有谁知道如何对齐第二行 span info margin left 10px color b1b1b1 font size 11px font style italic font weight bold span class info sp
  • Protocol Buffer 首次使用高延迟

    在我们的一个 java 应用程序中 我们有相当多的协议缓冲区类 并且 jar 本质上公开了一个接口 其中包含另一个应用程序使用的一种方法 我们注意到 第一次调用此方法时 调用时间非常长 gt 500ms 而后续调用则要快得多 当在不同的应用
  • CoreData:错误:严重的应用程序错误。核心数据更改处理期间捕获异常

    嗨 我崩溃了 当我尝试将 1000 条记录插入后台数据库时 出现以下异常 CoreData error Serious application error 在核心数据更改处理期间捕获异常 这通常是观察者内部的错误 NSManagedObje
  • Python:防止信号传播到子线程

    import threading import time def worker i while True try print i time sleep 10 break except Exception msg print msg thre
  • Angular,从当前服务调用服务功能

    我有一个名为 sharedData 的服务 其中包含一些函数 如何从另一个此类函数调用其中一个函数 这里是代码 用 标记故障函数 谢谢 service sharedData function http var refillList var
  • 将 numpy 数组与公共维度“合并”[重复]

    这个问题在这里已经有答案了 我有两个矩阵 对应于数据点 x y1 and x y2 x y1 0 0 1 1 2 2 3 3 4 4 5 5 x y2 0 5 0 5 1 5 1 5 2 5 2 5 3 5 3 5 4 5 4 5 5 5
  • 卡桑德拉不可用异常()

    线程 main 中的异常不可用异常 在 org apache cassandra thrift Cassandra batch mutate result read Cassandra java 16485 在 org apache cas
  • 如何将空跨高度设置为等于默认行高?

    我有一套 span 元素 每个元素都嵌套到对应的 div 他们构建了一堆面板 如下图所示 当 span 包含一些文本时 它具有正常的高度 但是当它为空时 它的高度是0px 但我需要它有一个正常的高度 使它看起来像图片中的那样 如何实现这种行
  • jade/pug 是否可以在 include 语句中使用变量?

    我正在开发 Nodejs 应用程序 但我对 include 语句有疑问 当我像这样使用它时它会起作用 include mixins root pug 但是可以在包含中使用变量吗 这些都不起作用 include process env MIX
  • context="module" 在 Svelte 和 Sapper 中如何工作?

    当我使用 Sapper 构建项目时 每当我从服务器获取数据时 预加载函数都会在 script context module 内部声明 如下所示 根据document