layout: post title: tips1-初识后端nodeJs tags: [node] —
初识
node在公司里面主要是做为web项目。一个web项目的后端主要是做什么?
- 接收web请求
- 不管是get请求还是post请求,咱都得接收对吧
- 处理业务逻辑
- 比如下订单啊、注册啊登陆啊。不同的项目有不同的业务逻辑 主要是if else 之类调调函数
- 文件操作
- 要上传图片啊文件啊我们都得存在一个地方 这个时候我们就需要进行文件操作
- 数据库(关系型数据库
|非关系数据库 ) - 需要上传图片我们就不得不进行对图片的存储,这些东西存哪?这时候就得用数据库。数据库分两种,一种关系型数据库一种非关系型数据库。
- 反向代理(ip哈希、轮询)
- 比如百度,一台服务器肯定扛不住百度流浪,所以百度在很多地方都有一个大的机房,机房里面会有成百上千台机器。但是你的请求到底打到了哪里,是由这个机房的入口来决定的。这个入口从哪来?当你在浏览器输入url的时候,dns会给你解析出一个ip地址,这个ip地址就是你的机房入口。这个入口来分配你的请求,而这个入口就是反向代理。
- 啥叫ip哈希?比如192.168.1.1和172.啥.啥.啥,这些就是ip地址,如果我有10台机器,最后一个位数/10取余就是ip哈希。例如192%10 = 2,就达到第二台机器
- 啥叫轮询?就是排排坐吃果果的意思,一个个循环分下去,分到谁就是谁。
后端的规范与思想
1、后端分层
- web层(用来接收和发送http请求的,或传回来的是一堆参数,要封装成一些对象。又叫web层 controller层)
- 业务逻辑层(服务层,一般命名为XXXService)
- 一个服务就是一个功能,比如登录:LoginController(web层判断是否非法,传给服务层),LoginService(获取这个用户密码进行比较)
- dao层(Date Access Object)(用来操作数据库的,对数据的读写)
- DataBase(DB):存数据
- 业务:对对象进行操作
- 如果要存储,就得将对象转为数据,如果读取,就要将数据转换成对象
- 持久层(我们需要数据进行持久的保存,存在磁盘上)
- 采用通用的数据文件,所以就用到数据库,比如Mysql、MongoDB
### 小总结: 每层的命名:
- web层:LoginController(接收参数 判断是否非法,传给服务层)
- 服务层:LoginService(获取这个用户的密码,进行比较)
- DAO层:LoginDAO(从数据库获取数据并转换成对象)
- 持久层:文件或数据库代替这个角色,只是一个概念,用来存数据的
- Domain:User(实体对象,比如学生、老师这样的用户对象)
不同的层其实就是不同的文件夹
比如 一个项目里面分层可以是这样的:
- /web (这里存放所有的web层)
- /service (这里存放所有的服务层)
- /dao (这里存放所有的dao层)
- /util (这里存放你自己封装的小工具)
而我们的node就是用来操作层与层之间的交流的
2. 模块化
(1)es3、es5缺点:缺少模块化概念;es6有了导入导出 (2)Js规范缺乏管理机制,例如bootstrap、jQuery下载需要到官网下载,版本也有可能不一样,容易出错
node里面有个npm仓库,要下载东西通过npm inistall就可以下载需要的东西 (如果没有npm的话,试想下你同事徒手一个个安装插件的样子~~)