Backend
github kjs托管静态网页
About Node.js
- js build on Chrome’s V8 engine
- Asynchronous,event driven
- Non-blocking I/O
- Often used for building back-end services
- Fast and scalable
事务:无论多少人,系统排队,单点系统
Node.js Architectire
Application
|
Node.js API
|
Node.js Bindings * Node.js or C/C++ addons
|
V8 * libuv * c-ares * HTTP parser * OpenSSL * zlib
Node Package Manager(NPM)
https://node.js.org/en/knowledge/getting-started/npm/what-is-npm/
node version document:
https://nodejs.org/en/about/repleases/
语义化
sematic verioning 2.0
版本控制
summary
Given a version number MAJOR.MINOR.PATCH, increment the:
- Major version when u make incompatible(不兼容) API changes
- Minor version when u add functionality in a backwards compatible manner, and
- Patch version when u make backwards compatile bug fixes.
Additional labels for pre-replease and build metabata are available as extensions to the MAJOR.MINOR.PATCH format
UNSTABLE:
MAINTENCE:不升级版本
ACTIVE:long term support,不允许活跃开发,可以不频繁增加feature
CURRENT: 活跃开发版本(随时变动)
npm install 命令背后信息
list tag
terminal
npm init
npm install
npm install eslint// 在package.json里会显示
npm i //=npm install
npm info eslint
====method 1====
在package.json中添加
“publishConfig":{
}
====method 2====
npm help|grep dist=>
dist-tag=>创建
版本号
"dependencies": {
"eslint": "^6.8.0" //只安装6.8.0
}
"dependencies": {
"eslint": "^6.*.*" //安装6版本下的最大
}
"dependencies": {
"eslint": "*" //安装lastest下的最大
}
- 安装包所需要的包的层层依赖,每个包的package中可以查看
树结构
windows file name有长度限制(安装失败)=》A/B依赖C的不同版本
不冲突=》各自追寻各自依赖版本
“打平” flat
一级结构
当前目录=》再上一级=》再上一级
版本冲突下,随机谁抢占跟目录谁占有根目录
都可以工作(一个项目依赖不同版本的包是开发中需要尽量避免的状况,但是由于项目跨度和团队工作非常常见)
npm官方工具并不能解决这个问题
举例
github.com/boltpkg/bolt
大版本冲突依然会存在二级目录
npm-scope
@somescope/somepackagename
@公司名/某包
scope命令池(商业问题)
npm-lock.json
"dependencies": {
"@babel/code-frame": {//包名(designed purpose:face book推出概念类似dist-list
"version": "7.8.3",//版本
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",//服务器地址(从哪个服务器来)
"integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",//签名指纹
"requires": {
"@babel/highlight": "^7.8.3"//依赖版本
}
},
npm生态系统松散
无版本约定,只是鼓励按某“版本约定”规则
在不符合版本规定命名的包,相信包,锁住包(lock)使用
创建配置文件
.npmrc
package-lock=false
unix传统
配置文件都以. 开头
terminal
npm uninstall eslint
npm i --production
npm i eslint -D//devDependencies
npm script
json
"scripts": {
"test": "echo \"Error: no test npm info eslintspecified\" && exit 1"
"jr":"echo \"hello\""
},
约定俗成的可以直接找 npm test(内置的)
自己加的非内置的需要用run来运行 npm run jr
如果在script 里加npm命令
"scripts": {
"test": "echo \"Error: no test npm info eslintspecified\" && exit 1",
"jr":"echo \"hello\"",
"start":"npm -v",
},
1.npm做准备工作
append到 bin 的环境变量中,bin中优先级高于操作系统优先级
hash bin头
REPL
Read-Eval-Print-Loop(REPL)
https://nodejs.org/api/repl.html
网友评论