nodejs总结

http://www.runoob.com/nodejs/nodejs-callback.html

1. node.js是什么?

node.js是一个让javascript运行在服务端的开发平台

nodejs开放了js的能力, 让它可以访问文件, 读取数据库, 可以访问进程, 所以可以做后端

https://blog.csdn.net/lucky_lxg/article/details/54575515

2. 为什么选用 JavaScript

Node.js采用C++语言编写而成,是一个Javascript的运行环境。为什么采用C++语言呢?据Node.js创始人Ryan Dahl回忆,他最初希望采用Ruby来写Node.js,但是后来发现Ruby虚拟机的性能不能满足他的要求,后来他尝试采用V8引擎,所以选择了C++语言。

Node.js采用了Google Chrome浏览器的V8引擎,性能很好,同时还提供了很多系统级的API,如文件操作、网络编程等。

Node.js是一个后端的Javascript运行环境(支持的系统包括*nux、Windows),这意味着你可以编写系统级或者服务器端的Javascript代码,交给Node.js来解释执行

3. 10个常见的Node.js面试题

https://www.jianshu.com/p/3416a0bf309c

4. nodejs面试题大全, 侧重后端应用与对node核心的理解

http://www.cnblogs.com/meteorcn/p/node_mianshiti_interview_question.html

5. 设计API的时候考虑怎么样的设计

REST API的设计

前言

客户端通过请求URL,传递参数,去获取指定的数据,这就是API(ApplicationProgramInterface)。

API是前端和客户端操作后端数据的一种方式,一种接口。当一个Web应用以API的方式对外提供功能和接口时,整个应用的架构模式是这样的:

nodejs总结_第1张图片

但是,URL怎么约定,参数以什么编码方式传,响应数据的格式是什么样的,以及响应码怎么约定,API版本升级怎么设计,这些问题是设计这些API的后端人员不得不考虑的问题。

2000年,Roy Fielding博士在论文中提出REST(Representational State Transfer)风格的软件API架构模式。该模式对上面的问题提出了针对性的解决方案,迅速被大家接受,逐渐流行起来。

REST是一种API的设计模式,它将数据库的数据看做是一个个的资源。客户端的请求就是对这些资源的操作,这些操作无外乎增删改查四种。这种模式简单易读,易于维护。

这种设计模式提倡我们遵循以下原则。

数据格式

REST提倡数据格式应该使用轻量级,易于阅读的json格式。这要求我们除了GET请求方式外,其他请求方式的请求体都应该是json,响应体也是json。 所以,请求头和响应头的Content-Type都应该为application/json

请求方式

REST将请求看做是对某个资源的增删改查操作,正好对应了Http请求的GET,POST, PUT, DELETE 4种请求方法。 对应关系如下:

  • 获取资源:GET方式

  • 创建资源:POST方式

  • 更新资源:PUT方

  • 删除资源:DELETE方式

URL设计

REST提倡声明式的URL设计。URL设计需要考虑层次化,可扩展,易于维护。每一个URL都表示对某个资源的操作,假设我们要操作服务器的博客数据,可以这样设计:

  • 通用的资源操作方式:

      // 获取所有博客
      GET /api/blogs  
      // 获取指定博客
      GET /api/blogs/1234
      // 创建博客
      POST /api/blogs
      // 更新指定博客
      PUT /api/blogs/1234
      // 删除指定博客
      DELETE /api/blogs/1234
  • 资源的过滤操作,使用查询参数来限定条件:

      // 分页获部分博客
      GET /api/blogs?page=1&size=15&sort=time  
  • 按层次组织资源:

      // 获取某个博客下面的所有评论
      GET /api/blogs/143/comments

    层次化的设计有可能会让URL太长,不便于阅读,比如:

      // 获取某个博客下面的某个评论的某个回复
      GET /api/blogs/123/comments/12343/replys/2231

    所以,我们也可以使用扁平化的方式设计所有的资源:

      // 获取某个博客的所有评论,使用查询参数来限定条件
      GET /api/comments?blogId=123
      // 获取某个评论的所有回复
      GET /api/replys?commentId=123
  • API的版本升级。 我们的API会不断的更新迭代,比如:获取所有订单的URL参数多加了一个时间戳。如果我们直接更改原来接口的逻辑,会导致旧版本的客户端获取失败。因此,通过添加一个路径/v1来让我们的API更加维护性。

      // 获取所有订单, 第一版
      GET /api/v1/orders
      // 获取所有订单, 第二版
      GET /api/v2/orders

响应设计

响应设计分为数据结构设计和响应码设计。

  • 响应数据结构设计

    客户端对资源的操作有可能成功,也有可能失败。以前我一直使用使用这样的数据结构:

      {
          code: 1/0, // 会有很多标识码,11, 12, 13 ...
          msg: "获取成功/获取失败",
          data: [...]/{}
      }

    整体的结构一定不能变,数据的变化体现在data字段。这样非常方便客户端的解析或者序列化(静态语言)。

  • 响应码设计

    响应码分为http响应码和逻辑响应码。http响应码很简单,如果成功就200,服务器出错就500。而逻辑响应码则是需要自己来定义,比如:1表示用户不存在,2表示密码错误。

6. 项目小结

前后端分离最极致作法是:前端和后端各自独立编写,独立部署,通过API接口进行交互。他们看起来像这样:

nodejs总结_第2张图片

7. 常见的状态码

200 OK 服务器成功处理了请求(这个是我们见到最多的)
301/302 Moved Permanently(重定向)请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置
304 Not Modified(未修改)客户的缓存资源是最新的, 要客户端使用缓存
404 Not Found 未找到资源

501 Internal Server Error服务器遇到一个错误,使其无法对请求提供服务

 

 

 

 

 

 

8. MVC与三层架构的区别

①.各自原理

前提当然是要搞懂这两者的联系了

三层架构是最基本的项目分层结果,而MVC则是三层架构的一个变体,MVC是一种好的开发模式。
首先你要明白MVC分别代表的是什么意思.

  1. M 即Model(模型层),主要负责出来业务逻辑以及数据库的交互
  2. V 即View(视图层),主要用于显示数据和提交数据
  3. C 即Controller(控制器),主要是用作捕获请求并控制请求转发

三层:UI 界面层 BLL 业务逻辑层,DAL数据访问层,Model 实体层
MVC中的的M 不是三层中的Model(实体层),他其实包括三层中的 BLL,DAL,Model,这是非常要注意的,这也是他们之间的区别的关键所在

三层是基于业务逻辑来分的,而mvc是基于页面来分的

MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话

②.区别之处

  • 在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是已实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
  • 首先,MVC和三层架构,是不一样的。
    三层架构中,DAL(数据访问层)、BLL(业务逻辑层)、WEB层各司其职,意在职责分离。
      MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。所以, .net的三层结构中,并没有action这个概念。
  • MVC模式是一种复合设计模式,一种解决方案;三层是种软件架构,通过接口实现编程
  • 三层模式是体系结构模式,MVC是设计模式
  • 三层模式又可归于部署模式,MVC可归于表示模式

你可能感兴趣的:(nodejs,小项目,巩固)