Node.js 单页应用 js生成页面

本文探讨前端路由的由来及其在单页应用中的作用。在纯HTML模式下,页面跳转无法传值且DOM操作效率低。前端路由主要分为Hash模式和History模式,通过中间件如director.js实现页面动态切换。通过配置routes对象,不同URL路径对应不同页面逻辑,实现单页应用中的页面无刷新切换。同时,文章还提及了路由配置中路径与函数的对应关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端路由的由来及作用

地址栏输入URL地址,请求的要么是html页面,要么是后台的一个路由地址(或者是一个远程的路由端口数据地址)。但是,我们所有的页面全是js生成的,问题在于,比如我们就是要切换页面,但是在url地址栏现在就无法操作了。

为什么不直接在前端还是使用纯html+css+js直接引用的方法,而要用纯js的控制的模式?

原因:

1、页面跳转无法进行传值,它是静态的,只能通过js实现。

2、js是一种程序语言,控制更强,可以直接控制某个页面上的某一部分进行替换。

3、如果是html页面,js需要做更多的DOM操作,导致效率低下。

4、由于手机端的兴起,很多页面的操作都是模块化的。

目前,前端路由大致分为 2 种形式:

  • hash 模式:+“#”号

    http://www.xxx.com/#/login

  • history 模式

单页应用的操作步骤

之前我们是通过实例化进行页面变化,现在通过更改地址栏的路径实现单页的应用,需要借助中间件director.js

1、在html上引用中间件。

<script src="https://cdn.bootcdn.net/ajax/libs/Director/1.2.8/director.js"></script>

 

2、在main.js中写入Router的配置。

申明一个配置对象,把这个对象以参数的形式传给director.js里面的一个Router方法,在进行初始化。

 直接通过地址栏访问http://127.0.0.1:3000/#/login,就可以直接切换到登录。

/* 配置单页应用的中间件 */
let routes={
    "/login":()=>{//每一个配置都是一个键值对,值是一个函数
new Login();//表示输入键的地址,就会操作后面的值
    }
}


let router=Router(routes);//参数就是配置的对象
router.init();

 

3、主要是routes配置对象,前端路由。

对于我们现在来说,某一个hash的url地址对应某个对象,根据配置的路径,实例化不同的对象,在页面进行切换。

/* 配置单页应用的中间件 */

location.hash = location.hash || "#/login";//默认是登录页面

let routes={    
    "/":()=>{new Nav();},//类似于http://127.0.0.1:3000/#/index.html
    "/login":()=>{//每一个配置都是一个键值对,值是一个函数
new Login();//表示输入键的地址,就会操作后面的值
    },
    "/reg":()=>{//每一个配置都是一个键值对,值是一个函数
        new Reg();//表示输入键的地址,就会操作后面的值
            },
    "/manager":{//一个根目录下的子目录
        "/user":()=>{new User();}//主要后面的需要点击学生管理按钮后才会出现user页面
    },
     on:()=>{new Nav()},//访问直接先出来导航,但是需要一层一层,直接输入不行,所以需要configure这个参数配置
}


let router=Router(routes)configure({
    recurse: 'forward',
});//参数就是配置的对象
router.init();

 

4、在登录页面点击注册,注册页面点击登录,注册成功跳转登录,登录成功跳转主页。

 location.hash = "#/reg";//后面直接跟路径跳转

 

 

 5、注意一个问题:routes里面配置的是 路径----> 函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值