node.js学习P3-P10

P3 npm package.json(package解读+npm工具+换镜像源)

一个package.json文件可以的作用

  • 作为一个描述文件,描述了你的项目依赖哪些包 ,用来干什么的
  • 允许我们使用“语义版本规则”,指明你项目依赖的版本
  • 让你的构建更好的与其他人共享

version三段式(1.0.0)

1-主版本重大更新
0-次版本号,功能的更新,编译宏
0-修订号,修个bug

npm init 创建一个package,json输入,初始化一个新的npm项目
在这里插入图片描述

main是入口文件,用包时main会去找入口
这四个和模块化有关系

scripts可以执行命令(用npm run 里面的参数)
repository资料显示到官网

npm install 包(简写npm i 包)安装一个或一组想要的包,并在当前目录存放一个node-modules

npm安装详细版本在后面加一个@(npm install vue@2.2.6)

dependences生产环境需要的依赖,显示你下载的版本

  1. npm install vue --save老版本5.4之前放入dependences(现在高版本自动加)

  2. npm install vue --save-dev或者简写npm install vue-D
    增加devDependences(开发的依赖)

  3. 还有一个peerDependences,不能凭空运行

npm -s和-d区别

"dependencies"表示开发和上线都需要的第三方包,用-S
"devdependencies"表示仅在开发阶段需要的第三方包,用-D
npm config list 查错很好用用于列出所有的 npm 配置信息。执行该命令可以查看当前系统和用户级别的所有 npm 配置信息,以及当前项目的配置信息(如果在项目目录下执行该命令)

npm get registry 用于获取当前 npm 配置中的 registry 配置项的值。registry 配置项用于指定 npm 包的下载地址,如果未指定,则默认使用 npm 官方的包注册表地址

npm set registrynpm config set registry 命令,将 registry 配置项的值修改为指定的 地址
在这里插入图片描述
npm i xmzs -g方便切换源写的工具包(好方便啊)
在这里插入图片描述

我不是很懂,先记着吧
原文地址http://t.csdnimg.cn/ExHnr
(nodejs第三章)

P4 npm install(install原理:找npmrc+索引记录)

有复用模块的是非理想状态

在这里插入图片描述
config找好多层npmrc

package-lock.json 的作用

这个可以锁定版本记录依赖树详细信息

  • version 该参数指定了当前包的版本号

  • resolved 该参数指定了当前包的下载地址

  • integrity 用于验证包的完整性

  • dev 该参数指定了当前包是一个开发依赖包

  • bin 该参数指定了当前包中可执行文件的路径和名称

  • engines 该参数指定了当前包所依赖的Node.js版本范围

    这个通过 name + version + integrity 信息生成一个唯一的key,
    这个key能找到对应的index-v5 下的缓存记录 也就是npm cache 文件夹下的

原文http://t.csdnimg.cn/taQnX
(nodejs第四章)

P4 npm run原理(查找vite+npm生命周期)

在这里插入图片描述
查找规则是:

  • 先从当前项目的node_modules/.bin去查找可执行命令vite
  • 如果没找到就去全局的node_modules 去找可执行命令vite(全局环境配置)
  • 如果还没找到就去环境变量查找
  • 再找不到就进行报错

产生三个vite命令兼容各个平台

在app下面新建一个index.js的文件并保存–> cmd /app: node index.js

npm 生命周期

在这里插入图片描述
执行 npm run dev 命令的时候
predev 会自动执行 他的生命周期是在dev之前执行,
然后执行dev命令,
再然后执行postdev,
也就是dev之后执行

原文http://t.csdnimg.cn/VmXhB
(nodejs第五章)

P6 npx(查找全局安装+)

npx 是命令行工具,允许用户在不安装全局包的情况下,运行已安装在本地项目中的包或者远程仓库中的包。

npm ls -g查找全局安装了哪些可执行文件,不加-g就是当前项目

npx

  1. 避免全局安装:npx允许你执行npm package,而不需要你先全局安装它。
  2. 总是使用最新版本:如果你没有在本地安装相应的npm package,npx会从npm的package仓库中下载并使用最新版
  3. 执行任意npm包:npx不仅可以执行在package.json的scripts部分定义的命令,还可以执行任何npm package。
  4. 执行GitHub gist:npx甚至可以执行GitHub gist或者其他公开的JavaScript文件。

