使用第三方模块
1.新建一个文件夹,文件夹的名字非中文,名字也不要和模块名字一样.
2.进到文件夹里面去,命令运行:npm init -y
这个命令可以理解成是初始化
3.下载模块, 去npm官网搜索模块,用他的说明来下
4.使用模块,去模块的官网,或者模块说明中来使用.
使用express模块来创建服务器
//导入express 模块
const express = require('express')
//创建一个服务器
const app = express()
// 设置返回给用户看的内容
app.get('/', function (req, res) {
//如果是用内置模块http创建的服务器,返回的内容用res.end()响应.
//现在我们这里用的是express模块创建的服务器,那用res. send()响应
res.send('Hello World')
})
//启动服务器
app.listen(4399,()=>{
console.log('服务器开启了');
})
使用express模块创建一个静态资源服务器
- js部分
//导入express 模块
const express = require('express')
//创建一个服务器
const app = express()
app. use(express.static( 'web'))
// 设置返回给用户看的内容
// app.get('/', function (req, res) {
// res.send('Hello World')
// })
//启动服务器
app.listen(4399,()=>{
console.log('服务器开启了');
})
- html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body{
background-color: red;
/*background-color: green;*/
/*background-color: blue;*/
}
</style>
</head>
<body>
1页面
</body>
</html>
实现一个简单的post接口
//导入express 模块
const express = require('express')
//创建一个服务器
const app = express()
// 写接口
app.post('/sb', (req, res)=> {
res.send('111')
})
//启动服务器
app.listen(4399,()=>{
console.log('服务器开启了');
})
实现一个简单的get接口
接口:得到一条随机笑话
接口地址: /joke
请求方式: get
参数:无
返回:一条笑话
//导入express 模块
const express = require('express')
//创建一个服务器
const app = express()
// 写接口
app.get('/joke', (req, res)=> {
//准备n条笑话(实际开发的时候笑话们肯定是从数据库或者是其他的数据源获取到的.
let arr = ['111','222','333']
let index = Math .floor (Math. random()*3)//0 1 2
//返回笑话
res.send(arr[index])
})
//启动服务器
app.listen(4399,()=>{
console.log('服务器开启了');
})
实现一个带有参数的post接口
接口:用户登录
请求地址: /login
请求方式:post
请求参数:
- username password
- 登录账号/用户名 用户密码
返回值:登录成功/登录失败
如果在输入命令时卡了或者下载错了,可以使用命令"npm cache clean -f"
//导入express 模块
const express = require('express')
const bodyParser = require('body -parser')
//创建一个服务器
const app = express()
// parse application/ x-www- form- urlencoded
app. use(bodyParser.urlencoded({ extended: false}))
// 写接口
app.post('/login', (req, res)=> {
//接收用户传递过来的用户名和密码
//由于是post方式传递过来的参数,所以用req.query这种方式拿不到.
// console .log(req) ;
// console.log(req.query);
//要想获取到通过post传递过来的参数,就要使用第三方模块:body-parser
// 就用reg. body来获取参数。
console.log(reg.body);
//处理
if(req.body.username == 'admin' && req.body.password == '888888'){
res .send({
code:200,
msg:'登陆成功'
})
}else {
res.send({
code:400,
msg:'账号密码不正确'
})
}
res.send('111')
})
//启动服务器
app.listen(4399,()=>{
console.log('服务器开启了');
})
实现一个带有参数的get接口
接口:查询英雄外号 / 根据英雄名返回英雄外号
接口地址: /getNickName
请求方式: get
请求参数: heroName英雄名(提莫/盖伦/李青… )
返回值:英雄外号
//导入express 模块
const express = require('express')
//创建一个服务器
const app = express()
// 设置返回给用户看的内容
app.get('/getNickName', (req, res)=> {
// 要接收前端传递过来的参数(英雄名)
console . log(req. query)
//处理
let heroNickName ='';
switch (req. query.heroName) {
case '提莫':
heroNickName = '迅捷斥候'
break;
case '提莫':
heroNickName = '迅捷斥候'
break;
case '提莫':
heroNickName = '迅捷斥候'
break;
default:
heroNickName = '没有该英雄'
break;
}
res.send('Hello World')
})
//启动服务器
app.listen(4399,()=>{
console.log('服务器开启了');
})
实现一个返回json数据的接口
接口:返回一个食物
接口地址: /food
请求方式: get
请求参数:无
返回值: json
//导入express 模块
const express = require('express')
//创建一个服务器
const app = express()
// 设置返回给用户看的内容
app.get('/food', (req, res)=> {
res.send({
foodName: '红烧肉',
price: 50,
description: '好吃好吃好想吃'
})
})
//启动服务器
app.listen(4399,()=>{
console.log('服务器开启了');
})
npm与cnmp介绍
-
1.npm
- 全称node package manager
- 官方推出的包管理工具
- 不需要额外安装,安装node之后自带
- 因为服务器不在国内,所以有时候安装特别慢,甚至无法成功
-
2.npm指向淘宝镜像
- 配置npm指向淘宝镜像
- npm config set registry https://registry.npm.taobao.org/
- 不想用淘宝的,再设置回原来的就可以了:
- npm config set registry https://registry.npmjs.org
- 配置npm指向淘宝镜像
-
3.cnpm
- 全称china node package manager
- 非官方推出的包管理工具
- 需要额外安装: npm install -g cnpm --registry=https://registry. npm. taobao. org
- 国内安装特别快,不需要翻墙(如果特殊情况无法安装,也可使用npm)
- 安装成功之后,通过cnpm -v查看
package.json与package-lock.json的区别
- 1.使用npm5之前的版本,是不会生成package-lock.json这个文件的。
- 2.npm5以后,包括npm5这个版本,才会生成package-lock.json文件
- 3.当使用npm安装包的时候,npm都会生成或者更新 package-lock.json 文件
- npm5以后的版本,在安装包的时候,不需要加 --save (-s) 参数,也会自动在package.json中保存依赖项
- 当安装包的时候,会自动创建或者更新package-lock.json文件
- package-lock.json文件内保存了node_modules中所有包的信息,包含这些包的名称、版本号、下载地址。带来好处是,如果重新npm install的时候,就无需逐个分析包的依赖项,因此会大大加快安装速度。
- 从package-lock.json文件名来看,lock代表的是 锁定”的意思。它用来锁定当前开发便用的版本号,防止 npm instal 的时候自动更新到了更新版本。因为新版本有可能会更新老的 api,导致之前的代码出错。
- 原来的package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次 npm install 都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工
作量,测试/适配等,所以package-lock.json文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。