ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Smartstore模块开发实战:从Hello World模块到打包发布上架完整教程

Smartstore模块开发实战:从Hello World模块到打包发布上架完整教程 Smartstore模块开发实战从Hello World模块到打包发布上架完整教程【免费下载链接】SmartstoreA modular, scalable and ultra-fast open-source all-in-one eCommerce platform built on ASP.NET Core 10项目地址: https://gitcode.com/GitHub_Trending/smar/Smartstore本文带你完成Smartstore 模块开发的完整闭环理解模块体系、搭建 Hello World 模块、编写配置页与多语言资源最后用 Smartstore Packager 打包发布并上架到店铺插件中心。Smartstore 是一款基于 ASP.NET Core 构建的开源一体化电子商务平台模块化是它最核心的扩展能力——无论是支付、物流、税务还是界面组件都可以通过一个模块轻松接入。一、为什么选择 Smartstore 做模块开发Smartstore 的架构天然为插件化而生核心只负责商品、订单、客户、内容等基础能力而一切增值功能都交给**模块Module**来实现。一个模块可以替换或扩展服务接入 PayPal、Stripe 等支付或自定义运费、税率计算️修改 UI向页面注入小组件、管理后台菜单、标签助手⚙️改变工作流监听订单事件、自定义审批流、对接外部 API模块本质上是一个普通的 C# 类库项目最终编译成一个程序集被 Smartstore 动态加载到应用域中。官方模块如支付、物流、谷歌分析就存放在 src/Smartstore.Modules/ 目录下是最好的参考样板。 提示模块可以使用 Smartstore API也可以完全不依赖它。只要满足两个硬性要求就是一个合法的模块——module.json清单文件 实现IModule接口的Module.cs入口类。二、模块的最小结构module.json 与 Module.cs1. module.json模块的身份证module.json描述模块的元数据是插件管理器Plugin Manager识别和展示模块的依据。其字段规范定义在 module.schema.json 中必填项只有 3 个字段说明SystemName模块系统名通常即程序集名不含扩展名如MyOrg.HelloWorldFriendlyName英文友好名称用户在后台看到的名字Version当前模块版本如5.0可选字段还有Author作者、Group分组如 Payment / CMS / SEO、MinAppVersion最低兼容的 Smartstore 版本、ResourceRootKey多语言资源根键等。注意模块版本号应与当前 Smartstore 版本保持一致版本不兼容的模块不会被加载。2. Module.cs安装与卸载的入口类每个模块都需要一个入口类约定俗成命名为Module.cs内部类放在项目根目录。推荐继承抽象基类 ModuleBase它已实现公共逻辑你只需覆写两个方法InstallAsync()模块安装时调用——保存默认设置、导入多语言资源并务必调用base.InstallAsync(context)UninstallAsync()卸载时调用——清理设置与语言资源官方建议不要删除自定义业务数据方便日后重装三、实战搭建 Hello World 模块以下流程参照官方教程 building-a-simple-hello-world-module.md 编写只需 5 步即可跑通第一个模块。第 1 步创建项目打开解决方案Smartstore.sln在Modules文件夹上右键 → 新建类库项目命名为MyOrg.HelloWorld物理路径必须是src/Smartstore.Modules/修改.csproj将编译输出指向 Web 模块目录PropertyGroup ProductA Hello World module for Smartstore/Product OutputPath..\..\Smartstore.Web\Modules\MyOrg.HelloWorld/OutputPath OutDir$(OutputPath)/OutDir /PropertyGroup每次构建模块都会被自动复制到Smartstore.Web/Modules/应用从这里动态加载模块程序集。⚠️ 易错点src/Smartstore.Modules/是源码目录src/Smartstore.Web/Modules/是构建输出目录两者不要混淆。第 2 步添加 module.json按上文说明填写清单设置SystemName为MyOrg.HelloWorld、Group为Admin、ResourceRootKey为Plugins.MyOrg.HelloWorld并把该文件的构建设置为Content / Copy if newer。第 3 步编写入口类与设置类入口类Module : ModuleBase, IConfigurable——实现IConfigurable接口后插件管理器中会出现Configure按钮新建Configuration/HelloWorldSettings.cs设置类实现ISettings例如一个Name字符串属性默认值John Smith安装模块时TrySaveSettingsAsyncHelloWorldSettings()会把默认值写入数据库卸载时自动清理。第 4 步管理后台配置页MVC 三件套Smartstore 遵循 MVC 模式配置页只需三样东西组件文件作用控制器Controllers/HelloWorldAdminController.cs继承AdminControllerGET/POST 两个Configure动作分别用[LoadSetting]与[SaveSetting]特性自动加载/保存设置视图模型Models/ConfigurationModel.cs用[LocalizedDisplay]特性绑定多语言显示名视图Views/HelloWorldAdmin/Configure.cshtml复用_ConfigureModule布局用setting-editor标签助手渲染输入框第 5 步前台页面与多语言再添加一个前台控制器HelloWorldController继承PublicController和视图Views/HelloWorld/PublicInfo.cshtml访问helloworld/publicinfo路由即可看到 Hello John Smith 的问候页。多语言资源放在Localization/目录的resources.en-us.xml等 XML 文件中en-us替换为对应语言代码安装模块时自动导入。视图模型属性通过[LocalizedDisplay(*Name)]引用这些资源详见 localizing-modules.md。✅跑通验证编译后进入后台 → 插件 → 管理插件 → Hello World → 安装点击Configure修改名字前台刷新看到变化——你的第一个模块开发完成了四、打包发布Smartstore Packager 一键出包模块开发完成后要分发给其他店铺就进入打包发布环节。1. Release 模式构建发布前必须切换到Release配置构建模块在模块项目上右键 Build 即可产物会输出到.csproj中定义的OutputPath。版本编号约定热修复递增修订号例如5.0.1→5.0.1.1→5.0.1.2。2. 用 Packager 生成安装包Smartstore 官方提供Smartstore Packager源码位于 tools/Smartstore.Packager/打包引擎见 PackagerEngine.cs工作流很简单打开仓库根目录的Smartstore.Tools.sln构建Smartstore.Packager项目启动后选择构建产物目录点击ReadExtensions列出所有模块选中目标模块 → 指定输出目录 → 点击Create Package生成的包按Smartstore.Module.{模块系统名}.{版本号}.zip命名例如Smartstore.Module.MyOrg.HelloWorld.5.0.zip。3. 命令行方式适合 CI 自动化对于持续集成场景仓库内置了无界面版 Smartstore.Packager.Cli与 GUI 版共享同一套打包逻辑产物完全一致Smartstore.Packager.Cli pack --root 构建产物目录 --output 输出目录 --extension MyOrg.HelloWorld支持--all批量打包所有模块与主题成功时退出码为0完整参数说明见 deploying-modules.md。五、上架让模块进入其他店铺打包好的 zip 就是模块的上架包交付方式有两种方式适用场景说明上传安装包推荐分发给第三方店主店主在后台插件管理器直接上传 zipSmartstore 自动重启应用完成安装无需停掉应用池FTP / RDP 上传自有服务器运维将模块文件上传到服务器Modules目录后重启应用再在插件管理器中安装上架小贴士module.json的Group决定模块在后台列表中的分类展示选对分组Payment / CMS / SEO…能让店主更容易发现你的模块卸载时保留业务数据、MinAppVersion如实声明是模块专业度的基本体现私有依赖的 NuGet 包务必登记到PrivateReferences否则运行时抛错六、延伸阅读官方文档导航主题文档位置模块入门结构、清单、最佳实践dev-docs/compose/modules/getting-started-with-modules.mdHello World 完整教程dev-docs/compose/modules/tutorials/building-a-simple-hello-world-module.md部署与打包发布dev-docs/compose/modules/deploying-modules.md控制器与 ViewComponentdev-docs/compose/modules/controllers-and-viewcomponents.md模块多语言dev-docs/compose/modules/localizing-modules.md可授权商业模块dev-docs/compose/modules/licensable-modules.mdmodule.json 字段规范src/Smartstore.Modules/module.schema.json掌握Hello World → 配置页 → 打包 → 上架这条主线后你可以沿 modules/examples/ 目录中的示例添加菜单项、创建区块、领域实体、导出/小组件提供者继续进阶最终构建出可商业分发的 Smartstore 模块。【免费下载链接】SmartstoreA modular, scalable and ultra-fast open-source all-in-one eCommerce platform built on ASP.NET Core 10项目地址: https://gitcode.com/GitHub_Trending/smar/Smartstore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表