index.js文件
// require是node内置的方法 const http = require('http') const server = http.createServer((req, res) => { res.write('hello world111222') res.end() }) // 设置端口号 server.listen(3000)命令行⇒ node index.js 打开localhost:3000即可访问 或者下载nodemon可以热重载,直接更新,不需要开关服务器 npm i nodemon -g ⇒ 全局安装nodemon
./home/index.js
require('./a') // 获取的是module.exports的对象 let P = require('./b') // 获取P对象里面的Person函数,并且实例化 let person = new P.Person() console.log('我是index') // 就可以使用实例对象的方法了 person.hobby()./home/b.js
console.log('模块b') let a = 10 class Person{ constructor() { this.name = 'tom' } hobby(){ console.log('swim') } } // 模块导出方法一 // module.exports = { // a, // Person // } // 模块导出方法二 exports.a = a exports.Person = Person命令行 ⇒ nodemon index.js 终端执行结果
创建node_modules 里面创建自定义文件,例如 mytest ./node_modules/mytest/index.js
require('./a') require('./b') module.exports = { a : 10, fn: () => { console.log('我是fn') } }./index.js
// 因为在node_modules里面,node会做解析,直接写mytest即可 // 或者 ./node_modules/mytest 也可以 let {a, fn} = require('mytest') console.log(a) fn()结果:
如果增加一个package.json,这是一个功能性描述文件 package.json
{ "name": "mytest", "version": "1.0", "main": "main.js" }当require(‘mytest’)的时候,它首先会解析package.json,然后找到main.js开始解析
tips:实际工作中,如果是我们自己写的模块,就会用方法一,如果是第三方调用的模块,就会放在node_modules里面
npm是在下载node的时候就给一并下载的,所以不需要额外下载 当我们需要下载某些好用的模块的时候,就可以通过指令下载
cd 当前项目文件
npm install jquery
npm i jquery 也一样,i是install的简写 通过npm下载的包会自动放在node_modules里面 每一个模块都有一个package.json文件,可以自定义创建,也可以通过指令创建 =>npm init可以对package进行设置,或者不设置,直接enter到底。最后生成一个package.json文件,里面有相关描述npm uninstall jquery ⇒ 删除该模块,一并删除package.json文件里面的相关描述当我们下载一些模块的时候,该模块信息会自动加入到package.json里面 npm i cookie npm i cookie --save npm i cookie -S 这三个命令都是同一个功能
当删除模块的时候,该模块信息会自动从package.json里面去除 npm i cookie --save-dev 或者 npm i cookie -D 模块信息会被写道devDependencies里面
dependencies 和 devDependencies的区别: 前者是运行依赖,不仅开发环境会用到,真实环境也需要被用到,例如: jquery,vue,react等 后者是开发依赖,只有在开发的时候会用到,真实运行环境不需要被用到,例如:less,sass
下载所有所需模块 为什么需要package.json? 当项目转移的时候,不需要把node_modules里面的模块一并转移 只需要转移其它部分,当转移之后
cd 当前项目文件npm i这样就会根据package.json里面的描述,下载对应的模块,可以减少转移项目的包裹容量,提高效率
**node_modules的特性:**当引入node_modules里面的文件时,会依次向上级目录查找node_modules文件,查看里面是不是有对应的文件名。最终会找到node 根目录里面的node_modules
npm i gulp -g vs npm i gulp 加不加-g的区别 如果这个工具是所有项目都要用到的,就加-g,如果只是当前项目需要用到,就不要加-g,如果加了-g,该工具就会被下载到node根目录里,当前例子就是下载到\nodejs\node_global\node_modules里面
向上箭头表示,当npm i 的时候,这个版本以上的版本都可以使用
内置模块如下增删改查 以下方法都要用到fs,所以导入fs模块
fs可以修改任何后缀名的文件
tips: a:追加写入。 w: 覆盖写入。 r: 读取
传参都是文件路径地址
fs.readdir('./newdir',(err, data) => { if(err){ throw err } console.log(data) })stat.isFile(): 判断是不是一个文件 stat.isDirectory(): 判断是不是一个目录
当资源过大,而用户的带宽不足以传输该资源,这个时候就要用到stream,stream可以把数据拆分成n个chunk来进行传输,每个chunk是64kb,虽然时间增加,但是不会占用许多带宽资源,提高了效率。 1.txt
hello worldstream.js
const fs = require('fs') let res = fs.createReadStream('1.txt') // res.on 是一个循环操作 res.on('data', chunk => { // hello world console.log(chunk.toString()) })创建一个65kb大小的文件,命名为‘65kb’
let buffer = Buffer.alloc(65*1024) console.log(buffer) fs.writeFile('65kb', buffer, err=> { if(err){ throw err } }) const fs = require('fs') // 用读取流处理65kb文件 let res = fs.createReadStream('65kb') let num = 0 // res.on 是一个循环操作 res.on('data', chunk => { num++ // 1 2 console.log(num) })65kb的文件,res.on执行了2次
const fs = require('fs') let rs = fs.createReadStream('1.txt') let ws = fs.createWriteStream('2.txt') rs.pipe(ws) createReadStream,read流来来读文件createWriteStream,write流来写文件pipe,通过管道写入到ws文件里