后端项目所需基础知识

一、在电脑中配置环境变量:

右键计算机图标选择高级设置,设置环境变量path中的配置,即可以在任何目录运行可运行的应用程序;

二、DOS命令窗口:window提供的输入命令的字符界面

1.打开DOS命令窗口常用命令:

  • 在“开始”菜单–>“运行”输入框中输入: cmd
  • 在“资源管理器”中的“地址栏”中输入: cmd
  • 在任何目录中右单击的同时按”shift”键,然后选择“在此处打开命令窗口”

2.常见的DOS命令:

  • cd: 切换目录
  • 两个特殊目录: .代表当前目录 …代表上一级目录
  • dir:显示当前目录中的内容
  • 切换盘符: 盘符:
  • cls:清屏
  • mkdir:创建目录
  • rmdir:删除目录

三、安装node

1.node简介:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境[服务端];

2. node特点:

  • nodejs既是平台(可以当作web服务器[软件])又是开发语言;
  • 单线程[相当于一家饭店只有一个服务员]、跨平台;
  • 非阻塞的、异步I/O模型;
  • 事件驱动;

3.运行node代码的两种方法:

  • 在dos小黑窗中使用node命令来运行:node 目标js文件
  • 在visual code开发工具中安装"code runner"插件,然后在该开发工具直接运行nodejs代码;

四、了解HTTP协议

1.定义:HTTP(Hyper Text Transfer Protocol,超文本传输协议),它是基于请求响应模式、无状态的(没有记
忆功能)、应用层的协议。

2.http协议工作原理:

  1. 客户端(浏览器)与服务器建立联系;
  2. 客户端(浏览器)发送请求给服务器;
  3. 服务器接收、处理并返回给客户端(浏览器);
  4. 客户端(浏览器)与服务器断开连接;

3.请求报文数据格式由三部分组成: 请求行(请求方式 请求资源 协议版本)、消息报头、请求正文[可为空]。

4.响应报文数据格式由三部分组成:状态行(协议版本、状态码、描述信息)、消息报头、响应正文。

5.常见HTTP状态码:

  1. 1XX—表示接收的请求正在处理
  2. 2XX—请求正常处理完毕:200请求成功、204请求成功但没有资源返回
  3. 3XX—需要进行附加操作完成请求(重定向):301永久重定向、302临时重定向、303必须使用get方法获取资源
  4. 4XX—客户端请求出错,服务端无法响应:400请求报文中存在语法错误、403服务器拒绝该次访问、404找不到请求资源
  5. 5XX—服务器请求处理出错:500服务器在执行请求时发生了错误、502网关错误、503服务器停机维护

