node.js快速入门教程

Nodejs

  1. 熟悉Nodejs有哪些内置模块
  2. Express (Nodejs的框架) 完成简单API的开发
  3. 熟悉Mysql操作
  4. 使用Express + mysql (登录功能。。。)

一. Nodejs简介

Nodejs是一个基于chromeV8 引擎开发的运行时(环境)

文件的操作(数据库)

二、Nodejs安装

64位的Nodejs,下一步下一步。。。。

如果有的童鞋安装上去之后 还是不能使用nodejs。 (将node.exe 所在的文件目录,放到系统环境变量中即可。)

环境变量:

window环境下 有一个变量值,path上(都是一些路径)。window执行程序(exe,msi,bat,....cmd......, 这些程序都是可以在window进行执行的。)

path放的就是 可执行性文件 所在的目录。()

比如: ping www.baidu.com 查看当前电脑是否和百度网站能够进行连接。ping 192.168.1.222。

​ ipconfig -> 192.168.20.2

ping ipconfig -> 最终执行的肯定是一个具体的 文件(可执行性文件或者脚本文件) ping->ping.exe

  • 检验Nodejs是否安装完毕

    node -v

    npm -v

三、模块化

  • ES6的模块化

    import 进行导入

    export 进行导出

  • nodejs的模块化(commonjs规范)

    require函数进行导入

    module.exports = {} 进行导出

四、Nodejs的内置模块

4.1 path模块

  • path.basename

    console.log(path.basename("/foo/aa/bb/a.html"))
    
  • path.join()

    console.log(path.join("/aaa/bbb", ".."))  // /aaa
    
  • path.resolve

    console.log(path.resolve(__dirname, "dist"))
    
  • path.sep...

4.2 fs模块

​ 文件系统模块 json文件 (json文件不能进行注册,"")

  • fs.readFile

    fs.readFile("./a.json", {encoding:"utf-8"}, (err, data)=> {
     console.log(data)
    })
    

    io的问题。比较删除处理IO操作。input output C++的线程池进行处理的。Nodejs不擅长对大数据的处理。

  • fs.readFileSync

    const data = fs.readFileSync("./a.json")
    console.log(data)
    
  • fs.writeFile

    将字符串写入文件中

    const fs = require("fs")
    fs.writeFile("./a.txt", "hellworld", ()=> {
     console.log("写入成功")
    })
    
  • fs.writeFileSync

    将字符串同步写入到文件中

    const fs = require("fs")
    fs.writeFileSync("./b.txt")
    
  • fs.appenFile

    将字符串内容追加到文件中去

    const fs = require("fs")
    fs.appendFile("./a.txt", "字符串内容", ()=> {})
    

    和其他的都类似 有fs.appendFileSync 同步追加到文件中去。

4.3 querystring模块

  • parse模块

    const qs = require("querystring")
    qs.parse("page=1&pageSize=10")
    

4.4 http模块

