一、nodejs的简介
1、百度百科定义:
node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言,发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。
2、其他人的理解:
- Node.js是让Javascript脱离浏览器运行在服务器的一个平台,不是语言;
- Node.js采用的Javascript引擎是来自Google Chrome的V8;
- 运行在浏览器外不用考虑头疼的Javascript兼容性问题;
- 采用单线程、异步IO与事件驱动的设计来实现高并发(异步事件也在一定程度上增加了开发和调试的难度);
- Node.js内建一个HTTP服务器,所以对于网站开发来说是一个好消息。
二、一个nodejs程序
新建一个demo文件夹,然后用vscode或其他编译器打开,进入终端初始化项目
npm init -y
git init //可省略
在demo文件夹下新建src文件夹,然后在src下建demo.js
//web 服务
// ajax-->api-->web server(nodejs)
const http = require('http');
const server = http.createServer((req,res)=>{
res.end('hello')
})
server.listen(3000,'127.0.0.1',()=>{ //监听127.0.0.1:3000
console.log('服务启动成功')
})
在根目录终端上启动项目,测试
node ./src/demo.js
三、nodejs程序热部署
在项目根目录中启动终端,安装nodemon
npm install nodemon -D
修改 package.json 中的启动命令
"scripts": {
"start": "nodemon src/app.js",//新增
"start:node": "node src/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
通过增加 nodemon.json 配置 指定 特殊watch 的文件
{
"watch":["./src/**/*.js"]
}
默认情况下监测所有文件,一旦有文件发生改动即自动重启服务,上述配置后只监测src文件夹下的js文件有没有发生改动。
在终端启动项目,测试
npm start
四、nodejs的express框架
什么是express ?
Express基于Node.js封装的,快速、开放、极简的 Node.js Web 开发框架。它通过中间件和路由让程序的组织管理变得更加容易;它提供了丰富的HTTP工具;它让动态视图的渲染变得更加容易;他还定义了一组可扩展的标准。
在项目根目录中启动终端,安装express
npm install express --S
一个 express 实例
const express = require('express');
const app = express();
app.get('/name/:age',(req,res)=>{ //get方法的接口
let {age} = req.params;
res.json({
name:'tom',
age
})
})
app.post('/name',(req,res)=>{ //post方法的接口
res.send('tom post')
})
app.listen(3000,()=>{
console.log('server 启动成功')
})
五、express+mysql
安装sequelize并配置
npm install --save sequelize
npm install --save mysql2
npm install --save-dev sequelize-cli
npx sequelize-cli init
在配置文件config/config.json填写待连接的数据库
"development": {
"username": "root",
"password": "ych981203",
"database": "express-demo",
"host": "127.0.0.1",
"dialect": "mysql"
}
创建第一个模型(和迁移)
npx sequelize-cli model:generate --name User --attributes name:string
npx sequelize-cli db:migrate
一个实例:
const express = require('express');
const models = require('../models');//模型对象
const app = express();
app.get('/create',async (req,res)=>{
let {name} = req.query;
// promise user-->sequlize 对象
let user = await models.User.create({
name
})
console.log(user)
res.json({
message:'创建成功'
})
})
app.get('/list',async (req,res)=>{
let list =await models.User.findAll();
res.json({
list
})
})
app.get('/detail/:id',async (req,res)=>{
let {id} = req.params;
let user =await models.User.findOne({
where:{
id
}
})
res.json({
user
})
})
app.listen(3000,()=>{
console.log("启动成功")
})
总结
node.js能让Javascript运行在服务端,让前端开发工程师也可以使用所学的Javascript来搭建服务器,提高开发的效率。另外运行在浏览器外不用考虑头疼的Javascript兼容性问题,方便了网站开发。node.js作为衡量前端工程师能力的标准之一,学习前端都有学习node.js的必要性。