Nodejs
- 熟悉Nodejs有哪些内置模块
- Express (Nodejs的框架) 完成简单API的开发
- 熟悉Mysql操作
- 使用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
-
: 使用安装命令 安装依赖包
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的请求消亡。