我可以和你争论 AngularJS。这正是您所需要的
ng-view
dashboard.html 是附加了一些指令的布局,但如果你使用指令,则权力在于 AngularJs
这是示例:
仪表板.js
var app = angular.module("modularApp",[]);
app.config(['$routeProvider', "$locationProvider", function routes($routeProvider, $locationProvider) {
$routeProvider.when('/dashboard', {
controller:'HomeCtrl',
templateUrl:'templates/home.html'
});
$routeProvider.when('/moduleA', {
controller:'ModuleACtrl',
templateUrl:'templates/moduleA.html'
});
$routeProvider.when('/moduleB', {
controller:'ModuleBCtrl',
templateUrl:'templates/moduleB.html'
});
$routeProvider.otherwise({redirectTo: "/dashboard"});
}]);
模板/dashboard.html
<html ng-app="modularApp">
<head>
<!--.... include angular minified js file and what else you need...-->
<script type="text/javascript" src="dashboard.js"></script>
<script type="text/javascript" src="moduleACtrl.js"></script>
<script type="text/javascript" src="moduleBCtrl.js"></script>
</head>
<body>
<a ng-href="#/moduleA">Open Module A View</a>
<a ng-href="#/moduleB">Open Module B View</a>
<!-- Add widgets header menus .... -->
<ng-view></ng-view>
</body>
</html>
模块ACtrl.js
var app=angular.module("modularApp");
app.controller("ModuleACtrl",function($scope){
$scope.scopeValue="Hellow from view";
});
模块BCtrl.js
var app=angular.module("modularApp");
app.controller("ModuleBCtrl",function($scope){
$scope.scopeValue="Hellow from another view";
});
模板/moduleA.html
<div>{{scopeValue}} in module A</div>
模板/moduleB.html
<div>{{scopeValue}} in module B</div>
你可以用 Angular 做更复杂的事情,然后就是这个。一切都取决于您的需求。你有什么特殊要求吗:)
此外,您可以创建自己的指令,例如 ng-view 并使用您自己的 $route 服务和 $routeProvider,这样您就可以添加想要在某些规则匹配 url 时动态加载的 css 和 javascript。
所以不是上面的路由表,你可以有
app.config(['$myRouteProvider', "$locationProvider", function routes($routeProvider, $locationProvider) {
$routeProvider.when('/dashboard', {
javascript:'javascript/dashboard.js',
templateUrl:'templates/dashboard.html',
cssfile: 'css/dashboard.css'
});
$routeProvider.when('/moduleA', {
javascript:'javascript/moduleA.js',
templateUrl:'templates/moduleA.html',
cssfile: 'css/moduleA.css'
});
$routeProvider.when('/moduleB', {
javascript:'javascript/moduleB.js',
templateUrl:'templates/moduleB.html',
cssfile: 'css/moduleB.css'
});
$routeProvider.otherwise({redirectTo: "/dashboard"});
}]);
但是,请原谅我的法语,笨蛋。我在 ruby on rails 中尝试了几个库来实现类似的效果,但后端正在渲染内容,或者只是部分内容。但是我不确定您使用的是哪个后端,并且您是否有兴趣切换到 Rails。