目录/Contents:
了解Node.js
Node.js 中文网、英文官网首页放了这句话
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
运行时,即编程语言的运行环境
NodeJS 对 JS 扩展,使得JS可以脱离浏览器,直接运行在物理机器上,也就是说NodeJS可以直接管理、控制机器资源了
下载安装Node
直接上官网下载对应的版本安装即可
验证安装是否成功,可以使用命令行
C:\Users\mild>node -v
v16.15.1
Node hello world
打开命令行、node,如下
C:\Users\mild>node
Welcome to Node.js v16.15.1.
Type ".help" for more information.
> console.log("hello world")
hello world
undefined
>
退出node
有如下三种方式
>
(To exit, press Ctrl+C again or Ctrl+D or type .exit)
双击 Ctrl C
Ctrl D
.exit
NPM——(npm,Node Package Manager)
就像maven、gradle之于 Java
pip之于python
Nuget之于C++
npm 是随 node 一起发布的包管理工具,常被用来下载开箱即用的代码,然后在个人项目中使用
查看npm版本
npm -v
package.json
就像pom.xml
之于使用maven
管理的 Java项目
就像setup.py
描述Python
项目中使用的第三方库
package.json
用于描述和管理Node
项目中使用的插件、依赖
生成一个package.json
命令
npm init
或者使用
npm init -y
举例
C:\Users\mild\Desktop\codings\test>npm init
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help init` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (test)
version: (1.0.0)
description: It is a test init
entry point: (index.js)
test command:
git repository:
keywords:
author: Ading
license: (ISC)
About to write to C:\Users\mild\Desktop\codings\test\package.json:
{
"name": "test",
"version": "1.0.0",
"description": "It is a test init",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Ading",
"license": "ISC"
}
Is this OK? (yes)
npm notice
npm notice New minor version of npm available! 8.11.0 -> 8.15.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.15.1
npm notice Run npm install -g npm@8.15.1 to update!
npm notice
C:\Users\mild\Desktop\codings\test>
生成的package.json
{
"name": "test",
"version": "1.0.0",
"description": "It is a test init",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Ading",
"license": "ISC"
}
文件中的"scripts"
是一个JSON对象,可在其中自定义npm命令
{ "test": "echo "Error: no test specified" && exit 1" },
npm install
安装第三方库的语法
npm install <package-name>
通常会在此命令中用到如下参数:
-
--save
安装并添加条目到package.json
文件的dependencies
-
--save-dev
安装并添加条目到package.json
文件的devDependencies
因为 package.json
将依赖分为如下两种
-
devDependencies
通常是开发的工具(例如测试的库) -
dependencies
则是与生产环境中的应用程序相关
npm install -g
全局模式安装,对于被很多项目引用的模块,建议使用 -g
node_modules
若只是运行npm install
则npm
根据 package.json
中描述的依赖进行安装,安装到 当前文件夹/node_modules
(以非全局模式安装的模块,都会在 当前文件夹/node_modules)
那么以全局模式安装的,又会安装到哪里呢?
这个需要查看
npm config get prefix
C:\Users\mild>npm config get prefix
C:\software\nodejs\npm_installation_path\node_global
看到了get ,自然想到了 set
所以,要重新设置全局安装的路径则
npm config set prefix absolute_path
C:\Users\mild>npm config set prefix C:\data\nodejs\node_global
C:\Users\mild>npm config get prefix
C:\data\nodejs\node_global
如果不用绝对路径,则会在当前目录设置相对目录
回过头来看 npm install
当在Node 代码中使用require引入第三方模块
-
Node会在node_modules中查找该模块;
-
该模块自己也有 package.json ,也会依赖第三方模块,那么Node会加载器main字段定义的主文件
那么这样依赖来依赖去,就会形成一个依赖树型结构;其中肯定出现了相同的依赖被多个模块所依赖的情况,而npm会首先统计所有的依赖,然后统一安装到 node_modules 目录之下,(这样就避免同一个依赖可能被下载安装很多次)
npm 缓存
为了避免每次都从Remote Repository 下载模块, npm会有一个本地的缓存
查看缓存地址
npm config get cache
类似的,设置缓存地址
npm config set cache absolute_path
如下
C:\Users\mild>npm config get cache
C:\software\nodejs\npm_installation_path\node_cache
C:\Users\mild>npm config set cache C:\data\nodejs\node_cache
C:\Users\mild>npm config get cache
C:\data\nodejs\node_cache
既然是缓存,那么就可以清空
npm cache clean -force
模块版本控制与package-lock.json
package.json
能够通过 模糊版本号匹配规则 来控制 引入的第三方模块版本,但是对于第三方模块版本中包含的依赖,却无法控制
在npm5.0.0
之后的版本,加入了 package-lock.json
该文件描述 package.json
中所有模块及其子模块的版本信息,且该文件内容自动生成
在实际开发过程中,只需要提交
package.json
和 package-lock.json
到代码仓库,那么想要安装项目环境,只需要
npm install
使用npm
安装vue3
和vue3-cli(
命令行工具 (CLI))
以全局的方式安装
# 最新稳定版 vue3
npm install vue@next
C:\Users\mild>npm install vue@next
added 21 packages in 12s
npm notice
npm notice New minor version of npm available! 8.11.0 -> 8.15.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.15.1
npm notice Run npm install -g [email protected] to update!
npm notice
这里是提醒我要升级npm
了,所以直接升级
npm install -g npm@8.15.1
# 安装vue-cli
npm install -g @vue/cli
C:\Users\mild>npm install -g @vue/cli
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated subscriptions-transport-ws@0.11.0: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md
added 848 packages in 2m
可见出现了5条 弃用警告信息(WARN Deprecated)
网上一搜,说是要配置淘宝镜像,命令这样
npm config set registry https://registry.npm.taobao.org
发现又是 以npm config set
开头 , 好奇的我在设置前,get了一下
C:\Users\mild>npm config get registry
http://registry.npm.taobao.org/
得到的是http
协议的镜像网站,所以set只不过是改了个协议
然后下载cnpm
npm install -g cnpm
安装完淘宝镜像后,再重新装一下vue-cli
cnpm install -g @vue/cli
安装完成后,可以检测一下vue-cli
是否安装成功
C:\data\nodejs\node_global>vue --version
@vue/cli 5.0.8
可能会出现找不到vue命令的情况,那就是vue命令没有添加到系统path变量里面,可以直接到有vue命令的文件夹,也就是在npm config get prefix
显示的文件夹中
快速打开 系统属性的方法:
Ctrl+R
, 输入sysdm.cpl
本篇结束
参考
Node.js 中文网 (nodejs.cn) http://nodejs.cn/
Node.js 和浏览器的区别 (nodejs.cn) http://nodejs.cn/learn/differences-between-nodejs-and-the-browser
vue3 官网安装文档 https://v3.cn.vuejs.org/guide/installation.html
文章评论