一文带你走进node.js

node.js的模块化

        一、内置模块(fs, path, http)

        二、自定义模块

        三、第三方模块

模块作用域:默认情况下,在模块內定义的变量无法被模块以外所访问,这样避免了模块变量之间相互污染。

module

        每个模块都有一个dodule对象,而已通过module.exports 去暴露自己,外界可以用require接收所暴露的

exports和mpdule.exports的使用误区

        时刻谨记,require()模块时,得到的永远是module.exports指向的对象

a.js

module.export = {

    userName: '张三',

    age() {
    
        console.log(23)
    }
}

b.js

const a = requre('./a')

console.log(a)   //{userName: '张三',age}

CommonJS规定:


1.每个模块内部,module 量代表当前模块

2.module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口


3.加载某模块,其实是加载该模块的 module.exports 属性require0 方法用于加载模块.

node.js的内置模块

fs

        fs.reFile(路径,可选参数-编码格式,回掉函数)

        fs.writeFile(路径,写入的内容,可选参数-编码格式,回掉函数)

const fs = require('fs')

fs.readFile(path,'utf-8',(err, data)=>{
    if(err){
        return console.log('读取文件失败')
    }
})


fs.writeFile(path, '写入文件的内容', 'utf-8', (err)=>{
    if(err){
        return console.log('写入文件失败')
    }
    
})

path

        path.join (路径,路径 ...)  参数可以多个路径参数    //将多个路径拼接起来

        path.basename(路径, 文件名后缀) 可以获取一段路径最后的名字

        path.extname(路径) 获取一段路径的后缀

const path = require('path')

cosnt pathStr = path.join('/a', '/b/c', './', '/d', '/e')

console.log(pathstr)   //pathStr='/a/b/d/e'  拼接路径的时候也可以抵消掉

const fpath = '/a/b/c/index.html'

path.basename(fpath, '.html')   //返回值是 index

path.extname(fpath)  //返回值是 .html

http(创建一个基础的服务器)

const http = require('http')

//创建服务器

const server = http.creatServe();

//绑定request

server.on('request', (req, res)=>{

//可以拿到请求的url

    const url = req.url  
 
//可以拿到请求的方法

    const method = req.method  
//返回给服务器的内容

    let str = '这是需要返回的内容'
    
//正常返回中文会产生乱码


// 解决返回中文乱码
  res.setHeader('Content-Type', 'text/html; charset=utf-8') 

    res.end(str)

})

//启动服务

server.listen(80,()=>{
    console.log('服务启动成功')
})

发布自己的npm包

        1.登陆账号   npm login   执行命令后依次输入用户名 , 密码, 邮箱后,就可登录

        2.将终端切换到包的根目录   npm publish

        

删除自己的包

npm unpublish 只能删除72小时以内发布的包--------删除的包在24小时內不允许再发布

模块的加载机制

        1.首先从缓存中加载

        2.内置模块加载优先级最高

        3.require()加载自定义模块的时候必须以'./'或者'../'开头的路径标识符,不然node会把它当做内置模块或者是第三方模块进行加载。

用require引入的时候如果没有写文件名,那node.js会按顺序分别尝试加载文件

顺序:.js>.json>.node     都没找到就终端报错

第三方加载顺序

Express创建服务器

//导入express
    
const express = require('express')

//创建express服务器

const app = express()

//启动服务器

app.listen(80, (err)=>{
    if(err){
        return console.log('启动失败')
    }

    console.log('启动成功')

})

express.static()  托管静态资源

app.use(express.static(指定目录) )

nodemon 

不需要重启

中间件

//第一个全局中间件
 app.use((req, res, next)=>{
    next()
})

//第二个中间件

app.use((req, res, next)=>{
    next()
})

//定义一个路由

app.get('/user'(req, res)=>{
    
})

中间件的注意事项:

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值