AngularJS:动态添加模块或在引导/扩展现有模块后添加

时间:2018-08-07 16:12:02

标签: angularjs webpack

可以说我们有一个模块化的angularjs应用程序,看起来像这样:

public boolean function onRequestStart (
    required string targetPage) {

    try {

        if (checkForAttack()) {
            location url="/" addtoken=false;
            return true;
        }

        ... do other stuff ...

    } catch (any e) {
        onError(e, "onRequestStart");
    }

    return true;

} // onRequestStart()

private boolean function checkForAttack() {

    // check for any kind of sql injection or xss attack

    var attackFound = false;

    // you could change these tests, or add more tests
    var tests = ["4445434C415245", "cast(\s|%20)*(%28|\()", "(;|%3B)(\s|%20)*DECLARE", /*"exec(\s|%20)*\(",*/ "schema\.columns|table_name|column_name|drop(\s|%20)+table|insert(\s|%20)+into|\.tables", "\.\[sysobjects\]", "\.sysobjects"];
    var ctTests = ArrayLen(tests);
    var ix = 0;
    var key = "";

    if (isDefined("CGI.query_string") && CGI.query_string != "") {
        for (ix = 1; ix <= ctTests; ix++) {
            if (REFindNocase(tests[ix], CGI.query_string) > 0) {
                CGI.query_string = "";
                attackFound = true;
                break;
            }
        }
    }

    if (isDefined("URL")) {
        for (key in URL) {
            for (ix = 1; ix <= ctTests; ix++) {
                if (REFindNocase(tests[ix], URL[key]) > 0) {
                    attackFound = true;
                    URL[key] = "";
                }
            }
        }
    }

    if (isDefined("Form")) {
        for (key in Form) {
            for (ix = 1; ix <= ctTests; ix++) {
                if (reFindNocase(tests[ix], Form[key]) > 0) {
                    attackFound = true;
                    Form[key] = "";
                }
            }
        }
    }

    if (IsDefined("Cookie")) {
        for (key in Cookie) {
            for (ix = 1; ix <= ctTests; ix++) {
                if (REFindNocase(tests[ix], Cookie[key]) > 0) {
                    attackFound = true;
                    Cookie[key] = "";
                }
            }
        }
    }

    return attackFound;

} // checkForAttack()

在索引模板中,我们以通常的方式初始化应用程序

let mod = angular.module('portal', [
   'ui.router',
   'portal.module1', 
   'portal.module2', 
   'portal.module3',
   'portal.module4'
])

这是我们“核心”功能的一种,我希望保持不变。在为新客户创建新功能时,每个人都希望有所不同,因此我们尝试为每个客户编写新的单独模块,并保持核心功能不变。但是,新模块确实依赖核心功能中的服务和指令。每个新功能都为后端路由提供了一些微服务,然后为UI提供了新的angularjs代码。

如果我创建一个新模块,例如<body ng-app="portal"> ,如何在不触碰上面定义的情况下将该模块放入主要的crazy_feature角度应用程序中?我们也使用webpack捆绑所有东西。

0 个答案:

没有答案