nvm环境安装和 node 的基本使用

本文介绍了如何使用nvm管理Node.js版本,详细步骤包括安装nvm、切换版本,并提供了http服务器交互的示例,涉及fs、querystring、url和events模块。此外,还讲解了MySQL的基本操作,包括安装、导入、建立连接、执行SQL查询、CRUD操作。
摘要由CSDN通过智能技术生成

前言

node环境安装
之前我们安装的node是通过对应的node的安装包进行安装的(版本是死的 某些时候版本不兼容)。
nvm(node版本管理器)。我们可以直接安装nvm,然后通过nvm来安装node(随意进行版本切换)


一、nvm环境安装?

1.下载nvm安装包

2.安装nvm

nvm -version

3.更改镜像(加到你的nvm的安装路径下的settings文件中)

nvm node_mirror https://npm.taobao.org/mirrors/node/ 
nvm npm_mirror https://npm.taobao.org/mirrors/npm/

4.通过nvm来安装node(管理员方式运行)

nvm ls #查看所有的node版本
nvm install 版本 #安装node版本 
nvm use 版本 #版本切换

二、http 服务器交互

fs 文件系统

querystring 解析对应的url请求的数据

url 对应的url地址的读取

events模块(事件)

events使用到的是观察者模式 (on off emit)
events里面的主要对象是EventEmiter对象

使用

代码如下(示例):

const EventEmitter = require('events').EventEmitter 
let eventEmit = new EventEmitter() 
//on监听 
let fn = function(agr1){
 console.log("hello"+agr1); 
 }
 eventEmit.on('listen1',fn) 
 eventEmit.on('listen1',function(agr1){
  console.log("你吃饭了"+agr1);
})
//off取消监听 里面的function不是回调 是取消的事件执行函数 eventEmit.off('listen1',fn) //emit执行 eventEmit.emit('listen1','张三') //一个监听事件 可以对应多个方法 一个内容可以对应多个监听(监听数组)

http模块 我们只能通过url获取get请求提交的数据(如果需要需要post请求的数据 我们需要监听)

const http = require('http') 
const url = require('url')
const {parse} = require('querystring')
const {readFile,writeFile} = require("fs") 
//创建了一个服务 
let server = http.createServer() //表示当前是一个服务 
//监听对应的请求方法 request (只是请求进来了) 
server.on('request',function(req,res){
 res.setHeader('Content-type','application/json;charset=utf-8')
  res.setHeader('Access-Control-Allow-Origin','*')
   let router = url.parse(req.url).pathname //路由地址
    if(router == "/login"){ 
    //用于拼接数据 
    let data = "" 
    // 监听错误
     req.on('error',function(){
      console.log("请求错误"); 
      })
      //得到请求的数据 
      // 监听的请求里面的数据的变化 监听post请求 
      req.on('data',function(chunk){ 
      // chunk 过来的数据 分段
       data+=chunk.toString() 
       })
       //监听请求结束 
       req.on('end',async function(){ 
       let param = parse(data) //接收post请求的数据 
       //2.读取这个json文件的数据
        await new Promise((success,error)=>{
         readFile('./db.json',(err,data)=>{ 
         if(err) error(err)
          success(JSON.parse(data.toString())) 
          }) 
          }).then(data=>{ 
          // console.log(data.users); //res.users 
          //3.在对应读取的数据里面进行查找 
          let obj = data.users.filter(v=>{
           return (v.username == param.username)&&(v.password == param.password) })
           //4.有相同的内容就返回登录成功 没有就返回失败
            if(obj.length>0) res.write(JSON.stringify({messgae:'登录成 功',data:obj[0]}))
            else res.write(JSON.stringify({messgae:'登录失败',data:{}})) })
            res.end()
            })
             } 
             })//监听这个服务 events里面的事件循环(一直在监听) 
             server.listen('12345',function(){ console.log('当前服务已经开启'); })

在这里插入图片描述

执行顺序 先宏后微
方法是存在于方法栈 (栈 入栈 ) 栈里面的队列(event) 队列

Mysql模块

关系型数据库(存储在硬盘上 mysql)
非关系型数据库(key-value数据库 存在内存上 mongodb)

mysql入门

1.下载安装

npm install mysql -S #下载安装
 -S --save 保存测试环境 
 cnpm i mysql -S #使用cnpm下载
  yarn add mysql -S #使用yarn下载

2.导入

const mysql = require('mysql'

3.使用 (mysql里面的方法是异步的

 //1.导入
  const mysql = require('mysql')
   //2.使用 
   //2.1 建立连接(新建一个连接对象) 同步代码块 
   const conn = mysql.createConnection({ 
   host:"localhost",
    port:"3307",
     user:"root",
      password:"root", 
      database:"db_user", 
      charset:"UTF8_GENERAL_CI" 
      })

//2.2 通过连接对象建立连接
 conn.connect(function(){
  console.log("连接成功");
   })
   //2.3 通过连接对象执行sql语句 查询语句返回的是一个数组 
   conn.query("select * from t_user",(err,data)=>{ 
   if(err) throw new Error('查询错误')
    console.log(data[0]); 
    //查询的内容返回值为一个数组 })
    //2.4 关闭连接 
    conn.end()

crud

 //1.导入 
 const mysql = require('mysql') 
 //2.使用 
 //2.1 建立连接(新建一个连接对象) 同步代码块
  const conn = mysql.createConnection({
   host:"localhost",
    port:"3307", user:"root",
     password:"root",
      database:"db_user",
       charset:"UTF8_GENERAL_CI" })
       //2.2 通过连接对象建立连接
        conn.connect(function(){
         console.log("连接成功"); })
         //2.3 通过连接对象执行sql语句 查询语句返回的是一个数组
          conn.query("select * from t_user",(err,data)=>{ 
          if(err) throw new Error('查询错误') 
          console.log(data); 
          //查询的内容返回值为一个数组 })
          //根据id查询 
          conn.query("select * from t_user where id=?",1,(err,data)=>{
           if(err) throw new Error('查询错误') 
           console.log(data[0]); 
           //查询的内容返回值为一个数组 })
           // 添加 增删改返回的是一个对象 
           conn.query("insert into t_user(username,password) values(?,?)", ['zhangsan','abc'],(err,data)=>{ 
           if(err) throw new Error('插入错误')
            console.log(data[0]); 
            //插入的内容返回的是一个对象 })
            // 删除 conn.query("delete from t_user where id=?",9,(err,data)=>{
             if(err) throw new Error('删除错误')
              console.log(data); })
              // 修改 
              conn.query("update t_user set username=?,password=? where id = ?",['王二 狗','abc',8],(err,data)=>{ 
              if(err) throw new Error('修改错误') 
              console.log(data); 
              })
//2.4 关闭连接 
conn.end()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值