ABP之Javascript生成


ABP之Javascript生成

還是服務

在調試SimpleTaskSystem的AngularJs demo時,一開始我只看到對服務的應用。

1
2
3
4
5
app.controller(controllerId, [
 
'$scope' 'abp.services.tasksystem.task' ,
 
function($scope, taskService){}]);

  

在查找源代碼中的所有js文件后還是沒找到abp.services.tasksystem.task的定義,那么現在就剩下最后一種情況。這些服務是系統生成的,這樣的話與動態WebApi的設計思路也是一致的。在layout.cshtml中有兩處js引用

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

  

 

 

生成所有服務

~/api/AbpServiceProxies/GetAll?type=angular 對應的就是就是Abp對系統所有服務生成的JavaScript,現在對url進行反推我們可以在Abp.Web.Api中找到AbpServiceProxiesController,其中有一ScriptProxyManager 類型的字段_scriptProxyManager。ScriptProxyManager就是生成所有服務的一管理者。

在AbpServiceProxiesController中的GetAll方法有一參數type。這個參數表示根據什么js框架生成javascript,目前Abp提供了Angular與jQuery兩種支持。

 

在ScriptProxyManager中會根據不同的type調用不同的IScriptProxyGenerator生成javascript代碼。以Angular的實現AngularProxyGenerator為例。

 

 

  View Code

 

 

 

AngularProxyGenerator對所有的服務與Action進行了掃描生成javascript。

不過將所有服務都返回到客戶端,好像並不怎么安全。

另外ScriptProxyManager對生成的javascript代碼進行了緩存。

 

 

基礎配置

~/AbpScripts/GetScripts對應的則是Abp.Web.Mvc下的AbpScriptsController,AbpScriptsController主要提供一些基礎的配置信息到客戶端。

 

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

  

 

這些信息分別是:

 

接口

實現

說明

IMultiTenancyScriptManager

MultiTenancyScriptManager

多租戶配置

ISettingScriptManager

SettingScriptManager

Abp基礎配置

INavigationScriptManager

NavigationScriptManager

導航信息

ILocalizationScriptManager

LocalizationScriptManager

本地化

IAuthorizationScriptManager

AuthorizationScriptManager

權限

ISessionScriptManager

SessionScriptManager

Session信息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM