【node.js】看这一篇就够了!标准node项目文件和项目执行过程简要分析

写在前面:大家好K 。首先为你点进这篇有趣的文章点赞!文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论 。更多内容请点进我的博客K 。阅览 。
文章目录2. 项目执行过程简要分析
1. node项目原始目录结构
.├── XXX.js├── node_modules│├── express││└── XXX.XX│└── XXX│└── XXX.XX├── package-lock.json└── package.json
一个标准的node项目有这几个部分:
XXX.js源代码文件:开发者主要写的代码文件;
模块目录:里面存放了当前项目使用的模块文件;
.json项目配置文件:里面存放了项目的基本信息和配置信息;
-lock.json模块记忆文件:里面存放了所需要的模块包括依赖模块的详细信息,在二次安装时按照该此文件中所指版本和下载路径下载安装 。
模块目录中个模块的结构和当前目录结构相同,因为每个模块都是一个node项目
1.1 .json文件
使用npm init在空文件夹中即可创建该文件,此文件夹即为node项目根目录
文件内容示例:
{"name": "test","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo 'Hello, world'"},"author": "","license": "ISC","dependencies": {"express": "^4.17.1"}}
里面有项目名称、版本号、描述、作者、遵循的协议类型等,这些字段为基本信息 。
协议的文件,如果有,则放在项目根目录中 。
main字段

【node.js】看这一篇就够了!标准node项目文件和项目执行过程简要分析

文章插图
该键的值就是整个项目的起始文件名,整个项目从该文件启动 。类似于html文件中的index.html 。
字段
阮一峰博客详细说明
因为是json文件,所以两边的键和值都用双引号包含(这里键名和值都是字符串) 。
这些定义在.json里面的脚本,就称为 npm 脚本,当在命令行输入npm 键名时,就会执行值的shell命令,如上示例:
# 输入npm run test# 实际执行的是test键对应的值echo 'Hello, world'# 所以输出 Hello, world
当然值是shell命令,所以shell中所有操作都可以写在这里,如各种文件操作、服务操作等 。且每次执行脚本,npm是新建子shell在里面执行,几乎不影响当前shell 。
"start": "node ."
之后可以通过npm start启动项目 。还有npm start、npm stop、npm。
"preprint": "echo 'pre'","print": "echo 'ok'","postprint": "echo 'post'"
执行npm run print时会依次执行echo 'pre'、echo 'ok'和echo 'post'
"test": "echo $npm_package_main"
则执行npm run test时,会输出index.js 。
若想访问键中的键(嵌套),则继续用下划线_连接,如的值为^4.17.1
字段
这里只放了用到的第三方模块名和版本号,相对-lock.json文件中的更简略 。并未存放该模块所依赖的其他模块的信息 。
【node.js】看这一篇就够了!标准node项目文件和项目执行过程简要分析

文章插图
格式为:
"模块名": "支持版本号"
支持版本号有三种表示,如:
"~x.y.z",表示固定x,y两个号码值,不低于z的版本 。例~1.2.3表示,只能安装高于1.2.3(含)低于1.3.0(不含)的版本;
^x,y,x,表示固定x值,不低于y.z的版本 。例^1.2.3表示,只能安装高于1.2.3(含)低于2.0.0(不含)的版本;
:安装最新版本 。
1.2 -lock.json文件
使用npm安装时加上-S或--save来自动创建、写入该文件 。(新版的npm可不手动加此选项,默认自动保存)
例如第一次安装模块是使用命令npm-S。因为也有它自己的依赖,它的依赖又会有其他依赖(子子孙孙无穷尽也) 。此时-lock.json就会保存所有这些依赖的信息,如版本号、下载地址、校验码等 。
优点:
固定版本号 。如果不保存,当二次安装模块时,别的依赖包可能会更新,所以目的之一是固定依赖模块的版本号,减少版本引起的错误 。
【【node.js】看这一篇就够了!标准node项目文件和项目执行过程简要分析】固定下载地址 。第一次安装时是一层一层找依赖(依赖包的依赖包,子子孙孙无穷尽也)找下去安装的 。这时找依赖的过程就会消耗大量的时间,该json文件保存了每个依赖包的下载地址,这样就能直接找到地址下载,提高了模块的安装速度 。
2. 项目执行过程简要分析
主要分成两大部分三大步骤,前两步骤为项目的预操作,下载安装各模块和执行启动脚本 。之后才是项目的主要部分 。下面是简要过程:
当拿到一个node项目时,第一步先执行npm 安装需要的模块,此时就需要读取.json和-lock.json里的内容,-lock.json中存放了各依赖模块的下载地址信息和版本信息,可以帮助提高安装模块速度 。
运行npm start启动项目,启动脚本的具体内容放在.json的字段中,然后重点读取.json中的main字段信息,这里存放了项目起始的js脚本,整个项目从该文件开始执行 。
项目各模块(node中每个文件即为一个模块)之间通过、等关键字以及共享数据进行沟通交互 。