【问题标题】:Preload function without context=module script tag没有 context=module 脚本标签的预加载函数
【发布时间】:2020-02-25 21:35:19
【问题描述】:

因为我不喜欢单个 JS 中的两个脚本标签。我在没有context=module 的情况下将preload() 函数转移到<script> 中。它工作正常。我想知道随之而来的错误。

【问题讨论】:

  • type="module" 允许您在脚本中使用导入语句。据我所知,这是唯一的区别。如果你需要导入东西,你必须保留它,如果你不需要导入任何东西,你可以删除它。

标签: javascript preload svelte sapper svelte-3


【解决方案1】:

context=module 脚本标签允许您为组件定义各种“实例”。我可以看到您使用它的三个主要原因:

  1. 您可以定义其他组件可以导入的函数或其他代码。这通常最好放在一个单独的 JS/TS 文件中,但是,有时它确实有意义。
  2. 您可以为该组件的所有实例定义只应定义一次的状态。例如,您可以创建一个计数器组件,用相同的值更新所有其他实例。 注意最好使用商店来实现此功能..
  3. 您可以定义每个组件应该只发生一次的逻辑,并且在技术上可以在组件创建之前使用。 (这有点与第 1 点混淆)。

我假设将preload 函数移出模块脚本标记不允许在生成页面组件之前进行预加载。所以本质上,组件被创建并调用了 preload 函数,这会在数据返回后导致重新渲染。如果 preload 在模块脚本标签中,则获取它以创建第一个渲染。

这是我自己有根据的推测,不一定是事实。

请参阅文档here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多