Blazor入门笔记(7)-使用RCL
半野

1.环境

VS2019 16.5.1

.NET Core SDK 3.1.200

Blazor WebAssembly Templates 3.2.0-preview2.20160.5

2.简介

Blazor中的组件是使用razor技术,因此为了将razor组件打包,实现组件库的重复利用,需要使用Razor类库(RCL)。Razor类库可以将组件及其相关的js、css等资源一起打包,在使用时只需要引用该类库即可。

3.创建RCL

打开VS2019,在创建项目时选择Razor类库模板,接着一路next即可。由于这个RCL是作为balzor组件库的,因此不需要“支持页面和视图”。

RCL名为BlazorRcl。

image

项目中包含有默认的示例文件,其中Component1.razor是组件,ExampleJsInterop是与js交互的示例,wwwroot中是用来放置相关的静态资源的,包含有一个图片、js和css。

image

4.使用RCL

接下来创建一个Blazor应用BlazorRcl.Sample,并将该项目添加引用到BlazorRcl.Sample中。打开index.razor,更改其代码如下:

1
`@page "/" @using BlazorRcl <Component1 />`

这里没有将命名空间在_import.razor中引用,因此在本页面中直接进行了using。

BazorRcl中定义有相关的静态资源,我们需要在index.html进行引入。静态资源的路径遵循如下规则:_content/程序集名称/指向类库的wwwroot文件夹。例如:

_content/BlazorRcl/styles.css就代表BlazorRcl项目下wwwroot/styles.css;如果将BlazorRcl的程序集名称改为BlazorRclName,则其路径该为_content/BlazorRclName/styles.css。

我们将BlazorRcl的程序集名称改为“BlazorRclName”,然后在BlazorRclName项目的index.html中添加如下引用:

运行项目,我们可以看到结果如下图所示。其中的页面中内容正是在RCL中所编写组件的内容,样式也是styles.css中所定义的,背景图片也是来自的BalzorRcl。

image

5.发布项目

右键BlazorRcl.Sample,选择发布选项,将BlazorRcl.Sample发布到本地文件夹中,在文件夹的wwwroot正式BlazorRcl.Sample的所有静态资源,如果需要将其部署在网上,由于BlazorRcl.Sample并没有与服务器交互,只需要将wwwroot中的所有内容copy到服务器上即可。打开wwwroot,我们可以看到_content文件夹,_content文件夹里面还有一个BlazorRclName文件夹,BlazorRclName中保存的正是BlazorRcl中的静态资源。

BlazorRcl.Sample中并没有用到BlazorRcl里面的exampleJsInterop.js,因此我们可以在BlazorRcl将其排除在外,不让其暴露给项目所使用,例如:当我们使用gulp时,我们并不需要将gulpfile.js进行发布。为了排除exampleJsInterop.js到发布的静态资源里,可以在VS中选择文件,然后选择“从项目汇总排除”选项,或者编辑BlazorRcl.csproj文件,加入如下内容:

1
`<PropertyGroup> <DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\exampleJsInterop.js</DefaultItemExcludes> </PropertyGroup>`

这样,我们再发布(先将原来发布文件夹清空)就不会在BlazorRclName文件夹下再看到exampleJsInterop.js了。

DefaultItemExcludes还支持文件扩展名的匹配(测试了下,应该是不支持正则的),这样当我们想要将RCL发布为nuget时,可以将scss或ts或less等开发时的资源排除在外,能减小nuget包的大小。

代码:BlazorRcl.SampleBlazorRcl

本文参考:使用 ASP.NET Core 中的 Razor 类库项目创建可重用 UI

由 Hexo 驱动 & 主题 Keep
总字数 105.7k 访客数 访问量