一步一步在 Blazor 里使用 npm

Blazor 目前不支持 node 语法,所以无法直接使用 node 包;所以需要再用 js 封装一层。

 

1,先给 npm 建个目录 “NpmJS” ,因为 node 无法直接当作 js 使用,所以这个目录不需要建在 wwwroot 下,反而方便 csproj 管理

  

 2,创建 node 项目,建议直接用 npm init 命令创建, vs 自带的管理器并不好用

  

  build 命令把入口文件输出到 wwwroot 下

 

3,打包需要 webpack,如果没装就装一下  

npm install webpack webpack-cli --save-dev

再配置一下 webpack.config.js

复制代码
module.exports = {
    /* 用到 style-loader 和 css-loader */
    module: {
        rules: [
            {
                test: /\.css$/i,
                use: ['style-loader', 'css-loader'],
            },
        ]
    },
    mode: 'none' // 设置mode   development为开发环境,production为生产环境
}
复制代码

 

4,封装 node 包,给 blazor 使用

import interactjs from "@interactjs/interactjs"

window.helloword = () => {
    console.info("helloword", interactjs);
    prompt("wow");
}

环境都配置完后,可以在入口文件里封装 node 方法了。

因为 webpack 打包出来的 js 都是闭包,所以封装的方法要被 blazor 使用,必须把 js 方法挂在 window 下。export 的写法在这里无效

 

5,配置 csproj ,如果你希望编译项目时自动打包 node,就需要在 csproj  里配置编译事件

    <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
        <Exec Command="npm run build" WorkingDirectory="NpmJS" />
    </Target>
    <Target Name="PostBuild" AfterTargets="PostBuildEvent">
        <Exec Condition="$(Configuration) == 'Debug'" Command="npm run build" WorkingDirectory="NpmJS" />
        <Exec Condition="$(Configuration) == 'Release'" Command="npm run build" WorkingDirectory="NpmJS" />
    </Target>

 

这样每次编译时,NpmJS 下的 App.js 就会被打包到 wwwroot/js 下;使用时,在 razor 里直接按正常的 js 引入即可

 

posted @   cchong005  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示