原文http://t.csdnimg.cn/nrJCn
(nodejs第六章)

P7 如何发布npm包(登录官网+发布)

  1. 准备npm adduser
    去npm账号注册或者点跳出的网址

要用npm官方的源,如果不是就mmp use切换一下
更改配置package.json内容
发包name不能一样的

  1. 发布npm publish

原文http://t.csdnimg.cn/H4zsF
(nodejs第七章)

P8 搭建npm私服!?

防止别人把包删了你用不了,放私服可以不同步删除而是保留版本

好处

  • 离线使用,你可以将npm私服部署到内网集群,这样离线也可以访问私有的包。
  • 提高包的安全性,使用私有的npm仓库可以更好的管理你的包,避免在使用公共的npm包的时候出现漏洞。
  • 提高包的下载速度,使用私有 npm 仓库,你可以将经常使用的 npm 包缓存到本地,从而显著提高包的下载速度

https://verdaccio.org/zh-CN/

安装npm install verdaccio -g在cmd上(?)
直接运行verdaccio就行

在这里插入图片描述
第二个可以自定义端口号5000改
第三个指定配文件

更改端口号后打开网址
在这里插入图片描述
把上面的输入vscode终端
npm adduser --registry http://localhost:9999/创建或
npm login --registry http://localhost:9999/登陆或
npm publish --registry http://localhost:9999/发布

密码打不上创建不来账号,很牛逼,我不会搞,先放着吧,反正也不发包

原文http://t.csdnimg.cn/sBQlV
(nodejs第八章)

P9 引入导出模块化!(CommonJS/esm+解构+起别名+源码解析)

Nodejs 模块化规范遵循两套一 套CommonJS规范另一套esm规范

CommonJS规范

通过npm init -y生成package.json
在这里插入图片描述
有type把type指定为commonjs

commonjs的引入是require

