zoukankan      html  css  js  c++  java
  • 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信息

  • 相关阅读:
    zookeeper ACL(access control lists)权限控制
    zookeeper伪分布式集群搭建
    云服务器离线安装MariaDB安装步骤和解决办法
    云服务器——之Linux下安装tomcat
    云服务器之——Linux下配置JDK环境
    nginx安装与fastdfs配置--阿里云
    fastDFS 一二事
    云服务器 ECS--查找公网ip使用终端连接云服务
    springboot oauth 鉴权之——password、authorization_code鉴权
    springboot oauth 鉴权之——授权码authorization_code鉴权
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4700703.html
Copyright © 2011-2022 走看看