五、完整的URL地址

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
实例:" https: // user : pass @ sub.example.com : 8080 /p/a/t/h ? query=string #hash "

  1. scheme:传送协议。
  2. 层级URL标记符号(为[//],固定不变)
  3. 访问资源需要的凭证信息(可省略)
  4. host:服务器。(通常为域名,有时为IP地址)
  5. port:端口号。
  6. path:路径
  7. query:查询参数
  8. 片段。以“#”字符为起点

六、第三方模块(包)

1.第三方模块(包)官网;
2.将npm服务器切到国内淘宝服务器(镜像服务器),在dos命令中执行下面命令。一台电脑只需要配置一次

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

3.常见的npm命令:

  • npm init [-y] 创建自己的package.json文件;
  • npm i/install 安装当前项目所依赖的包,-g代码global全局安装;
  • npm s/search 包名 搜索包
  • npm r/remove 包名 删除一个包
  • npm uninstall 包名 删除

六、MIME

MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展类型,在http协议中标识要返回数据的类型,客户端(浏览器)会根据不同类型的数据启动不同应用程序进行处理。
常用的MIME类型有:

  • text/html html代码
  • text/html html代码
  • application/javascript javascript代码
  • image/png png格式的图片
  • image/gif gif格式的图片
  • image/jpg jpg格式的图片
  • image/jpeg jpeg格式的图片

七、Express框架

1.简介:基于 Node.js 平台,快速、开放、极简的 Web 开发框架[后端开发框架]。
express中文官网
express官网
2.在项目根目录执行命令安装: npm i express;
3.**Express中间件:**就是在接收请求之后返回响应之前要执行的函数,而这些函数有一定业务处理能力(自定义中间件、内置中间件、第三方中间件);语法app.use([‘路径’,],中间件函数)
常用第三方中间件:

  • cookie的获取:npm i cookie-parser;
  • session的获取:npm i cookie-session

注意事项:

  • 使用中间件代码通常所在所有路由的最前面
  • next()方法用来查询并执行后面能匹配上的路由;
  • 当给next()方法传参时会自动查找并执行含有err,req,res,next四个参数的中间件;

4.Express生成器: 可以快速创建项目骨架,项目骨架包含有:项目启动文件、入口文件、模板文件夹、Router级别路由文件、静态资源目。

  1. 安装: npm i -g express-generator
  2. 生成项目骨架:express --view=ejs 项目名称
  3. 找到项目目录下载所有依赖:npm i/install
  4. 运行项目:npm start

5.Express优缺点: express将中间件和路由完美结合,通过中间件来划分业务,即便是再复杂的业务通过一系列中间件组合后也业务变得更清晰及线性化。express主要问题是使用的callback(回调函数),callback有两个主要问题:第一是业务不可以组合,第二是异常很难捕获;

八、ejs模板引擎

1.简介:模板引擎可以将数据与界面分离、前后端互不影响;页面渲染分为前端渲染和后端渲染,前端渲染使用ajax技术,后端渲染使用ejs、pug;
2.ejs模板使用:

  1. 安装: npm i ejs
  2. 配置ejs模板: app.set(‘配置项’,值)
app.set(‘view engine’,’ejs’); //设置模板引擎为ejs
app.set(‘views’,[‘模板文件存放目录1’,‘模板文件存放目录2’]); //设置模板文件存放位置
app.engine(‘html’,require(‘ejs’).__express); //将html文件作为ejs模板文件来解析

3.后端渲染: 就是当服务端接收到请求之后,将要渲染的数据在服务端解析完成,然后再将解析后的数据直接返回给客户端,客户端只负责展示数据,后端渲染的技术可以采用ejs、pug。

九、配置热更新(nodemon)

安装nodemon: npm i -g nodemon

十、数据库

1.概念:数据库是按照一定数组结构组织、存放、使用数据的仓库。
2.数据库分为关系型数据库与非关系型数据库:

  • 常用的关系型数据库有:mysql、sqlserver、oracle等;
  • 常用的非关系型数据库有: mongodb、redis、memcached等。

3.数据库的基础概念:

  • 数据库 —> 表 —> 数据
  • 记录:表中每一行称为记录(数据)
  • 字段:表中每一列称为字段
  • 主键:能唯一代表表中某条记录的列称为主键
  • 外键:当表中某一列的值是另外一张表中主键的值,那么该列称为外键

4.windows下启动、停止mysql数据库的方式有两种:

  • 在DOS命令窗口中输入

d:> net start mysql //启动mysql服务
d:> net stop mysql //停止mysql服务

  • 在windows的“服务管理器”窗口中启动/停止mysql服务

第一种: 右单击桌面”计算机”图标–>”管理”,打开”windows服务管理器”;
第二种:在“运行”框中输入命令:services.msc

5.windows下连接mysql数据库的方式有两种:

1、使用mysql自带的客户端应用程序mysql.exe连接mysql数据库:
注意: -h表示要连接的mysql主机 -u表示使用的mysql用户 -p表示用户密码
2、使用可视化客户端工具(navicat)连接mysql数据库:

6.mysql数据库常用的管理命令:

1、查看当前主机有哪些数据库:show databases;
2、打开(切换)数据库:use 数据库名;
3、查看某个数据库中有哪些表:show tables;
4、创建数据库: create database 数据库名;
5、删除数据库: drop database 数据库名; //慎重使用

7.mySql数据库的增删改查:

  • 添加数据

insert into 表名[(字段名1,字段名2…) ]values(‘值1’,‘值2’…)

  • 删除数据

delete from 表名 [where 条件]

  • 修改数据

update 表名 set 要修改的字段名1=‘值’,要修改的字段名2=‘值’… [where 条件]

  • 单表查询数据

select */字段名/函数/字符串 from 表名 [ where 条件 group by 字段名 order by 字段名
asc/desc limit m,n having 条件 ]

  • 联表查询数据

1、 全联接查询(inner join): select * from 表1 inner join 表2 on 条件 inner
join 表3 on 条件 [ where 条件 group by 字段名 order by 字段名 asc/desc
limit m,n having 条件 ]
全联接查询(inner join)的特点:
当要联接的表满足on条件时才会出现查询结果集中,否则不会出现在查询结果集中;
2、左联接查询(left join): select * from 表1 left join 表2 on 条件 left join 表3
on 条件 [ where 条件 group by 字段名 order by 字段名 asc/desc limit m,n
having 条件 ]
左联接查询(left join)的特点:
left join 左边的表不管是否满足on条件都会出现在查询结果集中,left join 右边的表如果满足on条件则会查询结果集中有具体的结果,否则left join右边的表在查询结果集中以null来显示。

8.sql注入: 利用sql语法本身的漏洞攻击数据库

十一、express通过mysql包操作mysql数据库

  1. 在项目根目录下安装mysql包: npm i mysql
  2. 创建mysql连接:let mysqlObj = mysql.createConnection({})
let mysqlObj = mysql.createConnection({host: '主机名',user: '用户名', password: '密码',port: 端口号,database: '数据库名'
})
  1. 连接mysql数据库: mysqlObj.connect()
  2. 执行sql语句: mysqlObj.query(‘sql语句’[,[参数]],回调方法);

十二、封装express操作mysql数据库的类

 const mysql = require('mysql'); //封装类(操作mysql数据库的类)
class DbMySql {//属性 //方法 constructor() {//创建mysql连接 this.mysqlObj = mysql.createConnection({host: "localhost",port: 3306,user: 'root',password: '123456',database: 'xxxx'});//连接mysql数据库 this.mysqlObj.connect();};//执行sql语句 querys(sql) {return new Promise((resolve, reject) => {this.mysqlObj.query(sql, (err, arr) => {if (err) {//失败 resolve([err]);} else {//成功 resolve([null, arr]);};});});};async exec(sqls) {let arrs = await this.querys(sqls);async function demo() {let obj = new DbMySql();let arr = await obj.exec('select * from xsb');console.log(arr, 8888);};};};

十三、模块化

1.commonjs语法(nodejs模块化语法)

单个暴露:
exports.属性 = 值
exports.方法 = function(){}
module.exports.属性 = 值
module.exports.方法 = function(){}
批量暴露:
module.exports = {}
注意:单个暴露与指暴露不能一起使用

2.使用nodejs模块化规范(commonjs)定义的模块只能在后端使用,但不能在前端使用,如果想在前端使用则需要使用工具browserify来编译代码。

1)、browserify官网:browserify.org
browserify主要用来将后台的代码编译成前端可以运行的代码
2)、安装browserify: npm install -g browserify
3)、browserify用法: browserify 源文件 -o 目标文件

