本文介绍如何使用require.js结合text.js插件构建最简单的单页应用程序。通过配置路径和逻辑处理,实现CSS的按需加载与页面内容的动态切换,展示了一个基础的SPA实现方案。
项目概述与目录结构
编写了一段测试代码,利用require.js及其插件text.js构建了一个最基础的单页应用程序(SPA)。此处仅作简要记录,以便日后复习参考。项目托管在Git地址:https://github.com/lily1010/requireSPA。接下来查看项目的目录结构。

从项目结构可以看出,CSS文件被单独分离出来,从而实现了按需加载机制。具体表现为:当加载test1.html时,会同时加载对应的test1.css;而加载test2.html时,则加载test2.css。
入口文件index.html分析
一、首先查看入口文件index.html的代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<style type="text/css" class="css-attribute">
</style>
</head>
<body>
<script data-main="js/main" src="js/require.js"></script>
<div class="page">
</div>
</body>
</html>
该文件结构较为简单,主要定义了requirejs的入口点data-main。此外,为了支持CSS的按需加载,还定义了一个名为css-attribute的类。
main.js配置与逻辑处理
二、在main.js中进行路径配置及逻辑处理。
require.config({
paths:{
"jquery":"lib/jquery-1.11.0",
"text":"lib/text",
"text1":"../template/test1.html", //这里千万注意路径
"text2":"../template/test2.html",
"css1":"../style/test1.css",
"css2":"../style/test2.css"
}
})
require(['jquery','text!text1','text!text2','text!css1','text!css2'],function($,template1,template2,css1,css2){
// 进入页面先设置为页面test1.html内容
$(".css-attribute").html(css1);
$(".page").html(template1);
// 点击skip按钮设置为页面test2.html内容
$(".skip").click(function(){
$(".css-attribute").html(css2);
$(".page").html(template2);
})
})
上述代码属于require.js的基础配置,重点在于掌握text.js的使用方式,整体实现较为简单。
页面结构与样式实现
三、查看两个页面的结构及其样式。①test1.html的代码如下:
<div class="test1">
<button class="skip">点击我跳到SPA第二页</button>
</div>
②test1.html对应的CSS文件test1.css代码如下:
.test1{
position: absolute;
top:0;
bottom:0;
left: 0;
right: 0;
background-color: red;
}
.skip{
position: absolute;
top:50%;
left: 50%;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
运行效果如下所示:

③test2.html的代码如下:
<div class="test2">
<button class="skip2">我是第二页,点击我回第一页</button>
</div>
④test2.html对应的CSS文件test2.css代码如下:
.test2{
position: absolute;
top:0;
bottom:0;
left: 0;
right: 0;
background-color: pink;
}
.skip2{
position: absolute;
top:50%;
left: 50%;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
运行效果如下所示:

以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家多多支持本站。