Node.js基础

118 阅读2分钟

一、node介绍

1、node的作用

  • 脱离浏览器运行js
  • 编写后台API接口
  • webpack、npm均基于node运行
  • 中间层:服务器中负责io读写的中间层服务器

2、环境搭建与运行

  • 官网下载:nodejs.org/zh-cn/
  • 检查安装版本:node -v
  • 快速打开文件命令行窗口:shift+右键-》选择在此处打开powershell窗口;
  • 运行js文件命令:node index.js(文件名)
  • nodemon可以自动检测到目录中的文件更改时通过重新启动应用程序来调试基于node.js的应用程序。
yarn add nodemon --s

3、npm包管理

管理第三方模块、插件、库等;

  • 初始化:npm init
  • 安装:npm install xxx / npm i xxx
  • 删除:npm uninstall xxx/ npm un xxx
  • 安装镜像:npm install cnpm -g --registry=registry.npm.taobao.org

二、Node模块

1、全局模块

process 对象是一个全局变量,提供了有关当前 Node.js 进程的信息并对其进行控制。何时何地都能访问,无需引用。

  • process.env(环境变量)
  • process.argv(参数)

2、系统模块

需要require(),但不需要单独下载。

  • path 模块提供了一些实用工具,用于处理文件和目录的路径。可以使用以下方式访问它:
const path = require('path');

path.dirname:返回当前文件的目录路径。

console.log(path.dirname('/a/b/1.jpg'));//  “/a/b

path.resolve()

console.log(path.resolve('/nodeJS/a/b/c','../',"d")); //"/nodeJS/a/b/d"
//获取文件绝对路径
path.resolve(__dirname,'index.js')
  • fs 用于文件读写操作
const fs = require('fs');
//读取
fs.readFile('./a.txt',(err,data)=>{
    if(err){
        console.log(err);
    }else{
        console.log(data.toString());
    }
})
//修改
fs.writeFile('./a.txt','写入哈哈哈哈',(err)=>{
    if(err){
        console.log(err);
    }
})
//追加(更新)
fs.writeFile('./a.txt','写入哈哈哈哈1',{flag:'a'},(err)=>{
    if(err){
        console.log(err);
    }
})
  • http模块
const PORT=8888
const http = require('http');
const server=http.createServer((req, res) => { // 开启服务
    res.write('hello,world!'); // 返回给页面的值
    res.end(); 
})
server.listen(PORT, () => {
    console.log('Server started on http://localhost:' + PORT + ' and http://127.0.0.1:' + PORT);
});

3、自定义模块

require()自己封装的模块

  • exports exports只能使用.语法向外暴露内部变量。如:exports.xxx=xxx
exports.a=1
exports.b=1
  • module,批量导出 module.exports既可以通过点语法,也可以直接赋值一个对象 例 module.exports.xxx=xxx module.exports=xxx
module.exports={
    a:1,b:2
}
  • require 如果有路径,就去路径里面找; 没有就去node_modules里面找; 再去node的安装目录node_modules里面找;
let mod1=require("./module1")
console.log(mod1);

三、 node中的数据请求

http模块

  • get 获取数据,数据是放在url中进行传输。容量小

  • post 数据是放在body里进行传输

参考:www.imooc.com/video/20552

juejin.cn/post/684490…