该框架已经在开发中,但我现在围绕应用程序/模块的想法。 (link to a proof of concept in development,can be found here)
应用程序应该有些独立,并且不能突然包括来自框架的脚本。这是完全可能的,通过在单独的模块中构造它们,如:
angular.module('myApp',[]);
然而,一个应用程序可以有模板,脚本,CSS和它可以运行在一个单独的服务器,所以我在寻找最好的方法来获取脚本和CSS文件,并动态加载到应用程序当用户从框架内启动应用程序时。
>目前我的结构化应用程序,如果他们有一个主要的模板,例如www.framework.com/apps/myapp/views/app.html,为了简单,我把脚本捆绑到每个应用程序的1个脚本文件,所以有还包括一个www.framework.com/apps/myapp/script.js。
框架包含一个加载应用程序的模板和一个appController。模板包含此片:
<div data-ng-controller="AppController" data-ng-include="app.appTemplate"> <div>loading...</div> </div>
这基本上绑定到$ scope.app.appTemplate,它会在所有脚本加载时更新,因此首先它显示一个加载模板,稍后在脚本包含在页面中后,将app.appTemplate更新到上述主模板应用。
而加载第一个索引模板的工作,这个模板当前加载的AppController从框架,所以它使用框架的$范围,而不是自己的脚本。
我仍然不得不以某种方式启动应用程序自己的角模块,并让它自己的没有在框架中运行任何东西,使“工作”
我仍然在弄明白如何最好地加载依赖的javascript文件(可能会使用requrejs或其他依赖加载器),但我目前没有线索如何“启动”应用程序,而不是从框架的AppController
编辑
我创建了一个小的演示项目来显示手头的问题,full code is visible at git-hub目前这个项目做了一些硬编码,这个想法是,我使那些较少的硬编码,当我得到的概念的证明,现在,在框架内加载应用程序。如果这是可能的,我可以想到在哪里获得URL和应用程序名称从…
你可能要重新思考你的架构。我认为或许“模块”或“应用程序”这个词,它属于Angular是一个misnomer,并导致你走错路径。
应用程序中的每个“用户安装的应用程序”应该实际上由应用程序模块中的控制器控制,或者注册到应用程序模块引用的模块。所以你不会“启动多个应用程序”,你真的只是一个启动,引用其他模块,然后使用控制器从这些模块控制在屏幕上的部分视图。
你会做的是当一个新的“小部件”安装,你注册它的模块文件(.js)与系统,将包含一个控制器WidgetCtrl,然后当你的页面加载,你将引用该小部件模块。从那里它应该可用于使用ng-controller和/或ng-include动态分配给元素。
我希望这是有道理的。