node.js 学习

文件的读取

 1 const fs = require("fs");
 2 const path = require("path");
 3 
 4  fs.appendFile("./node/1.txt","\n2222222222",(err) => {
 5      console.log("追加"+err);
 6  })
 7 
 8  fs.readFile("./node/1.txt","utf-8",function(err,data){
 9      if(err){
10          console.log(err.message);
11      }else{
12          console.log("读"+data);
13      }
14  })
15 
16  fs.writeFile("./node/1.txt","333",(err) => {
17      console.log("写"+err);
18  })
19 
20 fs.copyFile(path.join(__dirname,"/1.txt"),path.join(__dirname,"/2.txt"),(err) => {
21     if(err) return console.log(err.message)
22     console.log("拷贝成功")
23 })  
24 
25 fs.stat(path.join(__dirname,'/1.txt'),(err,data) => {
26     if(err) return console.log(err.message);
27     console.log(data.size);//读取文件大小
28     console.log(data.isFile());//是否是文件 
29 })

文件的读写操作都是异步,在回调函数中返回数据 ,所有执行的顺序并不固定,当同时进行读,追加操作时,数据会变的无法预测。

 

创建服务器

 1 const fs = require("fs")
 2 const path = require("path")
 3 
 4 require("http").createServer().on("request", (req, res) => {
 5     let data = requestFlie(req.url, res)
 6 }).listen(3000, "127.0.0.1", () => {
 7     console.log("http://127.0.0.1:3000 启动")
 8 })
 9 //由于fs.readFile()是异步操作,所以无法同步返回 读取的数据,只能通过传递参数 res ,调用res.end来返回数据并结束事件
10 function requestFlie(url, res) {
11     fs.readFile(path.join(__dirname, url), (err, data) => {
12         if (err) {
13             res.writeHeader(200, {"Content-Type":"text/html;charset=utf8"})
14             res.end("文件不存在")
15         }
16         res.end(data)
17     })
18 }

 使用express 框架创建服务器,响应 静态文件 ,使用路由分发请求

server.js 启动服务器

 1 const ex = require("express")
 2 const path = require("path")
 3 const app = ex()
 4 //自定义中间组件 获取post请求的数据
 5 app.use((req,res,next) => {
 6     let dataStr = []
 7     req.on("data",(chunk) => {
 8         dataStr.push(chunk)
 9     })
10     req.on("end",() => {
11       req.body = dataStr.join()
12       next()
13     })
14 })
15 
16 const router = require("./router.js")
17 app.use(ex.static(__dirname))
18 app.use(router)
19 
20 app.listen(3000,() => {
21     console.log("启动")
22 })

router.js 分配路由

 1 const ex = require("express")
 2 const router = ex.Router()
 3 const querystring = require('querystring')
 4 
 5 
 6 router.post("/pushData",(req,res) => {
 7     console.log(req.body);
 8     res.send(querystring.parse(req.body))
 9 })
10 module.exports = router

index.js 静态资源

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <form action="./pushData" method="post">
11         <p>账号: <input type="text" name="username"> </p>
12         <p>密码: <input type="password" name="password"> </p>
13         <input type="submit" value="提交">
14     </form>
15 </body>
16 </html>

在node.js中使用mysql

 1 const ex = require("express")
 2 const app = ex()
 3 
 4 const mysql = require("mysql")
 5 const connt = mysql.createConnection({
 6     "host": "localhost",
 7     "user": "root",
 8     "password": "123456",
 9     "database": "book"
10 
11 })
12 const sqlStr = "select * from user"
13 connt.query(sqlStr, (err, data) => {
14     if (err) return console.log("获取数据失败" + err.message)
15     console.log("获取数据成功" + data)
16 })
17 
18 app.listen(3000, () => {
19     console.log("启动")
20 })
// ------------------新增----------------------
// const user = { uname: '小黄', age: 12, gender: '男' }
// const sqlStr2 = 'insert into users set ?'
// conn.query(sqlStr2, user, (err, result) => {
//   if (err) return console.log('插入数据失败!' + err.message)
//   console.log(result)
// })

// -------------------修改-------------------------
// const user = { id: 2, uname: '小绿', age: 22 }
// const sqlStr3 = 'update users set ? where id=?'
// // 注意:在 执行 conn.query 的时候,如果sql语句中,包含了 多个 ? 占位符,则,
// // 第二个实参,必须传递一个数组,数组中的每一项,都要和 sql 语句中的 ? 对应上
// conn.query(sqlStr3, [user, user.id], (err, result) => {
//   if (err) return console.log('修改数据失败!' + err.message)
//   console.log(result)
// })

// ---------------删除---------------------
// const sqlStr4 = 'delete from users where id=?'
// conn.query(sqlStr4, 2, (err, result) => {
//   if (err) return console.log('删除失败!' + err.message)
//   console.log(result)
// })

 express框架获取post,get 参数

post参数 需要安装中间组件

npm i body-paser -S

注册body-parser中间件

1 const bodyParser = require('body-parser')
2 app.use(bodyParser.urlencoded({extended: true}))
3 app.use(bodyParser.json())

然后在回调函数中可以使用 req.body 或去post参数了

get对于 ?name=cs 这种可以 使用 req.query

对于/:name 这种使用 req.params

 

posted @ 2019-02-13 18:59  掬水捧月可会不可言  阅读(159)  评论(0编辑  收藏  举报