2015年10月21日星期三

用spm2构建seajs项目的过程 - 桃子夭夭

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
用spm2构建seajs项目的过程 - 桃子夭夭  阅读原文»

前言

Javascript模块化规范有CommonJs规范,和主要适用于浏览器环境的AMD规范,以及国内的CMD规范,它是SeaJs遵循的模块化规范。因为以前项目中用SeaJs做过前端的模块管理工具,所以这里总结一下自己的使用心得。

在试用SeaJs和官方推荐的CMD包管理工具——Spm2.x的过程中,遇到了很多高低版本不兼容和配置参数没弄明白的问题,后来在网上各处找资料才大概弄懂。这里我强调一下版本,是因为可能有的同学项目开始较早,用了以前版本的Seajs,再去看Seajs官网的API有些地方会不适用!下面各节对框架的描述中也都会带上版本。

文中可能会有一些理解有误或者没讲清楚的地方,有大神路过恳请指导...

一个简单的DEMO

Seajs可以实现前端Js文件的按需加载和前端模块管理的功能,不熟悉Seajs API (v2.3.0)的同学可以看看这里,非常简单。

首先上一个使用Seajs的demo。目录结构如下:

html:

1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="UTF-8">
5 <title></title>
6 <script src="../js/lib/seajs1.2.0.js"></script>
7 </head>
8 <body>
9 <h1>spm前端构建测试</h1>
10 <script>
11 seajs.config({
12 base: '../js'
13 // paths:{'pathtest':'src'}, //生效版本:seajs2.3.0
14 });
15 seajs.use("src/eat.js",function(eat){
16 if(eat) eat.start();
17 });
18 </script>
19 </body>
20 </html>

eat.js

1 "use strict"
2 define(function(require,exports,module){
3 var rice=require("./rice"),
4 water=require("./water"),
5 i=require("./i");
6 exports.start=function(){
7 i.eat(rice.rice);
8 i.drink(water.water);
9 }
10 })

rice.js

1 "use strict"
2 define({rice:"i'm rice"})

i.js

1 "use strict"
2 define(function () {
3 return {
4 name:"tzyy",
5 eat:function(rice){
6 alert(rice+",Delicious!");
7 },
8 drink: function (water) {
9 alert(water+",爽!");
10 }
11 }
12 })

water.js

1 "use strict"
2 define({water:"i'm water"});

项目结构:

这样就实现的前端代码的模块化,和模块的按需加载、执行。

但是,这样还不够,我们打开Chrome控制台,network标签,刷新网页发现:

代码确实是模块化了,同时代码也分散到了各个文件中。当项目中的文件非常多,由于http请求是无状态的,每次都要建立、断开连接,另外浏览器下载静态文件的并发数量也是有上限的,会导致页面加载的速度比所有代码在同一个文件中要慢。

所以我们要对js文件进行压缩、合并。那么问题来了:

1.define函数是seajs提供的,require函数也是seajs给注入的,代码压缩,函数名字发生变化后seaj

IP、TCP和DNS与HTTP的密切关系 - __kelly_  阅读原文»

看了上一篇博文的发表时间,是7月22日,现在是10月22日,已经有三个月没写博客了。这三个月里各种忙各种瞎折腾,发生了很多事情,也思考了很多问题。现在这段时间开始闲下来了,同时该思考的事情也思考清楚了,所以打算继续写博客,分享我的工作上的经验总结和自己所接触的技术,让想多了解点技术的博友们可以互相交流和学习。

好了,废话不多说,直接进入主题,本次打算分享HTTP协议系列的相关文章,适合初学者学习,高手或者大神可以绕道,当然也可以一起交流交流。

这次先讲讲IP、TCP和DNS与HTTP的密切关系。

知识点

•IP协议的概念与作用
•TCP协议的概念与作用
•TCP协议的三次握手过程
•DNS的概念与作用
•HTTP与TCP、IP和DNS的关系
  

一、IP协议的概念与作用

IP的概念:

英文为Internet Protocol,翻译成网际协议,位于网络层。

这个网际协议这个名字听起来有点夸张,但事实就是这样,因为几乎所有使用网络的系统都会用到IP协议。TCP/IP协议族中的IP指的是网际协议,它在协议名称中占据了一半的位置,从这可以知道IP协议是多么的重要。这里我们需要注意两个概念,IP和IP地址,可能有人会把它搞混。IP其实是一种协议的名称,而IP地址是一个地址。

IP的作用:

把各种数据包传送给对方。如果要保证确定传送到对方那里,则需要满足各类条件,其中最重要的两个条件是IP地址和MAC地址。

(1)IP地址:指明了节点被分配到的地址

(2)MAC地址:是指网卡所属的固定地址

(3)区别:IP地址可变换,但MAC地址基本上不会更改。

如果你想要保证数据包传送到对方去,那就必须满足各种条件,其中最重要的两个条件是IP地址和MAC地址。