3.前端(es6)模块化语法

1)、单个暴露
export var m = ‘mm’ export let n = ‘nn’ export function fn(){
}
2)、 整体暴露
let x = ‘xx’
let y = ‘yy’
let fn2 = function(){
}export { x,y,fn2 }
3)、使用模块:
import { 属性名/方法名… } from ‘文件路径’

注意:使用es6模块化语法定义的模块不能在vscode工具中直接运行,需要使用工具
babel将es6语法转换成es5语法,然后才能在vscode工具中运行:

1)、 babel官网:www.babeljs.cn
babel的功能:将es6语法转成es5语法、还能操作jsx语法(react)等。
2)、在dos小黑窗中安装babel-cli, babel-preset-es2015:
D:> npm install babel-cli -g
//在当前项目根目录中安装babel-preset-es2015包:
D:\web_xian> npm install babel-preset-es2015 --save-dev
–save-dev 开发依赖(开发阶段需要,上线不需要[因为已转换好了])
3)、在项目中定义babel配置文件:.babelrc文件,内容如下:
{
“presets”: [“es2015”]
}
4)、编译:
使用Babel将ES6编译为ES5代码(但包含CommonJS语法) :
如果想在前端中运行es6模块化的代码则需要使用Browserify编译js:

十四、使用Koa生成器快速部署项目:

  1. 安装koa生成器: npm i koa-generator -g
  2. 使用kao生成器部署项目:koa2 -e[使用ejs模板引擎] xxx(项目名称)
  3. 切换到baofeng项目目录中:cd xxx
  4. 使用npm install安装项目依赖包: npm install

十五、express与koa的区别

  1. express有中间件、koa没有;
  2. koa使用级联操作替代express中的回调函数;
  3. koa中的ctx封装了nodejs中的request对象、response对象;
  4. 取舍: express有丰富的中间件和包,如想使用这些中间件和包的话就使用express,koa强调的性能,同时可定制性比较高,如果想追求高性能及可定制开发的话就使用koa,另外之前的旧项目如果使用的是express则继续使用。

