当前位置:首页 > Windows程序 > 正文

ABP dynamic API

2021-03-26 Windows程序

打开ABP的事例项目SimpleTaskSystem.WebSpaAngular 中LayoutView


<!-- Dynamic scripts of ABP system (They are created on runtime and can not be bundled) -->

<!-- 添加对ABP系统运行时动态创建的脚本文件的引用 -->

<script src="http://www.mamicode.com/~/api/AbpServiceProxies/GetAll?type=angular"></script>
<script src="http://www.mamicode.com/~/AbpScripts/GetScripts" type="text/javascript"></script>


1).<script src="http://www.mamicode.com/~/api/AbpServiceProxies/GetAll?type=angular"></script>

Abp.WebApi.Controllers.Dynamic.Scripting.AbpServiceProxiesController

 

Abp\Framework\scripts\libs\requirejs\plugins\service.js

define(function () { return { load: function (name, req, onload, config) { var url = abp.appPath + ‘api/AbpServiceProxies/Get?name=‘ + name; req([url], function (value) { onload(value); }); } }; });

View Code

2).<script src="http://www.mamicode.com/~/AbpScripts/GetScripts" type="text/javascript"></script>

通过在 script标签中添加控制器(AbpScriptsController)请求路径,来引如所有需要动态生成的脚本文件。这些脚本文件包含多租户管理脚本,session、本地化脚本、权限、导航、系统设置、事件触发器。

Abp.Web.Mvc.Controllers.AbpScriptsController控制器是用来提供各种动态脚本文件的

1 public async Task<ActionResult> GetScripts() 2 { 3 var sb = new StringBuilder(); 4 5 sb.AppendLine(_multiTenancyScriptManager.GetScript()); 6 sb.AppendLine(); 7 8 sb.AppendLine(_sessionScriptManager.GetScript()); 9 sb.AppendLine(); 10 11 sb.AppendLine(_localizationScriptManager.GetScript()); 12 sb.AppendLine(); 13 14 sb.AppendLine(await _authorizationScriptManager.GetScriptAsync()); 15 sb.AppendLine(); 16 17 sb.AppendLine(await _navigationScriptManager.GetScriptAsync()); 18 sb.AppendLine(); 19 20 sb.AppendLine(await _settingScriptManager.GetScriptAsync()); 21 22 sb.AppendLine(GetTriggerScript()); 23 24 return Content(sb.ToString(), "application/x-javascript", Encoding.UTF8); 25 }

NavigationScriptManager   ----负责创建导航脚本文件

LocalizationScriptManager  ----负责创建本地化脚本文件

AuthorizationScriptManager --负责创建用户所有的权限脚本文件

SettingScriptManager    ----负责创建自定义设置脚本文件

GetTriggerScript      ----负责创建ABP系统的前端的事件总线

SimpleTaskSystem\SimpleTaskSystem.WebSpaAngular\Abp\Framework\scripts\libs\angularjs\abp.ng.js

该脚本文件向AngularJS中注入$httpProvider,实现请求模板地址的重定向。当请求模板 /App/Main/views/user/new.cshtml 时,会将Http请求的地址进行格式化(:6247/AbpAppView/Load?viewUrl=http://www.mamicode.com/App/Main/views/user/new.cshtml)指向 Abp.Web.Mvc.Controllers.AbpAppViewController.Load()。根据传入的模板相对地址找到模板并返回。

/Abp/Framework/scripts/abp.js

ABP开发规则:

1).ILocalizableString 类型属性必须在资源文件中设置,否则异常 

HttpHandler

Abp.Web.Mvc.Resources.Embedded.Handlers

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68074.html