考虑$routeProvider
的这个navbar
配置,并假设没有缓存
app.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl : 'pages/home.html',
controller : 'mainController'
})
.when('/about', {
templateUrl : 'pages/about.html',
controller : 'aboutController'
})
.when('/contact', {
templateUrl : 'pages/contact.html',
controller : 'contactController'
});
});
我在网上读到,单页应用程序的一个优点是网络带宽,因为每次用户切换页面时都不需要传输html标签。
但是,如果我们遇到上面navbar
有回家的情况,那么,联系人会被分到不同的页面,那么每次都不能传输html标签吗?
通过消除html标签传输,它是否仍能节省网络带宽?
答案 0 :(得分:1)
你可以说它确实如此,但同时也没有。如果你真的需要节省网络带宽,我知道this website但是我不太了解jQuery它能做什么,所以我无法做任何事来帮助你。该网站只有一个页面,但导航菜单隐藏并显示div,因此您只能使用一个页面获得那种“多页”网站。希望我能回答你的问题并给你一些可以解决的问题。我确实把jQuery从网站上删除了,但是我无法让它工作,所以也许你可以搞清楚,PM我发生了什么。
修改强> 我想出了jQuery所以我将把我的完整代码放在下面;)。
$(function(){
$("#nav-home").click(function(){
$("#home").show();
$("#projects").hide();
$("#contact").hide();
$(".selected").removeClass("selected");
$("#nav-home").addClass("selected");
});
$("#nav-projects").click(function(){
$("#home").hide();
$("#projects").show();
$("#contact").hide();
$(".selected").removeClass("selected");
$("#nav-projects").addClass("selected");
});
$("#nav-contact").click(function(){
$("#home").hide();
$("#projects").hide();
$("#contact").show();
$(".selected").removeClass("selected");
$("#nav-contact").addClass("selected");
});
});
body {
padding-top: 4em
}
#navbar {
height:100%;
width: 14em;
padding: 0.5em;
}
#navbar h1 {
margin-top: 1em;
margin-bottom: 2em;
display: block;
}
#navbar ul li {
display: list-item;
margin: 0.2em 0em;
}
#navbar ul {
margin: 1.4em;
display: block;
}
#page {
padding-top: 0;
padding-left: 16.5em;
}
#navbar {
position: fixed;
width: 100%;
height: 3em;
top: 0;
left: 0;
background-color: #282726;
box-shadow: inset -1em 0 2em rgba(0,0,0,0.2);
color: #FFFFFF;
text-shadow: 0 0 1em rgba(0,0,0,0.4);
text-align: center;
z-index: 100;
font-size: 110%;
}
#navbar h1 {
font-size: 2em;
color: #0077FF;
margin: 0.2em;
display: inline;
}
#navbar ul {
list-style: none;
font-size: 1.4em;
text-align: left;
margin: 0.6em;
display: inline;
}
#navbar ul li {
margin: 0.2em;
display: inline;
cursor: pointer;
}
#navbar ul li:hover,#navbar ul li.selected {
color: #0077FF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="navbar">
<h1>Sample Page</h1>
<ul>
<li id="nav-home" class="selected">- Home</li>
<li id="nav-projects">- Projects</li>
<li id="nav-contact">- Contact</li>
</ul>
</div>
<div id="home">Home Items Here</div>
<div id="projects" style="display: none;">Project List Here</div>
<div id="contact" style="display: none;">Contact Me here</div>
答案 1 :(得分:0)
通过使用$routeProvider
,您仍在维护单页应用程序。它只是改变了网页的内容,但没有再刷新整个页面。
- script.js <!-- stores all our angular code -->
- index.html <!-- main layout -->
- pages <!-- the pages that will be injected into the main layout -->
----- home.html
----- about.html
----- contact.html
在上面的代码结构中,只有注入index.html的页面才会使用$routeprovider
而不是index.html进行更改。因此,切换页面将从客户端而不是从服务器端获取。