是否可以将巨型字符串作为JavaScript加载并通过URL路径加载



我试图通过使用oclazyload来仅使用用户请求的加载页面,使拥有无限大的单个page angularjs Web应用程序变得容易。我想通过Websocket而不是HTTP加载HTML,JS和CSS。

我想要Webockets的原因是因为所有Web浏览器都不在域名上强制执行任何类型的CORS,以便可以进行缩放,例如:

ws://worker01/AccountManagementHTMLs

ws://worker02/ForumCSS

等...

我想拥有这种缩放,因为它可能已经有可能通过在RAW BASE64块中流式传输文件来处理一个浏览器之间的同行文件传输到另一个浏览器之间。

还有一个优点,即使用Raspberry Pis作为便宜但强大的工人无人机。

但是,在我进入这些实验功能之前,将字符串加载到Oclazyload中会很酷。但是,如果您查看我的controller.js,oclazyload只能从URL加载JS:

http://localhost/krogoth_gantry/dynamicjavascriptInject/ Module.js

(function() {
    'use strict';
    angular.module('app.FUSE_APP_NAME', ['flow']).config(config);
    function config($stateProvider, $translatePartialLoaderProvider, msApiProvider, msNavigationServiceProvider) {
        $stateProvider
            .state('app.FUSE_APP_NAME', {
                url: '/FUSE_APP_NAME',
                views: {
                    'content@app': {
                        templateUrl: '/krogoth_gantry/DynamicHTMLInjector/?name=FUSE_APP_NAME',
                        controller: 'FUSE_APP_NAMEController as vm'
                    }
                }
            })
        _DJANGULAR_SLAVE_VC_INJECTION_POINT_; /* krogoth_gantry Slave VCs automatically injected here. */
        _DJANGULAR_SLAVE_MSAPI_INJECTION_POINT_
        msNavigationServiceProvider.saveItem('AK_NAVCAT_KROGOTH.AK_SUBCATAGORY_KROGOTH.FUSE_APP_NAME', {
            title: 'FUSE_APP_TITLE',
            icon: 'FUSE_APP_ICON',
            state: 'app.FUSE_APP_NAME',
            weight: 3
        });
        _DJANGULAR_SLAVE_NAV_SERVICE_INJECTIONS_
    }
})();

http://localhost/krogoth_gantry/dynamicjavascriptInject/ Controller.js

(function() {
    'use strict';
    angular.module('app.FUSE_APP_NAME').controller('FUSE_APP_NAMEController', FUSE_APP_NAMEController);
    function FUSE_APP_NAMEController($log, $state, $ocLazyLoad) {
        var vm = this;
        vm.$onInit = onInit;
        vm.viewName = 'FUSE_APP_NAME';
        vm.viewDidLoad = viewDidLoad;
        vm.initLazyModule = initLazyModule;
        vm.stateGoToLazy = stateGoToLazy;
        function onInit() {
            console.log('FUSE_APP_NAME did finish loading');
            vm.viewDidLoad();
        }
        function viewDidLoad() {
            $('<p>Welcome.</p><br>').appendTo('ak-main');
        }
        function btnClickInitLazyModule() {
            $ocLazyLoad.load('/krogoth_gantry/DynamicJavaScriptInjector/?name=LAZYMVC_UNLOADED&ov=file.js');
        }
        function stateGoToLazy() {
            $state.go("app.LAZYMVC_UNLOADED");
        }
    }
})();

// Name:
// LAZYMVC_THING
// We will load: LAZYMVC_UNLOADED
// COMPILED HTML:
////krogoth_gantry/DynamicHTMLInjector/?name=FUSE_APP_NAME
// COMPILED JAVASCRIPT:
////krogoth_gantry/DynamicJavaScriptInjector/?name=FUSE_APP_NAME

oclazyload似乎需要一个用于加载其他AngularJS模块的URL,是否可以简单地加载一个原始字符串,就好像它是JS或HTML文件的路径吗?

我的dynamichtmlinjector和dynamicjavascriptInjector没有指向文件系统路径,我只是在欺骗javascript以假设它正在加载静态文件。

我碰巧具有类似的功能,它将让用户在textarea中编写JS,然后运行此JS。

脚本将在您

后运行
document.body.appendChild(newScript);


function run() {
    var el = document.getElementById('cnsl');
    var scriptText = el.value;
    var oldScript = document.getElementById('scriptContainer');
    var newScript;
    if (oldScript) {
        oldScript.parentNode.removeChild(oldScript);
    }
    newScript = document.createElement('script');
    newScript.id = 'scriptContainer';
    newScript.text = el.value;
    document.body.appendChild(newScript);
}

相关内容

  • 没有找到相关文章

最新更新