【菜狗学前端】Node 笔记

149 阅读4分钟

一 Node相关概念

(一) node是什么?

官方:Node.js是一个开源、跨平台的JavaScript运行时环境

Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境

(二) 为什么学习node?

前端开发的库都是以node包的形式进行管理,后面会学习大量的库

npm、yarn工具成为前端开发使用最多的工具

使用Node.js作为web服务器开发、中间件、代理服务器

服务端渲染,借助Node.js完成前后端渲染的同构应用

使用Node可以编写一些脚本工具

使用Electron来开发桌面应用程序,是需要使用Node

Node也可以开发API接口

(三) node环境中执行js文件的三种方式

第一种方式 找到对应的文件夹 输入cmd --> node 03(tab按键会自动补全)

第二种方式 在vscode找集成终端 node 03...(tab按键会自动补全) 把默认改为powershell 常用!

----安装 npm i -g nodemon 每次自动执行

----启动 nodemon 03... node 03..

第三种方式 通过code runner插件,安装过之后右上角出现小三角

(四) node环境中的全局变量

1.node环境里的 全局对象是global

在浏览器环境中 window是全局对象 globalThis 两个环境通用全局对象

PS:与浏览器中运行不同,声明的全局变量不挂载到global身上

console.log(global);
console.log(global == globalThis); //true
// 与浏览器中运行不同,声明的全局变量不挂载到global身上
var a = 1;
console.log(global.a); //undefined

2.__dirname 文件夹路径

console.log(__dirname);//d:\2402\第二阶段\Node\01-认识Node

3.__filename 文件路径

console.log(__filename);//d:\2402\第二阶段\Node\01-认识Node\04-node环境中的全局变量.js

4.process对象 node进程中的相关信息 了解

console.log(process);

5.立即执行定时器 宏任务

setTimeout setInterval
setImmediate
setImmediate(
    function (...args) {
        console.log(args);//[ 1, 2, 3 ]
    },
    1,
    2,
    3
)

二 模块化管理

(一) 模块

1)每一个js文件是一个模块

2)模块与模块之间互不影响

(二) CommonJs规范 exports--require

1.导出

-- a) exports.a = a

-- b) module.exports.a = a

-- c) module.exports = { a, b } 常用

2.导入

-- require("./a"); //得到对象

如:let a = require("./a.js");

3.省略文件名后缀时的查找机制

js --> json --> 文件夹下的index.js

(三) Esmodule规范 export--import

1.导出

a) export let a = 1;

b) let a = 1 export{a,b,c}

c) 整合 export * from '路径' 直接把路径文件中的所有东西导出去了

d) 整合 export default obj 如果一个文件中只有一个对象 可以采用默认的方式

2.导入

a)import {变量名} from '路径'

b)import {变量名 as 别名} from '路径'

a)import obj from '路径' (对应导出d)

3.注意

1)Esmodule规范不能在node环境中运行,需要在浏览器中运行(type="module")开启模块化处理

如:

且需要把环境跑起来??---用Open with Live Server

2)Esmodule规范没有查找机制,文件名需要补充完全

(四) 系统模块-http模块搭建服务器

// 使用原生node 搭配http模块 搭建了一个服务器
let http = require("http")

// 创建服务器
let server = http.createServer((req, res) => {
    console.log("前端网页打开,代码执行");
    console.log(res);
    res.write("<h1>hello node</h1>")
})
// 配置服务器端口号3000-8000
server.listen(3001, function () {
    console.log("后台服务器跑起来了");
})

// 需要监听服务器
server.on("request", () => {
    console.log("请求过来了");
})

三 包管理工具

(一) npm

1.npm相关命令

where npm 查看npm安装在哪

npm -v 检测版本

  1. 生成配置文件

npm init 生成配置文件 -- package.json(项目的配置文件)

npm init -y 直接生成默认配置文件(无需手动配置)

  1. 下载安装各种所需资源 install

    1. 添加版本号 @,就是安装指定版本
    2. npm i jquery@3.5.1
      
    3. 局部安装(默认安装最新版本)
    4. npm i jquery
      npm i vue
      npm install vue
      
    5. 全局安装 -g
    6. npm i vue -g
      

自动生成package.json,锁定依赖(包)版本,下载的第三方依赖会放在node_modules

  1. 生产依赖VS开发依赖

    1. 生产依赖:开发需要 上线的时候也需要
    2.   npm i jquery -S或npm i jquery --save
    3. 开发依赖:开发过程中项目所需要的依赖 项目上线不能用
    4.   npm i jquery -D或npm i jquery --save-dev

2.用nrm换源

作用:换源 默认下载的是国外 需要把下载切到国内

操作步骤:

  1. npm i nrm 安装完之后就代表有nrm这个工具
  2. nrm ls 利用这个工具去cmd里面可以查看下载源列表
  3. nrm use taobao (有些依赖taobao源是会有一些问题的还需要切换到官方源)

切换到官方源:nrm use npm

  1. npm i 重新安装依赖

(二) yarn

首先全局安装yarn 指令:npm i yarn -g

yarn 的相关命令

  1. yarn --v 检测是否安装成功 -- 常用
  2. yarn init 初始化,生成package.json -- 常用 相当于npm init -y
  3. yarn global add jquery 全局安装
  4. yarn global remove jquery 全局删除
  5. yarn add jquery 局部安装 -- 常用
  6. yarn add jquery --dev (相当于npm中的-D)
  7. yarn remove jquery 删除局部包文件
  8. yarn list 列出已经安装的包名 用的很少
  9. yarn info packageName 获取包的有关信息 几乎不用
  10. yarn 安装package.json中的所有依赖