node与mySQL基本知识相关推荐

  1. vue+node.js+mysql项目搭建

    前言 用vue搭建前端页面.用node开发后端接口.数据库用mysql 可行性分析 缺点: nodejs单线程,不能做cpu密集型操作,导致时间片不能释放,阻塞后面的任务. nodejs可靠性比较低, ...

  2. MySQL索引知识总结

    对MySQL索引知识的总结笔记. 普通索引 索引是一种数据结构,主要用于性能的提高. 比如我们有一个表t_users,有4个字段: 1 2 3 4 5 6 7 create table t_users ...

  3. MySQL高级知识(十五)——主从复制

    前言:本章主要讲解MySQL主从复制的操作步骤.由于环境限制,主机使用Windows环境,从机使用用Linux环境.另外MySQL的版本最好一致,笔者采用的MySQL5.7.22版本,具体安装过程请查 ...

  4. node与mysql开源_node与mysql的相互使用————node+mysql

    node与mysql的相互使用----node+mysql 为什么选node???因为我是个前端. 为什么选mysql???因为成熟,稳定,听说容易学. 一.mysql数据库: mysql下载和使用我 ...

  5. 重新认识mysql基本知识

    重新认识mysql基本知识 新建本地数据库,mysql> show databases; 1 information_schema数据库提供了访问数据库元数据的方式.什么是元数据呢?元数据是关于 ...

  6. node --- 使用node连接mysql

    1.确保下载了mysql,且mysql处于打开状态. 2.确保下载了node,并成功安装:https://nodejs.org/en/ (小黑窗 node -v 查看) 3.安装node操作mysql ...

  7. node+koa2+mysql搭建博客后台

    本文将详细讲解使用node+koa2+mysql搭建博客后台的全过程. 开发环境 node 8.3.0及以上 npm 5.3.0及以上 mysql 5.7.21 具体的环境配置可查看我的上一篇文章 准 ...

  8. Node使用MySQL

    一.认识mysql2 如何可以在Node的代码中执行SQL语句来,这里我们可以借助于两个库: mysql:最早的Node连接MySQL的数据库驱动: mysql2:在mysql的基础之上,进行了很多的 ...

  9. node连接mysql,刚开始运行一切正常,后来连接失败报错。

    之前写了个小程序Node News,用到了MySQL数据库,在本地测试均没神马问题.放上服务器运行一段时间后,偶然发现打开页面的时候页面一直处于等待状态,直到Nginx返回超时错误.于是上服务器检查了 ...

最新文章

  1. MySQL从入门到精通50讲(四)-MySQL表操作创建表及删除表
  2. VUE - get 、post 请求后端接口:get 、post 写法 (Axios 中文说明文档地址)
  3. FastDFS学习笔记
  4. nginx 过滤post报文 防火墙_十八般武艺之Nginx踩坑总结
  5. 初学者python笔记(类的继承与多态---详解)
  6. android 记录崩溃日志
  7. 苹果发信用卡——大数据解读硅谷巨头如何发力金融科技
  8. html字体播放,Html 字体
  9. 企业微信接口下载微盘文件
  10. win10动态桌面_需要2020考研倒计时的动态桌面源的亲们在此留言
  11. PowerDesigner(数据库建模工具) 使用教程
  12. 阿里热修复方案Sophix
  13. 中嘉城湖靠谱国有企业要为实现人民对美好生活的向往不断奋斗
  14. 1004. 伊甸园日历游戏
  15. 网易互娱在线编程纪要
  16. 【验证码的识别】—— 极验验证码的识别
  17. 他狂骗五千万美元消失17年...却被一个纪录片导演锲而不舍的追到了镜头前!...
  18. 我的家庭网络拓扑结构
  19. 《CLR via C#》读书笔记---06 类型和成员基础
  20. Co-saliency 经典算法文献汇总

热门文章

  1. NPOI XSSFWorkbook样式设置
  2. IC读写器银河麒麟操作系统适配认证测试报告
  3. 手写简单版vue,深入理解vue的响应式原理
  4. 扫描发送显示检查服务器,扫描仪通过SMTP中继服务器发送通知邮件失败(示例代码)...
  5. 写起bug来更快了。。。。。。。送9个机械键盘
  6. linux 99乘法表脚本.md(含脚本注释,查看更直观)
  7. 聚观早报 |  iPhone 14 系列正式发布;腾讯增持育碧股票至9.99%
  8. 关于WML、HDML、CHTML、XHTML
  9. 瑞芯微RKNN模型转换和PC端仿真
  10. python输出一个简单的田字格、用函数简化其代码_Python练习100例,随时随地学习,菜鸟用了都说好...