《全端Web开发》读书笔记

                           

返回主页

1.因变而变

2.javascript和javascript工具

3.REST和JSON

一、因变而变

  1. REST(描述性状态转移)是基于HTTP开发的,也和HTTP结合在一起使用;
  2. 本质上说,REST定义了使用HTTP的吸纳之;
  3. 服务器驱动及组件方式开发,模糊了Web本质;
  4. 组件化方式易于引入脆弱的耦合,适配性也不好,很难插入不同的前端。

二、javascript和javascript工具

(此处均用js作为javascript简写)

  1. js是ECMAScript的参考实现,是一种Lisp方言; 使用js的函数式编程能力会更高效。
  2. js既支持函数式编程,又支持将函数作为一级对象;
  3. ECMAScript语言规范定义了三个执行上下文:全局、eval、函数;
  4. js无块级作用域,但有函数作用域;
  5. 函数声明在作用域执行时就已经存在,所以函数被提升到执行上下文顶端;
  6. 使用var关键字定义局部变量,没有使用该关键字定义的变量为全局变量;
  7. 函数式语言是指支持一级函数的语言;
  8. 函数是javascript中的基本单元,是一级对象;
  9. 匿名函数可在一个表达式中使用,也可以赋给一个变量;
  10. 匿名函数返回一个内部函数时,形成闭包(cloure);返回的对象包括函数本身,也包含创建函数时候的环境;

  11. 函数调用包括 . 函数 . 方法 . 构造函数 . 使用call或者apply

  12. 变量arguments保存所有传入函数的参数;
  13. 在javascript中,对象只是一组属性的集合;
  14. javascript本身没有内置输入/输出功能,这些功能是由运行时环境提供,此处多为浏览器;
  15. DOM是一种跨平台和语言无关的引用以及操作HTML元素的方法,它本身并不是javas的一部分;
  16. 开发大型的javascript应用的秘诀是:不要开发大型javascript应用;
  17. js一般应该在函数里使用var声明变量,防止污染全局变量命名空间;
  18. . 使用html定义页面的数据结构 . 使用css为数据结构增加样式 . javascript为页面增加交互功能

  19. 浏览器除了本身的作用还是一个IDE;
  20. 文学编程:将代码和注释组织成一种类似文章的格式。

三、REST和JSON

  1. 一旦引入一种服务,人们的第一反应是它不能做什么;
  2. REST是一种Web服务协议;
  3. REST直接依赖底层HTTP协议的功能,包括请求方法,URI地址和响应代码;
  4. REST用URL访问速度,是面向名词的;
  5. 罗伊·T·菲尔丁说:“表述性状态转移”(REST)架构是为了建模描述现代Web如何工作而开发的;

    技术上说,REST与协议无关,但却是和HTTP一起发展起来的;

  6. 资源泛指Web上的一切可识别、可命名、可找到并被处理的实体;
  7. REST使用web地址(URI)访问地址,使用动词(HTTP)请求,操作资源;
  8. RESTful的方式就是使用GET、POST、PUT和DELETE;
  9. REST架构规定:访问或修改Web上的资源,和访问或修改数据库中的记录一样;
    1. HTTP动词 对资源操作 对数据库的操作
    2. POST 新建或追加 insert
    3. GET 获取 select
    4. PUT 更新或新建 update
    5. DELETE 删除 delete
  10. HEAD方法和GET方法相同,区别在于前者响应不包含相应体;
  11. 跨域资源共享(CORS)技术通过HTTP头和服务器通信,返回JSON;
  12. 使用HTTP OPTIONS实现的系统可以通过一个链接,返回每个资源可用方法的完整列表;
  13. URI = URN + URL 即统一资源标识符 = 统一资源名 + 统一资源定位符 url语法: <scheme>://<user>:<password>@<host>:<port>/<path>;<parameters>?<query key/value pairs>#<fragment identifier>
    1. URL应当使用小写字母,使用连字符而不是下划线,结尾使用斜杠;
    2. 单个资源使用单数名词指代,一组资源使用复数名词指代;
    3. URL应该越短越好,易读,清晰,并在API之间保持一致。
  14. 服务器不维护会话,意味着客户端有了更多职责,因此会变得更复杂;
  15. REST要求对数据打标签,标明其是否可被缓存。
  16. REST要求,缓存可以存在于客户端(浏览器),服务端,或者位于两者之间(网关或代理服务器);
  17. 统一接口约束: . 标识资源 . 通过表示操纵资源 . 自描述信息 . 使用超媒体作为应用状态引擎
  18. HTTP响应代码首位数字及其含义
    1. 信息
    2. 成功
    3. 重定向
    4. 客户端错误
    5. 服务端错误
  19. 道格拉斯·克罗克福德将JSON描述如下:
    1. 一种数据交换格式(对XML的一种轻量级替代品)
    2. 一种编程语言模型,是js语言的一个子集 3.一种易于解析的格式
  20. HATEOAS:超媒体作为应用状态引擎 (Hypermedia As The Engine Of Application State)
  21. www其实是lambda演算的一种变体,而资源就是闭包

    POST方法是“apply”操作

    由资源构成的web其实就是一个闭包网络

  22. “限制越多越自由”

“限制的任意性,实质上是为获取执行时的精确度服务的”