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的话,试想下你同事徒手一个个安装插件的样子~~)