需求:使用express的router,根据自己项目需求分出多个模块,建立不同名称的文件来管理不同的路由请求,避免基础路由配置造成的文件杂乱、不易维护的缺点。
一、准备工作
假设电脑中已经安装了node,配置好了node的相关环境。
1.新建一个文件夹(名字为app即可)。注意:名字不要和安装的依赖冲突,如: express等。
2.命令行切换到第一步新建的文件夹目录下。
3.执行 npm init –y
, 创建一个 package.json 文件。
4.执行 npm install express
,创建一个 node_modules文件夹。
5. 在app文件夹下创建一个views文件夹,下面用来存放各个页面(如index.html、login.html)
6. 在app文件夹下创建一个public文件夹,下面用来存放静态资源(如css、js、img等)
7. 在app文件夹下创建一个router文件夹,用来存放处理各网页的路由(如:index.js、login.js)
8. 在app文件夹下创建一个app.js文件,用来处理静态资源和配置路由。
前八步上面创建的目录如下:
二、代码中相关配置
1、app.js文件
1.1 app.js中静态资源配置:
app.use(express.static(path.join(__dirname, "public")));
注:__dirname是根目录,当配置完静态资源默认路径后,views中的html文件需要引入静态资源时,只用从public下子目录开始引用即可(如: )。
1.2 app.js中路由配置:
// 配置路由
let indexRouter = require("./router/index");
let loginRouter = require("./router/login");
let productRouter = require("./router/product");
app.use("/", indexRouter);
app.use("/login", loginRouter);
app.use("/product", productRouter);
当配置完路由后,各页面的切换只需在浏览器的地址栏中输入“localhost:3000/login”即可。
1.3完整的app.js文件:
let express = require("express");
let path = require("path");
let app = express();
// 静态资源处理
app.use(express.static(path.join(__dirname, "public")));
// 配置路由
let indexRouter = require("./router/index");
let loginRouter = require("./router/login");
let productRouter = require("./router/product");
app.use("/", indexRouter);
app.use("/login", loginRouter);
app.use("/product", productRouter);
app.listen(3000, () => {
console.log('服务器已启动');//监听3000端口
})
2、各页面的路由
index.js:
let express = require("express");
let fs = require("fs");
let router = express.Router();
router.get('/', (req,res ) => {
let htmlCont = fs.readFileSync("./views/index.html");//使用同步方法读取文件
res.write(htmlCont);//将读取的内容写入请求的页面中
res.end();
})
module.exports = router;//导出当前模块
login.js
let express = require("express");
let fs = require("fs");
let router = express.Router();
router.get('/', (req,res) => {
let htmlCont = fs.readFileSync("./views/login.html");
res.write(htmlCont);
res.end();
})
router.route("/").get((req,res) => {
let htmlCont = fs.readFileSync("./views/login.html");
res.write(htmlCont);
res.end();
}).post((req,res) => {
res.set("content-type", "text/html;charset=utf-8");
res.end("登录成功")
})
module.exports = router;
三、运行文件
1.切换到app.js的目录下,使用node app
或者node app.js
指令运行该文件,在本地启动服务器。
当服务器启动后,进行第二步。
2.在浏览器地址栏输入:
localhost:3000/login或者localhost:3000或者localhost:3000/product测试。
3.运行结果如下: