node学习笔记

node是什么?
在这里插入图片描述
node如何下载?

  1. 官网:https://nodejs.org/en/
  2. 本人的网盘链接:https://pan.baidu.com/s/1vmekv4KcFmm6UgsmMuw_nA
    提取码:zyr9

如何安装?
NodeJS入门(一)—nodejs详细安装步骤

如何验证安装成功?
在cmd中输入node -v
在这里插入图片描述
接下来就是正文了
怎样创建服务器


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

//创建服务器
const app = http.createServer();

//为服务器对象添加请求事件
app.on('request',async (req ,res)=>{
    
    res.end("ok")
})

//创建端口3000
app.listen(3000);


连接MongoDB数据库
连接之前,必须在cmd中下载相应的模块 npm install mongoose

const  mongoose = require('mongoose');
//数据库连接 27017是数据库的默认端口(可省略)
mongoose.connect('mongodb://localhost:/你数据库的名字',{ useNewUrlParser: true, useUnifiedTopology: true })
    .then(()=>console.log('数据库连接成功了'))

    .catch(()=>console.log('您的数据库跑路了'))

注意:nodejs最好是模块化运行,可以把他放在不同的文件中,通过引用的方式进行连接。

在app.js中写入require("./model/connect");
./代表当前文件夹的,model文件夹的connect.js,其中.js可以省略不写。
在这里插入图片描述
这里的nodemon 可以实时监测运行的一个模块,可以在cmd中输入:npm install nodemon -g 进行下载

querystring 模块提供用于解析和格式化 URL 查询字符串的实用工具。 它可以使用以下方式访问:

const querystring = require('querystring');

请求方式和请求地址

   //获取请求方式
        const method =req.method;
        //获取请求地址
      const {pathname,query} = url.parse(req.url,true)

请求方式有两种分别是GET和POST(是大写的哦)
通过get请求发送的数据存储在req.url中,
通过let{pathname,query}=url.parse(req.url,true);可以在query获取到对用的数据
url.parse()方法的第二个参数是布尔值,默认情况下req.url的结果是字符串类型的,通过url.parse
方法的第二参数来决定是否把字符串转为一个对象,为ture时转为对象

//用于创建网站服务器
const  http = require('http');

const url =require('url');
//app对象就是网站服务器对象
 const  app =http.createServer();
// 当客户端发送请求的时候
 app.on('request',(req, res) =>{


    //获取请求报文信息
     /*console.log(req.headers);*/
    res.writeHeader(200,{
        'content-type': 'text/html;charset=utf8'

    });
    console.log(req.url);
   let {query,pathname} = url.parse(req.url,true);
   console.log(query.name);
   console.log(query.age);
     //获取请求地址
     if(pathname == '/index' ||pathname == '/'){
         res.end('<h2>welcome to index 欢迎</h2>');
     }else if(pathname == '/list'){
         res.end('welcome to list');
     }else {
         res.end('not find');
     }

     console.log(req.url);

     //获取客户的请求方式
     console.log(req.method);
     if(req.method=='POST'){
         res.end('post');
     }else if(req.method=='GET'){
         res.end('get');
     }
//  响应
     //res.end('<h2>hi, user</h2>');

 });
// 监听3000端口
app.listen(3000);
console.log('服务器已启动,监听3000端口,请访问 localhost:3000')

获取post请求数据
post请求:要获得post数据,可以以流的方式分段读取。获取到的数据拼接到一个字符串中:req.on(“data”,params=>{str+=params}),然后绑定end事件,在结束读取的时候输
出获取到的数据,因为str是一个字符串,可以通过querystring模块的parse方法来转为对象,然后再获取到
对应的属性值

//用于创建网站服务器
const  http = require('http');

const url =require('url');

const  querystring =require('querystring');
//app对象就是网站服务器对象
const  app =http.createServer();
// 当客户端发送请求的时候
app.on('request',(req, res) =>{
    //post参数是通过事件的方式接受的
    //data  当请求参数传递的时候触发data事件
    //end   当参数传递完后触发end事件
    let postPatams ='';

    req.on('data',params=>{
        postPatams +=params;
    });

    req.on('end',()=>{
        querystring.parse(postPatams);
        console.log(querystring.parse(postPatams));
    });
    res.end('ok');


});
// 监听3000端口
app.listen(3000);
console.log('服务器已启动,监听3000端口,请访问 localhost:3000')

用res.writeHeader()方法,来防止页面出现乱码现象,200是页面正常返回客户端的编码。

res.writeHeader(200,{
        'content-type': 'text/html;charset=utf8'

    });

在另一个js文件中创建创建用户对象规则,其中的model对象创建连接数据库的集合,如果没有就他自己就会新建一个
module.exports = User; 是将其导出,提供其他文件使用

const  mongoose = require('mongoose');
// //创建用户对象规则
const userSchema = new mongoose.Schema({
    name:{
        type:String,
        required:true,
        minlength:2,
        maxlength: 7
    },
    age:{
        type:Number,
        min:18,
        max:80
    },
    password:{
        type:String,
        min:6,
        message:['密码不能少于六位']
    },
    email:String,
    hobbies:[String]
})
//创建集合
const User = mongoose.model('User',userSchema);   //users

module.exports = User;




301与302的区别?



答:301是永久重定向,302是临时重定向。(浏览器会不会记住的问题)

模块中导出单个成员和导出多个成员的方法?



+答:单个-->module.exports=xxx; 多个--->exports.xxx=xxx; 或module.exports={ 多个成员 }



package.json的用法



就是一个产品说明书

dependencies 属性。用来保存第三方包的依赖信息

所以建议每个项目都要有且只有一个package.json(存放在项目的根目录下)

我们可以通过 npm init -y 来生成package.json文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值