express-turnout
Version:
Pre-rendering Single-Page-Application for crawlers.
49 lines (46 loc) • 1.49 kB
HTML
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>{{meta['og:site_name'] + ' | ' + title}}</title>
<meta content="{{value}}" property="{{key}}" ng-repeat="(key,value) in meta">
<base href="/">
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.14/angular-ui-router.js"></script>
<script src="/express-turnout.js"></script>
<script>
angular.module('myApp',['ui.router'])
.run(function($rootScope,$window,$location,$state){
$rootScope.$on('$viewContentLoaded',function(){
var renderedTemplate= $window.document.body.innerHTML.trim().length>0
if(renderedTemplate){
$rootScope.title= 'Welcome clawlers!';
$rootScope.meta= {
'og:site_name':$state.current.name,
'og:title':$rootScope.title,
'og:url':$location.url(),
'og:type':'article',
'og:description':angular.element($window.document.body).text(),
}
$window.expressTurnoutRendered();
}
});
})
.config(function($locationProvider){
$locationProvider.html5Mode(true);
})
.config(function($stateProvider){
$stateProvider.state('second',{
url:'/second',
template:'<h1>second</h1><a ui-sref="first">first</a>',
});
$stateProvider.state('first',{
url:'*path',
template:'<h1>first</h1><a ui-sref="second">second</a>',
});
})
;
</script>
</head>
<body ui-view></body>
</html>