《全端Web开发》读书笔记
1.因变而变
2.javascript和javascript工具
3.REST和JSON
一、因变而变
- REST(描述性状态转移)是基于HTTP开发的,也和HTTP结合在一起使用;
- 本质上说,REST定义了使用HTTP的吸纳之;
- 服务器驱动及组件方式开发,模糊了Web本质;
- 组件化方式易于引入脆弱的耦合,适配性也不好,很难插入不同的前端。
二、javascript和javascript工具
(此处均用js作为javascript简写)
- js是ECMAScript的参考实现,是一种Lisp方言;
使用js的函数式编程能力会更高效。
- js既支持函数式编程,又支持将函数作为一级对象;
- ECMAScript语言规范定义了三个执行上下文:全局、eval、函数;
- js无块级作用域,但有函数作用域;
- 函数声明在作用域执行时就已经存在,所以函数被提升到执行上下文顶端;
- 使用var关键字定义局部变量,没有使用该关键字定义的变量为全局变量;
- 函数式语言是指支持一级函数的语言;
- 函数是javascript中的基本单元,是一级对象;
- 匿名函数可在一个表达式中使用,也可以赋给一个变量;
匿名函数返回一个内部函数时,形成闭包(cloure);返回的对象包括函数本身,也包含创建函数时候的环境;
函数调用包括
. 函数
. 方法
. 构造函数
. 使用call或者apply
- 变量arguments保存所有传入函数的参数;
- 在javascript中,对象只是一组属性的集合;
- javascript本身没有内置输入/输出功能,这些功能是由运行时环境提供,此处多为浏览器;
- DOM是一种跨平台和语言无关的引用以及操作HTML元素的方法,它本身并不是javas的一部分;
- 开发大型的javascript应用的秘诀是:不要开发大型javascript应用;
- js一般应该在函数里使用var声明变量,防止污染全局变量命名空间;
. 使用html定义页面的数据结构
. 使用css为数据结构增加样式
. javascript为页面增加交互功能
- 浏览器除了本身的作用还是一个IDE;
- 文学编程:将代码和注释组织成一种类似文章的格式。
三、REST和JSON
- 一旦引入一种服务,人们的第一反应是它不能做什么;
- REST是一种Web服务协议;
- REST直接依赖底层HTTP协议的功能,包括请求方法,URI地址和响应代码;
- REST用URL访问速度,是面向名词的;
罗伊·T·菲尔丁说:“表述性状态转移”(REST)架构是为了建模描述现代Web如何工作而开发的;
技术上说,REST与协议无关,但却是和HTTP一起发展起来的;
- 资源泛指Web上的一切可识别、可命名、可找到并被处理的实体;
- REST使用web地址(URI)访问地址,使用动词(HTTP)请求,操作资源;
- RESTful的方式就是使用GET、POST、PUT和DELETE;
- REST架构规定:访问或修改Web上的资源,和访问或修改数据库中的记录一样;
- HTTP动词 对资源操作 对数据库的操作
- POST 新建或追加 insert
- GET 获取 select
- PUT 更新或新建 update
- DELETE 删除 delete
- HEAD方法和GET方法相同,区别在于前者响应不包含相应体;
- 跨域资源共享(CORS)技术通过HTTP头和服务器通信,返回JSON;
- 使用HTTP OPTIONS实现的系统可以通过一个链接,返回每个资源可用方法的完整列表;
- URI = URN + URL
即统一资源标识符 = 统一资源名 + 统一资源定位符
url语法:
<scheme>://<user>:<password>@<host>:<port>/<path>;<parameters>?<query key/value pairs>#<fragment identifier>
- URL应当使用小写字母,使用连字符而不是下划线,结尾使用斜杠;
- 单个资源使用单数名词指代,一组资源使用复数名词指代;
- URL应该越短越好,易读,清晰,并在API之间保持一致。
- 服务器不维护会话,意味着客户端有了更多职责,因此会变得更复杂;
- REST要求对数据打标签,标明其是否可被缓存。
- REST要求,缓存可以存在于客户端(浏览器),服务端,或者位于两者之间(网关或代理服务器);
- 统一接口约束:
. 标识资源
. 通过表示操纵资源
. 自描述信息
. 使用超媒体作为应用状态引擎
- HTTP响应代码首位数字及其含义
- 信息
- 成功
- 重定向
- 客户端错误
- 服务端错误
- 道格拉斯·克罗克福德将JSON描述如下:
- 一种数据交换格式(对XML的一种轻量级替代品)
- 一种编程语言模型,是js语言的一个子集
3.一种易于解析的格式
- HATEOAS:超媒体作为应用状态引擎
(Hypermedia As The Engine Of Application State)
www其实是lambda演算的一种变体,而资源就是闭包
POST方法是“apply”操作
由资源构成的web其实就是一个闭包网络
- “限制越多越自由”
“限制的任意性,实质上是为获取执行时的精确度服务的”