node服务器

node服务器

使用HTML+css+js 开发的是浏览器端,又叫前端
node 服务器端 又叫后端

   开发阶段:服务器端和浏览器端都在一台电脑上开发就可以了。
   生产环境:服务器端是部署在服务器上的。浏览器端也是在服务器上,别人通过域名或者ip访问。

本地域名:localhost
本地IP:127.0.0.1

查看本地局域网ip
在cmd中使用ipconfig

node创建服务的模块为http。

// 引入http模块
const http = require("http");

调用http createServer方法创建服务

这个方法需要一个回调函数,回调函数中有两个形参 回调函数是在接收到请求时执行

node 是依靠事件驱动。

  • request 请求信息(req)
  • response 响应信息(res)
http.createServer(function(req,res){
  // 如果有请求进来,需要给它响应。 
  // 设置请求头,请求头中指定编码格式
  res.setHeader("content-type","text/platin;charset=utf8")
  res.end("你好,东湖");
  // 需要添加端口监听
}).listen(3000);//不推荐更改,因为你不知道每个应用的端口。如果两个程序的端口冲突,则软件运行会出错。
console.log("服务器已经启动");
// ctrl + c 停止服务运行。

write:向响应中添加数据,可以多次调用,但是不能在end后使用
end:结束本次响应,可以传参,参数也可以为空,参数也会被添加到响应中。只能调用一次,后面的end不会有作用。

const http = require("http");
const fs = require("fs");
http.createServer(function(req,res){
  fs.readFile("b.txt","utf-8",function(err,data){
    if(err){
      console.log("读取失败:"+err);
      return;
    }
    res.setHeader("content-type","text/platin;charset=utf8")
    res.write(data);
    res.write(data);//可以多次添加
    res.end("1");//结束相应
  })

}).listen(3000);
console.log("服务器已启动");

引入获取请求参数的模块

const queryString = require("querystring");

获取get参数

 <form action="http://localhost:3000" method="get">
      商品名称:<input type="text" name="keyword">
      商品价格:<input type="text" name="price">
      <br>
      <input type="submit" value="提交">
  </form>

获取用户输入信息

// 获取请求报文中的一些信息
const http = require("http");
// 引入获取请求参数的模块
const queryString = require("querystring");

// 第一个是请求信息对象,第二个是响应信息对象
http.createServer(function(req,res){
  // 解决跨域问题
  // 违反了同源策略时,会出现跨域: 协议,域名,端口三者只要有一个不同就会跨域。
  res.setHeader("Access-Control-Allow-Origin","*");

  let obj = queryString.parse(req.url.split('?')[1]);
  //req.url.split('?')[1]将接收到的数据拆分,获取?后面的内容,再通过queryString.parse解析成为对象,得到的结果为{keyword="",price=""}

  res.setHeader("content-type","text/platin;charset=utf8");
  res.write(`您搜索的商品为${obj.keyword},价格为${obj.price}`);
  // 添加端口监听
  res.end();
}).listen(3000);
console.log("服务器成功启动");```

获取post参数

 <form action="http://localhost:3000" method="post">
      用户名:<input type="text" name="username">
      <br>
      密码:<input type="password" name="pwd">
      <br>
      <input type="submit" value="提交">
  </form>
const http = require("http");
const queryString = require("querystring");

http.createServer(function (req, res) {

  let data = "";
  // 监听事件 只要有数据传入时就会触发
  req.on("data",(chunk)=>{
    data += chunk;
  })
  // 监听事件  数据传输完毕后触发
  req.on("end",()=>{
    // 将参数转为对象
    let {username,pwd} = queryString.parse(data);
    if (username==user.name&&pwd==user.pwd) {
      res.write("欢迎你,"+username);
    }else{
      res.write("用户名或密码错误")
    }
    res.end();
  })

}).listen(3000);
console.log("服务器成功启动");
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将React应用程序连接到Node.js服务器,可以使用以下步骤: 1. 在React应用程序的根目录中,使用终端或命令提示符打开一个新的命令窗口。 2. 使用以下命令初始化一个新的React应用程序: ``` npx create-react-app my-app ``` 这将创建一个名为 "my-app" 的新React应用程序。 3. 安装与Node.js服务器相关的依赖项。在React应用程序的根目录中运行以下命令: ``` npm install express axios ``` 这将安装Express和Axios模块,用于在React应用程序中处理服务器请求和响应。 4. 创建一个新的文件夹,用于存放服务器文件。在React应用程序的根目录中创建一个名为 "server" 的文件夹。 5. 在 "server" 文件夹中创建一个新的JavaScript文件,例如 "server.js"。在该文件中,编写以下代码来创建一个简单的Node.js服务器: ```javascript const express = require('express'); const app = express(); app.get('/api/data', (req, res) => { res.json({ message: 'Hello from the server!' }); }); const port = process.env.PORT || 5000; app.listen(port, () => { console.log(`Server listening on port ${port}`); }); ``` 这个简单的服务器会在根路径下的 "/api/data" 路由上返回一个包含消息 "Hello from the server!" 的JSON响应。 6. 在React应用程序的根目录中的 "src" 文件夹中创建一个新的文件,例如 "api.js"。在该文件中,编写以下代码来处理从服务器获取数据的逻辑: ```javascript import axios from 'axios'; export const fetchData = async () => { try { const response = await axios.get('/api/data'); return response.data; } catch (error) { console.error('Error fetching data:', error); } }; ``` 这个代码片段使用Axios库来发送GET请求到服务器的 "/api/data" 路由,并返回响应数据。 7. 在React组件中使用从服务器获取的数据。在React应用程序的根组件或其他需要数据的组件中,使用以下代码来获取并显示从服务器返回的数据: ```javascript import React, { useEffect, useState } from 'react'; import { fetchData } from './api'; const App = () => { const [data, setData] = useState(null); useEffect(() => { const getData = async () => { const result = await fetchData(); setData(result); }; getData(); }, []); return ( <div> {data ? <p>{data.message}</p> : <p>Loading...</p>} </div> ); }; export default App; ``` 这个组件使用React的 `useEffect` 钩子和 `useState` 钩子来在组件加载时获取数据,并将其存储在状态变量 `data` 中。然后,根据数据是否存在,显示相应的消息或 "Loading..." 文本。 8. 启动React应用程序和Node.js服务器。在React应用程序的根目录中,分别在两个不同的终端或命令提示符窗口中运行以下命令: ``` npm start ``` ``` node server/server.js ``` `npm start` 命令将启动React开发服务器,而 `node server/server.js` 命令将启动Node.js服务器。 现在,React应用程序将通过Axios库从Node.js服务器获取数据,并在应用程序中显示。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值