什么是IP地址呢?IP地址指明了节点被分配到的地址。而什么又是MAC地址呢? MAC地址的网卡所属的固定地址。形象一点来说,MAC地址就像我们的身份证号,每一个MAC地址是唯一的,并且基本不会改变。这里我为什么说基本不会改变呢?因为目前我们可以通过软件修改,也就是用软件来修改MAC地址。IP地址是可以和MAC地址进行配对的。

我们来了解一下使用ARP协议凭借MAC地址进行通信

什么是ARP协议呢?ARP协议它是一种用以解析地址的协议,我们只要知道通信方的IP地址,就可以反查出对应的MAC地址。也就是说IP间的通信依赖于MAC地址。

我们来看一下这个图:

在网络上,通信的双方通常都是要经过多台计算机或者网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时我们就是靠ARP协议来进行处理。

二、TCP协议的概念与作用

(1)TCP的概念:TCP英文为Transmission Control Protocol ,翻译成传输控制协议,位于传输层。

(2)TCP有什么作用呢?它是提供可靠的 字节流服务。

(3)什么是字节流服务?所谓的字节流服务指的是,为了方便传输,将大块数据分割成 以报文段为单位的数据包 进行管理

(4)为何强调可靠呢?因为它能够把数据准确可靠地传送给对方。总而言之,TCP协议就是为了 更容易传送大数据 才把数据分割,而且TCP协议能够确认数据 最终是否送达对方。

(5)TCP协议如何才能保证提供可靠的服务?它采用了三次握手策略。 也就是用TCP协议 把数据包送出去后,它不会对传送后的情况置之不理,它一定会想对方确认 是否成功送达。

三、TCP协议的三次握手过程

我们来看一下这个图:

握手过程中使用了TCP的标志-SYN和ACK。发送端首先发送一个S带SYN标志的数据包给对方。接收端接到后,就会回传一个带有SYN/ACK标志的数据包 以表示传达确认信息。最后,发送端再回传一个带ACK标志的数据包 给接收端, 此时代表“握手”结束。除了三次握手来保证通信的可靠性,TCP协议还有其他各种手段来保证通信的可靠性,这里我就不过多讲解了,大家可以自己翻阅相关资料去了解下。

四、DNS的概念与作用

(1)DNS的概念:英文为Domain Name System ,翻译成域名系统,位于应用层。

(2)DNS有什么作用呢? 它是提供域名到IP地址之间的解析服务。

我们平时访问一个网站,通常都是使用主机名或域名来访问,而不是直接通过IP地址来访问。为什么我们不用IP地址去访问呢?因为IP地址是一组纯数字,比较难记。比如说,我们极客学院的IP地址为121.42.104.52,而域名为www.itcen.cn。 如果我们用IP地址去访问网站,那是很难记得住的。而用域名就比较容易记住了。但是呢,计算机和人不一样,你要计算机去理解名称,相对来说就比较困难了。计算机比较擅长处理一长串数字。为了解决这个问题,就有了DNS服务。DNS协议它是提供 通过域名 来查找IP地址,或者逆向 从IP地址反查域名 的服务。

五、HTTP与TCP、IP和DNS的关系

最后我们通过一张图来了解一下HTTP与TCP、IP和DNS的关系,看看它们在通信的过程中各种发挥了什么作用。

我来拿我的博客来举个例子:

首先是,我想访问网站,将域名发送给DNS去解析,DNS解析后将网站的IP地址返回给客户端,然后通过IP地址发起HTTP请求。HTTP此时的作用是 生成针对目标WEB服务器(我们这里指的是网站的服务器)的HTTP请求报文,然后将请求报文传送给传输层,此时为了方便通信,TCP会将HTTP请求报文 分割成报文段,这些报文段会有一个序号,这里的报文段哪一个先发送哪一个先到达,它们是按序传送的。只要建立起TCP连接,客户端与服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序。接着到了网络层,此时IP协议的职责是,搜索对方的地址,一边中转一边传送。然后找到了服务器的位置,此时服务器的传输层中 TCP的职责是 接收到对方传送过来的报文段后,对其进行重组,这里的重组是按序号进行重组的。然后到了服务器的应用层,HTTP会对客户端请求的内容进行处理。处理完后,服务器同样会利用TCP/IP通信协议向客户端进行回传响应。最后客户端收到响应后,将内容输出页面显示。即完成了一次HTTP事务。

  如果此博文中有哪里讲得让人难以理解,欢迎留言交流,若有讲解错的地方欢迎指出。

  

  如果您觉得您能在此博文学到了新知识,请为我顶一个,如文章中有解释错的地方,欢迎指出。

  互相学习,共同进步!


本文链接:IP、TCP和DNS与HTTP的密切关系,转载请注明。

阅读更多内容

没有评论:

发表评论