​ 网络服务器 使用http模块就可以创建一个http服务器。

  • 基础代码

    const http = require("http")
    
    const server = http.createServer((req, res)=> {
        res.setHeader("Content-Type", "text/html;charset=utf-8")
        res.end("这是:123")
    })
    
    
    server.listen(5000, ()=> {
     console.log("服务器创建成功")
    })
    
  • 加强版代码

    http://127.0.0.1:3000/api/getStudent

    在浏览器中能不能默认进行post请求

  • 完成get接口

    const http = require("http")
    var arr = [
        {
     name: '小王',
     score: 100
        }
    ]
    const server = http.createServer((req, res)=> {
     // 设置cors 允许客户端进行跨域 
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
        res.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
        res.setHeader("X-Powered-By",' 3.2.1')
     
     if(req.url === "/api/getStudent" && req.method === "GET") {
            res.end(JSON.stringify(arr)) // 
        }
    })
    
    server.listen(5000, ()=> {
     console.log("监听成功")
    })
    
  • 完成post接口

    const http = require("http")
    const qs = require("querystring")
    var arr = [
        {
     name: '小王',
     score: 100
        }
    ]
    const server = http.createServer((req, res)=> {
     // 设置cors 允许客户端进行跨域 
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
        res.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
        res.setHeader("X-Powered-By",' 3.2.1')
     
     if(req.url === "/api/getStudent" && req.method === "GET") {
            res.end(JSON.stringify(arr)) // 
        }else if(req.url === "/api/addStudent" && req.method === "POST") {
     // 需要先拿到post请求的数据
     var post = ""
            req.on("data", (chunk)=> {
                post += chunk
            })
            req.on('end', ()=> {
     const obj = qs.parse(post)
                arr.push({
     name: obj.name,
     score: obj.score
                })
     
                res.end("添加成功")
            })
        }
    })
    
    server.listen(5000, ()=> {
     console.log("监听成功")
    })
    

    4.5 第三方模块

    要么 是你自己写的模块 要是是别人写的模块。

    npm 全球最大的第三方模块网站。

    nodejs安装过后,自带npm命令,咱们可以使用npm安装下载 相应的第三方模块。

    • npm工具的使用

      npm init -y 初始化工程 完成初始化之后,就会在项目目录中生成一个package.json 文件。

    • npm install 包名(模块名称) --save

      npm install node-spider-core --save
      

    ​ 下载完成之后 会在项目目录中生成一个文件目录 node_modules

    ​ 我安装的时候 会很慢

    ​ 是因为你安装的时候 去哪一个网站下载呢。npmjs.orj 网站下载,这个网站是一个国外网站。可以将npm的镜像源改成 国内的地址。 (淘宝镜像源)

    ​ npm config set registry https://registry.npm.taobao.org

    ​ npm config set registry https://registry.npmjs.org/

    ​ 配置 设置 仓库(镜像源)

    • 使用第三方模块

      const NodeCache = require( "node-spider-core" );
      
      // 这样就可以使用这个模块里面的方法或者是属性了
      

五、Express模块(在Nodejs基础上进行封装的)

Nodejs框架 (Express、Koa、Egg等等)

  • 使用express创建接口(getStudent, addStudent)

    const express = require("express")
    
    const app = express();
    var arr = [
        {
     name:"xiaowang",
     age: 20
        }
    ]
    
    // 中间件处理
    app.use(express.urlencoded({extended: false}))
    
    app.get("/", (req, res)=> {
        res.send("helloworld")
    })
    
    app.get("/api/getStudent", (req, res)=> {
        res.send(arr)
    })
    
    app.post("/api/addStudent", (req, res)=> {
     // 1.拿到数据
     console.log(req.body) // 
     // 2.添加到数组中
        arr.push({
     name: req.body.name,
     age: req.body.age
        })
        res.send("添加成功")
    })
    
    app.listen(5000, => {
     console.log("监听成功")
    })
    
  • 使用Express 前后端不分离开发

    后端不分离开发,就是将html代码数据都放到了后台,主要是后端人员去开发。

  • Router路由

    //将app.get() 这种代码放置router/api.js
    // 使用module.exports = router
    
    // index.js 中使用
    
    app.use("/api", apiRouter)
    
    
  • Express 为咱们提供了一个创建项目的工具。

    // npm install -g express-generator 全局安装Express工具 global
    

    安装之后即可使用express工具创建工程

    // express 工程名称
    

    package.json 文件中的

    ​ dependencies: 所有的依赖包 (要下载所有的依赖包 使用npm install 即可安装,一定要切换到工程目录)

    ​ 之前都是node + 执行js文件

    启动项目: 查看 package.json 文件中的scripts。

    注意事项

    ​ 1): 要切换到工程目录

    ​ cd myprh888

    1. : 使用安装命令 安装依赖包

      npm install;会根据package.json 文件中的 dependencies,安装完毕之后 就会生成 node_modules文件夹。这个文件夹中是所有的依赖包。

     3) 启动项目
    
        使用npm 命令。有什么命令 需要查询package.json文件中的scripts。 默认有start 命令,那么咱们就可以使用 npm run start.您也可以自己定义命令
    
    ### 5.1 Express项目文件结构说明
    
  • bin

    • www // 这是启动js文件。
  • node_modules // 这是所有的依赖包

  • public // 公共的文件夹 (静态资源)

  • routes // 匹配路径 对请求进行响应的

  • views // 是html资源

  • app.js // 项目的入口js文件

  • package.json // 项目的依赖包管理文件

当项目进行开发的时候 ,需要使用Nodejs进行模拟接口。给前端提供接口服务。

5.2 使用Express完成CRUD接口

待定!!

5.3 使用Express完成登录接口的实现

​ 登录接口

​ 维持登录状态。因为http请求没有状态,一旦请求,返回结果,http的请求消亡。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值