ABP dynamic API

打開ABP的事例項目SimpleTaskSystem.WebSpaAngular 中LayoutViewjavascript


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

<!-- 添加對ABP系統運行時動態建立的腳本文件的引用 -->前端

<script src="~/api/AbpServiceProxies/GetAll?type=angular"></script>
<script src="~/AbpScripts/GetScripts" type="text/javascript"></script>java


1).<script src="~/api/AbpServiceProxies/GetAll?type=angular"></script>angularjs

Abp.WebApi.Controllers.Dynamic.Scripting.AbpServiceProxiesControllerapi

 

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

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="~/AbpScripts/GetScripts" type="text/javascript"></script>app

經過在 script標籤中添加控制器(AbpScriptsController)請求路徑,來引如全部須要動態生成的腳本文件。這些腳本文件包含多租戶管理腳本,session、本地化腳本、權限、導航、系統設置、事件觸發器。async

Abp.Web.Mvc.Controllers.AbpScriptsController控制器是用來提供各類動態腳本文件的ide

 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請求的地址進行格式化(http://localhost:6247/AbpAppView/Load?viewUrl=/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

相關文章
相關標籤/搜索