01.后端编程【nodejs?】
1.后端编程 =》应用程序 网站
三个部分 三个电脑
前端 负责页面展示,简单的交互效果
后端 接收请求 处理业务逻辑 响应数据
数据库 存储数据的仓库
运行过程:
1.前端请求商品列表数据
2.向后端发起一个商品列表请求
3.后端接受到请求之后,从数据库获取商品列表数据
4.响应给前端
5.前端根据后端相应渲染页面
后端编程语言:java | php | python | go | javascript语言
后端运行环境:
前端>浏览器chrome v8引擎,解析执行javascript代码
后端>node.js
执行js代码: 命令行窗口 >node xx.js
启动小贴士:
window+r => 搜索cmd =>node -v(检查是否安装成功)
vscode =>js文件--集成终端打开--注意下方右上角是cmd
(下拉框--选择默认配置文件--cmd )
(文件名可以tab快捷)
02.命令行操作
在node js环境中不能写dom和bom操作的代码
cd 目录名 跳转指定文件
cd.. 后退文件
03.web服务器
1.安装了提供web服务软件的电脑称之为web服务器
2.常见的web服务器软件有哪些?
nginx
apache
tomache
vscode插件liverServer 后期开发需用
3.nginx如何使用
补充
端口不要写太小,会有占用
集成终端运行
- 出现address already in use 按住ctrl+c停止运行重新启动
找自己ip地址:
- window+r => 输入cmd =>输入ipconfig
本机 127.0.0.1
chrome插件如何安装:
- 谷歌浏览器 => 三个点 - 更多工具 - 扩展程序 - 开发者 - 加载 - 选插件
练习.编写后端web程序【掌握】
//1.使用nodejs提供的内置的http模块,模块创建web服务相关的属性方法
const http = require('http') //引入node.js内置的http模块,赋值给http变量
//2.创建web服务对象
let server = http.createServer(function (request, response) {
//request 请求对象,前端请求信息包含在此对象中
//response 相应对象,后端相应给前端的信息包含在此对象中
let url = request.url
console.log('url', url); //要求: 当用户在浏览器输入 http://ip:port:3000/productlist 时,
//避免乱码,设置字符集
response.writeHead(200, {
'content-type': 'text/html;charset=utf-8'
})
if (url.indexOf('productlist') !== -1) {
let productList = [{
id: 1001, //商品序号
name: 'js高级编程', //商品名
url: 'https://img1.baidu.com/it/u=454394458,1998378568&fm=253&fmt=auto&app=138&f=JPEG', //商品图片
price: 68.90, //商品价格
num: 0, //商品数量
singlePrice: 0, //商品总价=数量*价格
state: false //状态
},
{
id: 1002,
name: 'css高级编程',
url: 'https://img1.baidu.com/it/u=337910016,91561566&fm=26&fmt=auto',
price: 55.89,
num: 0,
singlePrice: 0,
state: false //状态
},
{
id: 1003,
name: 'html高级编程',
url: 'https://img1.baidu.com/it/u=337910016,91561566&fm=26&fmt=auto',
price: 45.89,
num: 0,
singlePrice: 0,
state: false //状态
}
]
//不能传入对象,要转成字符串 对象不能再网络中运输
var productListStr = JSON.stringify(productList)
response.write(productListStr)
} else {
response.write('你好哇,小美女') //
response.write('hello,beauty')
}
response.end() //结束写入,相应内容
})
//3.启动web服务器,监听端口,端口区分同一台电脑不同web应用的
server.listen(3000, () => console.log('服务器监听成功,监听3000端口...'))
操作:
启动服务=》集成终端
发起请求=》地址栏输入
ip地址:端口//请求的东西
ex:http://127.0.0.1:3000/productlist
04.数据库【掌握】
数据库
- 持久化存储数据库的仓库
- 在数据库中以 二维表结构形式存储数据,一个数据库可以有多张表
表结构: 字段名 描述表信息,商品表中描述商品信息
记录 表示一条条的商品
商品ID 商品名称 商品价格
1001 javascript编程 89.98
1002 css编程 59.98
创建表:
1.表结构
字段名 数据类型
商品ID (数值) int
商品名称 (字符串) varchar(可变长度) char(固定长度)
2.添加记录
1001 javascript编程 89.98
数据库管理软件=》用来创建数据库
mysql oracle sqlserver DB2
甲骨文 微软 IBM
数据重要性
java
mySqual
mySqual下载:
甲骨文官网=》mysqual Community Server=>dowload
判断安装是否成功?
我的电脑 - 管理 - 服务 - mySqual - 双击 - 安装路径
操作mySqual服务器?
客户端命令行操作mySqual...了解
mysqual - bin - 搜索cmd - 输入>mysql -u root -p - 输入密码(命令显示)
命令 show database; 查看数据库
可视化mySqual?
启动 - 连接 - 创建表
数据库名 - 对应 - 应用名
练习:
1. 安装mysql数据库管理软件
2. 安装mysql可视化软件navcat
3. 使用navcat连接mysql数据库服务
4. 创建数据库名productdb
5. 创建表product
商品ID: id int 主键
商品名称: name vachar
商品价格: price dobule
商品数量: num int
商品地址: url varchar
6.添加记录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G2pZ5d3G-1669771572533)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649145886614.png)]
05.sql语句
SQL语言: 结构化查询语言
数据库操作一门语言,提供多条sql语句,操作数据库
- 创建数据库
- 创建表
sql语句 WHERE 条件
- 插入记录
INSERT INTO 表名 (字段名1,字段名2...)VALUES(值1,值2...)
如: 商品表product 插入一条记录, 1001 vue编程 88.99 1 http://xx.jpg
INSERT INTO product (id,name,price,num,url)VALUES(1001,'vue编程',88.99,1,'https://img1.baidu.com/it/u=454394458,1998378568&fm=253&fmt=auto&app=138&f=JPEG')
- 删除记录
DELETE FROM product WHERE id = 1003
- 查询记录
SELECT id,name,price,num FROM product
SELECT id,name,num FROM product WHERE price>80
- 修改记录
UPDATE product SET `name` = 'VUE高级编程' WHERE id=1006
如何运行mySql语句?
navicat - 查询 - 新建查询 - 写入语句 - 运行 - 受影响行1行(成功执行)
# 注释
06.后端程序集成数据库【掌握】
1.后端程序连接数据库
下载第三方mysql数据库模块
npm install mysql //下载
引入mysql模块
const mysql = require('mysql')
操作:
对应文件 - 集成终端 - 执行>npm install mysql - node_modules(下载成功)
- 写程序 - 后端执行代码用集成终端 node命令
2.执行sql语句
3.处理结果集
程序:
//1.引入mysqual模块
const mysql = require('mysql')
//2.获取数据库连接对象
let connection = mysql.createConnection({ //创建链接
host: 'localhost',
user: 'root',
password: '12345z',
database: 'productdb'
})
//建立链接
connection.connect() //后端程序和数据库链接成功
//执行mysql语句
let sql = 'SELECT id,name,price,num,url FROM product '
// let sql = "INSERT INTO product (id,name,price,num,url)VALUES(1008,'vue编程',88.99,1,'https://img1.baidu.com/it/u=454394458,1998378568&fm=253&fmt=auto&app=138&f=JPEG') "
connection.query(sql, function (err, data) {
//err是错误对象,如果数据库出错,为true
//data数据库正常返回的数据
if (err) {
console.log('数据库出错', err);
return;
}
console.log(data);
})
//关闭数据库连接
connection.end()
o&app=138&f=JPEG') " connection.query(sql, function (err, data) { //err是错误对象,如果数据库出错,为true //data数据库正常返回的数据 if (err) { console.log('数据库出错', err); return; } console.log(data);
})
//关闭数据库连接 connection.end()