node项目开发的基础知识

node工具的安装

可以通过百度node进行安装
node -v检测安装的版本号

node自动启动工具 supervisor

第一步 进行安装 npm i -g supervisor
第二步 执行代码 supervisor app.js
第三步 如果显示不是内部命令vscode关闭再打开

创建实例

var http = require(‘http’)
http.createServer(function(req,res)=>{
// 设置响应头
res.writeHead(200,{‘Content-Type’:‘text/plain’})
// 显示在页面中的数据
res.end(‘hello word’)
// 设置端口号8000
}).listen(8000)

给浏览器进行响应

var http = require(‘http’)
http.createServer(function(req,res)=>{
// 设置响应头
res.writeHead(200,{‘Content-Type’:‘text/plain’})
// 显示在页面中的数据
res.write(‘this is Node’)
// 结束响应
res.end()
// 设置端口号8000
}).listen(8000)

设置响应头 解决中文乱码的问题

var http = require(‘http’)
http.createServer(function(req,res)=>{
// 设置响应头
res.writeHead(200,{‘Content-Type’:‘text/html;charset=“utf-8”’})
res.write(‘你好,node.js’)
// 显示在页面中的数据
res.write(‘this is Node’)
// 结束响应
res.end()
// 设置端口号8000
}).listen(8000)

URL解析

url.parse() 解析url地址
url.format() 是url.parse的逆向操作
url.resolve(from,to) 添加或者替换地址

// 获取get参数 url.parse解析出了路径地址是一个对象
let params = url.parse(‘https://www.baidu.com?age=12’,true).query
console.log(params.age) // 12

关于fs内置模块的使用

  1. fs.stat 检测是文件还是目录
    fs.stat(‘./html’,(err,data)=>{
    if(err){console.log(err) return }
    console.log(data.isFile()) // 如果是文件为true否false
    console.log(data.isDirectory())目录为true否false
    })

  2. fs.mkdir 创建目录
    fs.mkdir(‘./css’,(err)=>{
    if(err){console.log(err) return }
    console.log(‘创建成功’)
    })

  3. fs.writeFile 创建文件
    fs.weiteFile(‘./index.txt’,‘向文件中追加的内容’,(err)=>{
    if(err){console.log(err) return }
    console.log(‘创建成功’)
    })

  4. fs.appendFile 追加文件
    fs.appendFile(‘./css/base.css’,‘body{color:‘red’}’,err=>{
    if(err){console.log(err) return }
    console.log(‘body为追加的内容’)
    })

  5. fs.readFile 读取文件
    fs.readFile(‘./index.html’,(err,data)=>{
    if(err){console.log(err) return }
    // 这里的data是buffer格式需要转化为字符串
    const strData = data.toString()
    console.log(strData)
    })

  6. fs.readdir 读取目录
    fs.readdir(‘./html’,(err,data)=>{
    if(err){console.log(err) return }
    console.log(data)
    })

  7. fs.rename 重命名
    fs.rename(‘./css/index.css’, ‘./css/base.css’,(err)=>{
    if(err){console.log(err) return }
    console.log(‘重命名成功’)
    })
    fs.rename(‘./css/index.css’, ‘./html/index.css’,(err)=>{
    if(err){console.log(err) return }
    console.log(‘移动文件成功’)
    })

  8. fs.rmdir 删除目录
    fs.remdir(‘./html’,(err)=>{
    if(err){console.log(err) return }
    console.log(‘删除成功’)
    })

  9. fs.unlink 删除文件
    fs.remdir(‘./html/index.css’,(err)=>{
    if(err){console.log(err) return }
    console.log(‘删除成功’)
    })

node模块的分类

第一类 node内置模块:fs path url http等
第二类 文件模块也就是我们编写的js文件通过require进行导入的文件。
模块的导出方式按需导出exports和默认导出modules.exports两种方式。
案例:
exports.get = ()=>{console.log(‘方法一’)}
exports.post = ()=>{console.log(‘方法二’)}
module.exports = {name:‘zs’,age:12}

fs中的管道流

// 读取数据流
const fs = require(‘fs’)
var readStream = createReadStream(‘./html/index.txt’)
var count = 0
var str = ‘’
readStream.on(‘data’,(data)=>{ // 不断的读取数据
str+=data
count++
})
readStream.on(‘end’,()=>{ // 读取数据结束
console.log(str)
console.log(count)
})
readStream.on(‘error’,()=>{ // 读取数据结束
console.log(err)
})

// 写入数据流
var fs = require(‘fs’)
const data = ‘我是从数据库获取的数据 我要保存起来’
wrterStream = fs.createWriteStream(‘./html/index.txt’)
wrterStream.write(data,‘UTF8’) // 使用utf8写入数据
wrterStream.end()
wrterStream.on(‘finish’,function(){
console.log(‘写入完成’)
})
wrterStream.on(‘error’,function(){
console.log(error)
})

// 将可读流写入可写流
var fs = require(‘fs’)
var readerStream = fs.createReadStream(‘input.txt’)
var writerStream = fs.createWriteStream(‘output.txt’)
readerStream.pipe(writerStream)
console.log(‘程序执行完毕’)

关于路由

const http = require(‘http’)
const url = require(‘url’)
const path = require(‘path’)
http.createServer(function(req,res){
// 获取地址
let pathname = url.parse(req.url,true).pathname;
pathname = pathname==‘/’?‘/index.html’:pathname
let extname = path.extname(patname) 获后缀名
if(!pathname!=‘/favicon.ico’){
fs.readFile(‘./static’+pathname,(err,data)=>{
if(err){
res.writeHead(404,{‘Content- Type’:‘text/html;charset=“utf-8”’})
res.end(‘404页面不存在’)
}
// 根据传递进来的方法 获取content-type类型
let mime = common.getFileMime(extname)
res.writeHead(200,{‘Content-Type’:‘’+mime+‘;charset=“utf-8”’})
res.end(data)
})
}
})

getFileMime(extname){
var data = fs.readFileSync(‘./data.mine.json’) 同步
let mimeObj = JSON.parse(data.toString())
return mimeObj[extname]
}
mime.json = {‘.gif’:“audio/x-aiff”,“.html”:“text/html”}

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值