捆绑 Blazor 组件的 JavaScript

问题描述 投票:0回答:1

Blazor 组件支持 CSS 捆绑和内聚性:

Foo.razor
将具有
Foo.css
,这将: a) 享受 CSS 隔离; b) 捆绑成
{ASSEMBLY NAME}.styles.css

我追求的是组件范围 JavaScript 的类似机制。

不想想要将通用函数放在全局范围内(

window
)并通过
jsComponentInitializers
调用它们,如here所示,主要是因为它打破了组件作为内聚单元的想法;而且,如果我将 JavaScript 代码放入
.razor
文件中,由于我使用该组件的多个实例,最终会导致相同的代码重复并分散在整个页面中。

渲染模式为静态服务器端渲染(SSR)。

有没有办法在自定义 Blazor 组件中使用 JavaScript,使其捆绑成类似于

{ASSEMBLY NAME}.scripts.js
或任何其他形式的东西,并且只存在一次?(请注意,我仍然希望能够区分组件实例的方式与 CSS 组件隔离的方式类似)

javascript asp.net-core blazor components .net-8.0
1个回答
0
投票

Blazor 不像 CSS 那样支持 JavaScript 隔离。但是,您可以使用 JavaScript 捆绑程序将多个文件编译为单个文件。为此,请在 Visual Studio 2022 中下载 Bundler 扩展。然后,在根目录中创建一个包含以下内容的配置文件:

{
    "outputFileName": "wwwroot/js/bundle.min.js",
    "inputFiles": [
      "wwwroot/js/ts/file1.js",
      "wwwroot/js/ts/file2.js",
      "wwwroot/js/ts/file3.js",
      "wwwroot/js/ts/file4.js"
    ],
    "minify": {
      "enabled": true,
      "outputMode": "singleLine",
      "commentMode": "important",
      "adjustRelativePaths": true,
      "renameLocals": true,
      "gzip": true
    },
    "sourceMap": true
  } 
© www.soinside.com 2019 - 2024. All rights reserved.