require引入(5种方法)
  1. 引入自己编写的模块 ./ …/ 等
    require(‘./test.js’)

  2. 支持引入第三方模块express md5 koa 等
    require('md5’)
    // md5是加密,正常情况下,它的结果是一个 长度为 32位 的 16进制 的 字符串。

    在app下面新建一个index.js的文件并保存 node index.js

  3. 支持引入nodejs自带内置模块例如 http os fs child_process 等nodejs内置模块

    const fs = require(‘node:fs’);
    // 导入核心模块,高版本需要写’node:fs’(但没有强制要求,方便区分),低版本直接fs

  4. 支持引入addon C++扩展模块 .node文件

  5. 支持引入json文件

导出模块exports 和 module.exports
module.exports = {hello: function() {console.log('Hello, world!');}
};

//const { name, age } = node;(es6的结构赋值)

如果不想导出对象直接导出值

module.exports = 123

ES module规范

把type改成module

esm的引入是import

import fs from 'node:fs'

如果要引入json文件需要特殊处理 需要增加断言并且指定类型json node低版本不支持

import data from './data.json' assert { type: "json" };
console.log(data);

加载模块的整体对象(预览模式)

import * as all from 'xxx.js'

在这里插入图片描述
重名的时候可以起别名
在这里插入图片描述
esm不支持引入json文件
虽然可以强行支持(node18版本以上)
在这里插入图片描述

Cjs 和 ESM 的区别(面试题)

  1. Cjs是基于运行时的同步加载(放里面),esm是基于编译时的异步加载(import一般只能放最上面)
    //import非要参杂在逻辑里面使用import函数模式
    在这里插入图片描述

  2. Cjs是可以修改值的,esm值并且不可修改(可读的)

  3. Cjs不可以tree shaking,esm支持tree shaking

  4. commonjs中顶层的this指向这个模块本身,而ES6中顶层this指向undefined

    源码解析懒得看了嘻嘻
    原文链接http://t.csdnimg.cn/vyQds
    (nodejs第九章)

P10 全局变量(global全局+api绝对路径)

global+globalThis

  1. node中没有window DOM和BOM
    在nodejs中使用global定义全局变量,定义的变量,可以在引入的文件中也可以访问到该变量
    (要注意先后顺序)

  2. globalThis全局变量,
    在nodejs环境会自动切换成global ,
    浏览器环境自动切换window非常方便

ECMAscriptAPI

ECMAscriptAPI里的api基本都可以用

nodejs内置全局api

  1. __dirname
    当前模块的所在目录的绝对路径
  2. __filename
    当前模块文件的绝对路径,包括文件名和文件扩展名
  3. process(处理进程)
  • process.argv: 这是一个包含命令行参数的数组。第一个元素是Node.js的执行路径,第二个元素是当前执行的JavaScript文件的路径,之后的元素是传递给脚本的命令行参数。

  • process.env: 这是一个包含当前环境变量的对象。您可以通过process.env访问并操作环境变量。

  • process.cwd(): 这个方法返回当前工作目录的路径。

  • process.on(event, listener): 用于注册事件监听器。您可以使用process.on监听诸如exit、uncaughtException等事件,并在事件发生时执行相应的回调函数。
    在这里插入图片描述

  • process.exit([code]): 用于退出当前的Node.js进程。您可以提供一个可选的退出码作为参数。

  • 在这里插入图片描述

  • process.pid: 这个属性返回当前进程的PID(进程ID)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java绩效考核系统源码 springboot员工绩效考核系统源码

Java绩效考核系统源码 springboot员工绩效考核系统源码-009 源码下载地址:https://download.csdn.net/download/xiaohua1992/89352195 项目介绍 本系统的功能分为管理员和员工两个角色 管理员的功能有: (1)个人中心管理功能&a…

一文搞定cuda版本、显卡驱动及多CUDA版本管理

安装cuda是每个AI从业人员必经之路。网上关于cuda、显卡驱动已经相关命令很多都解释不清楚,于是本文梳理一下,既方便自己记忆,也方便小白学习。 CUDA 首先,CUDA版本,一般指cuda-toolkit,即cuda开发工具包…

XShell免费版的安装配置

官网下载 https://www.xshell.com/zh/free-for-home-school/ 下载地址 通过邮箱验证 新建会话 通过ssh登录树莓派 填写主机IP 点击用户身份验证 成功连接

高项案例分析知识点总结

文章目录 纠错题计算题进度估算成本管理立项管理版本管理组合管理知识产权信息技术计算题运筹学 纠错题 人:人员经验、能力、数量、缺少培训;自己一个人完成需求和计划不正确流程:先做什么,后做什么,流程是否正确。是…

c++ (命名空间 字符串)

思维导图&#xff1a; 定义自己得命名空间myspace,在myspace中定义string类型变量s1,再定义一个函数完成字符串逆置 #include <iostream> #include <cstring> //定义自己得命名空间myspace,在myspace中定义string类型变量s1,再定义一个函数完成字符串逆置 using n…

抽屉网关停,Digg类网站退出互联网舞台

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 别人我不清楚&#xff0c;至少在松松我心中&#xff1a;抽屉网是世界著名的网站&#xff0c;而近期抽屉新热榜突然宣布关站了&#xff0c;我内心充满遗憾。因为抽屉网站收集的内容&#xff0c;让我看到了更大的世界…

【学习记录】服务器转发使用tensorboard

场景 代码在服务器上运行&#xff0c;想使用tensorboard查看训练的过程。 但是服务器上不能直接访问地址&#xff0c;所以要转发端口到本地&#xff0c;从而在本地网页中能够打开tensorboard。 参考&#xff1a;https://zhuanlan.zhihu.com/p/680596384 这时我们需要建立本地…

C++ 函数模板与模板函数

一 代码重用技术 函数 类与对象 继承与派生 多态&#xff08;函数重载、运算符重载、虚函数、纯虚函数与抽象类&#xff09; 泛型程序设计 通用的代码需要补受数据类型的影响&#xff0c;并且可以自动适应数据类型的变化&#xff0c;这种程序设计类型称为泛型程序设计。 二 模…

Logstash笔记

目录​​​​​​​ 一、简介 二、单个输入和输出插件 三、多个输入和输出插件 四、pipeline结构 五、队列和数据弹性 六、内存队列 七、持久化队列 八、死信队列 (DLQ) 九、输入插件 1)、beats 2)、dead_letter_queue 3)、elasticsearch 4)、file 5)、redis 十、…

