node中的路由

路由:根据用户请求路径的不同返回不同的数据或者页面
前端路由: 根据用户请求路径的不同渲染不同的数据 一般用来做单页面开发 SPA
路径发生改变,页面会发生渲染但是页面不会跳转 不会发送到后端的。
后端路由:根据用户请求路径的不同返回不同的数据或者html页面 一般情况下后端路由都用来做接口。会接收到请求的路径。
每跳转到不同的URL,都是重新访问服务端,然后服务端返回页面。
需要注意的是,当需要访问的页面使用jQuery书写js时,需要将req.url路径变为jquery路径,当需要访问的是多张图片时,修改路径固然有用,但是解决不了多张图片的问题,此时需要判断,判断条件为正则/\/img\/.+\.png/.test(req.url)【/img/1.png、/img/2.png】,这样所有图片就可以显示出来了,不会请求不到,但是,现在是get获取,get后可以添加参数的,如果在路径后添加name=zhangsan&age=18/这些参数的话,页面请求不到,这时看到小窗口的路径在js中并找不到,因为我们所书写的路径是请求的路径,小黑窗返回的是所有的路径,包括了请求的参数,所以,将所有的req.url变成pathname,因为pathname是路由的核心,为请求的路径,query是请求的参数。
ajax({
url:http:localhost:8080/login
})


req.url == /login

{
status:true,
info:"成功"
}

http:localhost:8080/fsDeom/index.json

http:localhost:8080/capi/product/qiuxie/open/homefirst

server 后端路由案例 端口号为9000时,路径为/一个页面,路径为/list一个页面
const http = require("http");
const fs = require("fs");
http.createServer((req,res)=>{
if(req.url == "/"){
//返回index.html

fs.readFile("./index.html",(err,data)=>{
res.end(data);
})
}else if(req.url == "/list"){
//返回list.html

fs.readFile("./list.html",(err,data)=>{
res.end(data);
})
}else if(req.url == "/goodsList"){ //假如说访问这个后端接口,返回一个数据。这个路径只能返回字符串
res.writeHead(200,{"content-type":"application/json;charset=utf8"});
// 状态码为200时,返回数据,返回json文件,为中文。
res.end(JSON.stringify({
status:true,
info:"请求成功"
}))
}
}).listen(9000) //端口号,后端创建的额,所以后端不用接收。


简写node命令:
先npm init 初始化json

 


在package.json script键里写上想要的命令,然后node里
npm run dev(自己自定义的key)。如果是更改在start里,直接npm start就可以。

url的组成部分
http:80 8080
https:443
协议https
域名:www.baidu.com
端口号 80
请求的路径 /s (就是pathname,所有路由的核心,围绕pathname来的)
请求的参数(query。)wd=%E5%8D%83%E9%94%8B%E5%9F%B9%E8%AE%AD&rsv_spt=1&rsv_iqid=0x9ea1e1150000b088&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=1&rsv_sug1=1&rsv_sug7=001&rsv_sug2=1&rsp=0&rsv_sug9=es_2_1&rsv_sug4=1016&rsv_sug=9
请求的页面

转载于:https://www.cnblogs.com/newskill/p/10301789.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Node.js路由传参可以通过URL的查询字符串或动态路由参数来实现。 1. 查询字符串传参: 可以在URL添加查询字符串,以问号(?)开头,后面跟随着键值对,多个键值对之间用&符号连接。例如: ``` http://localhost:3000/user?id=123&name=John ``` 在服务器端可以通过req.query来获取查询字符串参数的值: ```javascript app.get('/user', function(req, res) { var id = req.query.id; var name = req.query.name; // do something with id and name }); ``` 2. 动态路由参数传参: 可以在路由路径使用冒号(:)来定义动态参数,例如: ```javascript app.get('/user/:id', function(req, res) { var id = req.params.id; // do something with id }); ``` 在路由处理函数,可以通过req.params来获取动态参数的值。 注意:在使用动态路由参数传参时,路由路径的参数名称必须与路由处理函数的参数名称相同。 ### 回答2: 在Node.js路由是用来确定如何响应客户端请求的机制。通过路由的配置,我们可以指定不同的URL路径和请求方法与相应的处理函数关联起来。 要在Node.js传递参数给路由,可以通过两种主要的方式来实现: 1. URL参数传递:可以在URL直接将参数添加到路径,然后通过路由接收和处理这些参数。例如,定义一个路由"/user/:id",其的":id"就表示一个动态的参数。当客户端请求这样的URL时,例如"/user/123",我们可以通过路由解析并获取到id的值123。 2. 查询参数传递:可以通过在URL后面添加查询字符串的方式传递参数。查询字符串是以"?"开头的键值对,不同的键值对之间用"&"分隔。例如,定义一个路由"/search",客户端发起的请求URL为"/search?q=keyword",我们可以通过路由获取到查询字符串的参数值"keyword"。 例如,使用Express框架可以实现路由传参的示例代码如下: ```javascript const express = require('express'); const app = express(); // 指定路由响应,接收URL参数 app.get('/user/:id', (req, res) => { const userId = req.params.id; res.send(`User ID: ${userId}`); }); // 指定路由响应,接收查询参数 app.get('/search', (req, res) => { const keyword = req.query.q; res.send(`Search keyword: ${keyword}`); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 以上代码,使用app.get()方法指定了两个路由,分别用于接收URL参数和查询参数。在路由处理函数,通过req.params和req.query来获取参数的值,并返回响应给客户端。 通过这样的方式,我们可以在Node.js实现路由的参数传递,根据不同的参数值来实现不同的逻辑处理。 ### 回答3: 在Node.js,可以通过不同的方式将参数传递给路由。 一种常见的方式是使用URL路径参数。可以在路由路径定义参数,然后通过在URL传入相应的值来访问。例如,假设我们有一个路由处理程序来处理用户的个人资料,可以这样定义路由路径:'/user/:id'。在这个例子,我们可以通过访问'/user/123'来传递id为123的用户参数。 另一种常见的方式是使用URL查询参数。查询参数是通过URL的'?'后面的键值对来传递的。例如,假设我们有一个路由处理程序来处理搜索请求,可以这样定义路由路径:'/search'。我们可以通过访问'/search?q=keyword'来传递搜索关键词的参数。 在Node.js,可以使用内置的req对象来获取传递给路由的参数。对于URL路径参数,可以通过req.params来访问,例如req.params.id。对于查询参数,可以通过req.query来访问,例如req.query.q。 在路由处理程序,可以使用这些参数来执行相应的操作。例如,在用户个人资料的路由处理程序,可以根据传递的id参数来获取用户信息并返回。在搜索路由处理程序,可以根据传递的查询参数来执行相关的搜索操作并返回结果。 总结而言,Node.js路由可以通过URL路径参数和查询参数来传递参数。可以使用req.params和req.query来获取这些参数,并在路由处理程序使用它们来执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值