使用node命令
打开终端输入node,之后输入console.log()可以向控制台输出指定字符串,如下图所示:
如果想要运行一个脚本文件也可以将js代码编写到文件中,执行node指令也是一样的,如下图所示:
Node.js模块
在编写大型项目时,为了提高代码的复用,会将项目进行模块化,在node.js中,一个文件对应一个模块,导入时可以根据文件路径导入不同的模块。
exports对象
exports可以将整个模块作为一个对象进行导出。
module.exports则是将模块中的一个变量或方法进行导出。
使用moudle.exports导出可以直接使用,而使用exports导出的是对象,需要调用对象中的成员方法/变量才可以使用。
var hello = () => {
console.log("hello world")
}
// 导出hello方法
module.exports = hello
// 导出
exports.test = () => {
console.log("test")
}
module对象
将模块进行导入
var app = require('./hello');
// app()
// 使用exports进行导出
app.test()
// 使用moudle.exports进行导出
app()
NPM基础
npm是node js的包管理工具,类似python的pip、Java的maven,可以根据版本将指定的包依赖导入到项目中,使用npm -v 查看npm版本,如下图所示:
全局安装
使用全局安装的包可以在系统的任何地方中进行导入使用。
npm install -g
局部安装
使用局部安装的包只能在项目中进行使用,以本地安装的方式会将依赖写入到package.json文件中。
npm install
保存依赖到package.json的dependencies下
npm install [moudle-name] --save
保存依赖到dev-dependencies下
npm install [moudle-name] --save-dev
dependencies是运行时的依赖,
devDependencies是开发时的依赖。
更新模块
可以使用以下命令对指定包检查是否有更新
npm outdated [moudle-name]
使用update命令来更新模块
npm update [moudle-name]
还可以将package.json的版本设置为最新版本之后npm update也是可以的
模块卸载
npm uninstall [moudle-name]
新建Node项目
- 新建一个项目目录并进入目录
mkdir test
cd test
- 使用npm init 初始化node项目,输入一些项目的基本信息
npm init
package name: (pro) test
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to D:\web\ng\node-pro\package.json:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this OK? (yes) yes
- 安装express模块
npm install express -g
- 导入express并创建一个简单的web服务器
// 导入express模块
var express = require('express')
var app = express()
app.get('/', (req, res) => {
// 服务端响应信息
res.send('hello world')
})
// 箭头7979端口
app.listen(7979)
- 运行node项目
node index.js
- 打开浏览器如下图所示
Node项目结构
index.js用于编写我们具体的业务代码
node_modules存储项目模块依赖,在复制项目时,不要复制node_modules文件夹,否则会出现意外错误,应当复制其他项目其他文件后使用npm install 自动安装版本依赖到项目中。
package.json用于存储模块的版本信息,通过npm install可以根据package.json中的模块版本安装到项目中。
模板版本对照如下所示
- 4.7: 完美匹配4.7版本
- >4.7: 高于4.7版本
- >=4.7: 高于等于4.7版本
- <4.7: 小于4.7版本
- <=: 小于等于4.7版本
- ~4.7: 约等于4.7版本,可以是4.7.xxx之类的版本号
- ^4.7: 版本区间 (4.7, 5.0)
- 4.7.: 匹配前缀为4.7.的版本
-: 任何版本号
package-lock.json: 如果版本是使用区间的话,每次使用npm install都会根据最新的版本模块安装依赖到项目中,由于开发环境和线上环境执行npm install的时间点不同,会导致环境模块依赖不同,可能会出现依赖错误的问题。
package-lock.json就是为了解决这个问题的,在package-lock.json配置了系统版本之后就会对模块中的依赖进行锁定,避免版本不一致的问题。