字符串和字符串函数(1)

前言&#xff1a; 字符串在C语言中比较特别&#xff0c;没有单另的字符串类型&#xff0c;想要初始化字符串必须用字符变量的数组初始化&#xff0c;但是在C语言标准库函数中提供了大量能对字符串进行修改的函数&#xff0c;比如说可以实现字符串的的拷贝&#xff0c;字符串的追…

经常碰到的20个等待事件

经常碰到的20个等待事件 oracle等待事件简介 DBA团队维护的部分应用运行在oracle数据库平台&#xff0c;为及时了解数据库的运行情况&#xff0c;需要建立涵盖各个维度的监控体系&#xff0c;包括实例状态、空间使用率、ORA错误等数十项监控指标。这其中有一个有效判断数据库…

Nodejs+Websocket+uniapp完成聊天

前言 最近想做一个聊天&#xff0c;但是网上的很多都是不能实现的&#xff0c;要么就是缺少代码片段很难实现websocket的链接&#xff0c;更别说聊天了。自己研究了一番之后实现了这个功能。值得注意的是&#xff0c;我想在小程序中使用socket.io&#xff0c;不好使&#xff0…

从0.1nm到1mm:显微测量仪在抛光至粗糙表面测量中的技术突破

显微测量仪是纳米级精度的表面粗糙度测量技术。它利用光学、电子或机械原理对微小尺寸或表面特征进行测量&#xff0c;能够提供纳米级甚至更高级别的测量精度&#xff0c;这对于许多科学和工业应用至关重要。 在抛光至粗糙表面测量中&#xff0c;显微测量仪器具有从0.1nm到1mm…

java:程序包javax. servLet不存在

一.原因 1.项目Tomcat 服务器依赖未导入 2.项目的 SDK 版本选择错误 二.解决方法 方案一&#xff1a; 1.选择项目结构选项 2.导入Tomcat依赖 把tomcat里面的【jsp-api.jar】和【servlet-api.jar】这两个包导入 方案二&#xff1a; 1.选择项目结构选项 2.选择自己的jdk版本…

Golang | Leetcode Golang题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; func sortedArrayToBST(nums []int) *TreeNode {rand.Seed(time.Now().UnixNano())return helper(nums, 0, len(nums) - 1) }func helper(nums []int, left, right int) *TreeNode {if left > right {return nil}// 选择任意一个中间位置…

【Python性能优化】取最值的差异

取最值的差异 测试Windows 测试结果Linux 测试结果 测试 测试内容&#xff1a;从一组 x, y, z 坐标值中获得每个维度&#xff08;x、y、z&#xff09;的值域范围。此处不考虑将数据临时存放到内存&#xff0c;再整组获取值域的操作&#xff08;因为对单文件这么做问题不大&…

PS系统教学01

在前面几节内容基本介绍了PS的基本作用&#xff0c;简单的对PS中的某些基础功能进行介绍应用。 接下来我们进行系统的分享。 本次分享内容 基础的视图操作 接下来我们是对于PS工作区域的每个图标工具进行详细的分享 抓手工具缩放工具 这个图标是将工具栏由一列变成两列 一…

SpringBoot——整合SLF4j进行日志记录

目录 日志 项目总结 新建一个SpringBoot项目 pom.xml application.properties项目配置文件 logger.xml日志配置文件 TestController控制器 SpringbootSlf4jApplication启动类 启动项目 生成logger.log日志文件 日志 在开发中&#xff0c;我们经常使用 System.out.prin…

物联网六大核心技术——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网六大核心技术&#xff0c;是构建万物互联的基础&#xff0c;它们相互协作&#xff0c;共同实现物联网的广泛应用和深远影响。这六大技术分别是感知技术、网络通信技术、智能识别技术、计算技术、平台技术和安全技术&#xff0c;它们…

aws lakeformation注册s3位置的原因

参考资料 lakeformation底层数据的访问逻辑 向lakeformation注册s3位置的目的是让lakeformation控制对AWS S3 位置底层数据的访问&#xff08;以下简称LF&#xff09; 注册s3位置后可以进行两种授权 数据访问授权&#xff08;SELECT、INSERT 和 DELETE&#xff09; 数据位置…