node.js 模块的基本使用 以及导入导出的方法

2,149 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

创建web服务器

const http=require('http');
const server=http.createServer()
server.on('request',(req)=>{
    
    const url=req.url //客户端请求的url地址
    const method=req.method
    const str=`your request url is ${url},and method is ${method}`
    console.log(str);
})
server.listen(80,()=>{
    console.log('server running at http://127.0.0.1');
})

2.res响应对象,主要就是将内容响应给客户端,但要注意一点,如果是中文的会有乱码情况。所以需要加一行改变。之后要重启一下服务器

res.setHeader('Content-Type','text/html:charset=utf-8')
res.end(str)

模块化

什么是模块化

Node.js 模块机制采用了 Commonjs 规范,弥补了当前 JavaScript 开发大型应用没有标准的缺陷,类似于 Java 中的类文件,Python 中的 import 机制,Node.js 中可以通过 module.exports、require 来导出和引入一个模块.

在模块加载机制中,Node.js 采用了延迟加载的策略,只有在用到的情况下,系统模块才会被加载,加载完成后会放到 binding_cache 中。

把一个大文件拆成独立并互相依赖的小文件。 1.模块化的好处 提供复用性,可用性,按需加载。

模块主要分为:内置,自定义,第三方

2.加载模块,使用rquire()方法,需要注意的是,可以省略.js的后缀名 模块作用域,顾名思义就是访问有限制,外部无法访问内部变量

fork.js

const username='zs'
function sayHello(){
    console.log('aaa');
}
sayHello()
test.js

const custom=require('./fork')
console.log(custom);

通过打印module来查看模块的详细情况,通过module.exports将模块内的成员共享出去,一起使用。而require()方法就是导入共享的成员。 使用moudle.exports和exports方法结果都一样。

export 用于对外输出模块,可导出常量、函数、文件等,相当于定义了对外的接口,两种导出方式:

  • export: 使用 export 方式导出的,导入时要加上 {} 需预先知道要加载的变量名,在一个文件中可以使用多次。
  • export default: 为模块指定默认输出,这样加载时就不需要知道所加载的模块变量名,一个文件中仅可使用一次。
fork.js

console.log(module);
module.exports.username='zs';
module.exports.sayHello=function (){
    console.log('aaa');
}
demo.js
const custom=require('./fork')
console.log(custom);

案例:

exports.age='20'
module.exports={
    age:22,
    name:'xz'
}
//{ age: 22, name: 'xz' }

观察以上数据,我们可以猜猜看最后导出的内容是什么。 如果又exports和moudle.exports,我们最终导出的结果都是以moudle.exports为基准。

exports.age='20'
module.exports.name='zyy'
//{ age: 20 name:'zyy'}
exports={
 age:19,
 name:'zyy',
}
module.exports=exports
module.exports.job='仙女'
//{ age: 19 name:'zyy',job:'仙女'}

所以为了避免发生混乱,我们只使用其中一种就可以了。

CommonJs模块化规范:

  1. module变量就代表当前模块
  2. exports就是module.expotrs
  3. 加载模块就是module.expotrs属性,require()用于加载