nodejs基础知识

概念:

一个运行平台,内置了很多的模块可以使用

fs--文件系统模块

步骤:

  • 引入模块--require

读取:fs.readFile()

语法:

fs.readFile(path[,option],callback)

注意:

  • path:必填 文件路径
  • option:可选参数,编码格式 默认是utf-8
  • callback:必填 回调函数 ---有两个参数(错误信息,文件内容

写入:fs.writeFile()

语法:

fs.writeFile(path,value[,option],callback)

解决覆盖问题:

const fs=require('fs')
fs.writeFile('./文件.txt','天',{flag:'a'},function(err){
if (err) {
    console.log("写入失败");
}else{
    console.log("写入成功");
}
})


fs.appendFile('./文件.txt','123',function(){

})

path路径模块

path.join()--拼接路径,可以将多个路径片段拼接到一起

语法:

path.join(路径1,路径2,路径3)
const path=require('path')
const fs=require('fs')
let a='/bg/cw/w/w'
let b='w/w/v'
let pa=path.join(__dirname,'/文件.txt')
console.log(pa);

path.basename()---获取当前路径中的文件名

语法:

path.basename(路径,扩展名)
console.log(path.basename(pa,'.txt'));

path.extname()---获取当前路径中的文件的扩展名

console.log(path.extname(pa));

http模块

可以快速的创建一个web服务器

步骤:

  • 导入内置模块http

  • 创建web服务器

  • 监听request请求

  • 监听端口

const http=require('http')
const server=http.createServer()
server.on('request',function(req,res){
console.log('我被请求了');
})
server.listen('8080',function(){
    console.log('http://127.0.0.1:8080');
})

req, res

req---有关客户端的数据信息,请求对象

res----关于响应的信息,响应对象

req.url:请求路径

req.method:请求方式

res.end:响应页面

const http=require('http')const server=http.createServer()
server.on('request',function(req,res){ 
// 解决中文乱码的问题
res.setHeader('content-type','text/html;charset=utf-8')
res.end("张三")})s
erver.listen('8080',function(){    
console.log('http://127.0.0.1:8080/');
})

根据不同url显示不同的内容

  • 创建web服务器

  • 获取不同url,根据url的类型显示当前页面的内容

  • res.end()

  • 不正确:404 not Found

const http=require('http')
const server=http.createServer()
server.on('request',function(req,res){
res.setHeader('content-type','text/html;charset=utf-8')
var content=''
if (req.url==='/'||req.url==='index') {
    content='<h1>首页</h1>'
}else if(req.url==='/user'){
    content='<h1>用户</h1>'
}else{
    content='<h1>404  Not Found</h1>'
}
res.end(content)

    // 解决中文乱码的问题
// res.setHeader('content-type','text/html;charset=utf-8')
// res.end("张三")
})
server.listen('8080',function(){
    console.log('http://127.0.0.1:8080/');
})

模块化:

node中的功能都是模块式的,每一个单独js文件就是一个模块

模块分类:

内置模块(fs path http querystring)

自定义模块(你自己定义模块)

第三方模块(包)

优点:

  • 可以实现按需加载

  • 提高了代码的可维护性

  • 降低了代码之间的耦合性

  • 可读性强

引入模块:require

mudule:存放当前文件的相关信息

暴露成员:module.exports 或者 exports 两者不能同时使用,同时使用以module.exports暴露优先

a.js
var b=10
console.log(module);
module.exports.b=b
exports.b=b
console.log(module.exports===exports);

b,js
var a=require('./a')
var b=20
console.log(a.b);

分类:

安装方式的不同:全局包(所以项目都可以使用)和项目包(只有当前的项目可用)

按需导入:开发包和依赖包

需要使用npm安装再引入才可以使用的包:第三方的包(程序员可以自己写包,发布到第三方)

包的安装:npm install 包名 -D/ -g

包卸载:npm uninstall 包名、

包的规范:

  • 入口文件 index.js

  • package.json --包的配置

  • REAFME.md---包的说明文档

express

创建一个服务器

步骤:

  • 引入express模块

  • 创建express实例

  • 监听端口启动服务

监听请求分类:

语法:

app.请求方式(请求url路径,回调函数)

get请求:

app.get('/',(req,res)=>{
console.log(req.method);
})

post请求:

app.post('/',(req,res)=>{
console.log(req.method);
})

向客户端传递数据 res.send()

res.send({"name":"zhangsan"})

静态参数

url路径后面?拼接的数据

动态参数

在url路径中用冒号的方式绑定数据可以动态获取参

访问静态资源

express.static('public)

将静态的数据存放到publiic文件夹下,将文件夹注册

const exp=require('express')
const app=exp()
app.use(exp.static('public'))
app.listen("8080",function(){
console.log("http://127.0.0.1:8080");
})

路由

路由是一种映射关系,必须包含三部分:请求方式,请求路径,处理函数

app.get('/',function(){
    console.log(1);
})
app.post('/',()=>{})
app.put('/',()=>{})
app.delete('/',()=>{})

路由匹配规则:

匹配请求方式和路径,两者全部匹配就会调用后面的回调函数

路由前缀:

可以规定访问路由前使用什么前缀

app.use('/api',routher.routher)

路由的模块化:

//express。js
const exp=require('express')
const routher=require('./路由')
const app=exp()
app.use(routher.routher)

app.listen("8080",function(){
    console.log("http://127.0.0.1:8080");
})
//路由。js
const express=require("express")
const routher=express.Router()
routher.get('/',function(){
    console.log("get");
})
routher.post('/',(req,res)=>{
    console.log("post");
})
module.exports.routher=routher

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值