我眼中的js编程(1)--理解浏览器和web服务
js是用来做什么的?
- 在浏览器运营环境中,为网页赋予动态行为。怎么实现?ECMAScript(js核心)+浏览器的api。
- 在node环境中,实现web服务器。怎么实现?ECMAScript(js核心)+node的api。
浏览器和web服务器
浏览器通过url可以访问任意的服务器的www服务(web服务)。
协议
确定浏览器和web服务器的对话方式。服务器的公网ip
通过DNS解析为域名
,目的是域名比ip更好记,通过域名或ip找到服务器。一台服务器上有多种类型、每种类型有多种功能的服务,比如百度搜索、百度翻译等,通过不同的路径
找到不同功能的服务。一台服务器上可以有多种类型的服务如www服务、ftp服务、smtp服务等,服务器上的不同服务分配了不同的端口号
来区分,www服务默认80端口,浏览器中url不写端口号则默认访问服务器的80端口。如果服务器上的www服务设置了其他比如7070端口,则在url中要声明访问7070端口https://www.baidu.com:7070/s?tn=590
,否则仍然去访问服务器的80端口是没有www服务的。另外,服务端通过80端口与你的电脑通信,但你的电脑用的可能是3456这样的端口。查询字符串
是你的电脑向服务器发起www请求时携带的数据。你的电脑发起请求、服务器同意请求、服务器确认收到请求,三次握手后,client和server连接。
服务器提供www服务,通过浏览器以网页的形式来展示服务。client和server建立连接后,client浏览器会加载html、css、js到用户的浏览器客户端,此时浏览器显示网页,js用来处理服务器响应来的动态数据。服务器的www服务可以用node.js实现,也可以用php、java等其它语言来实现,用来给浏览器的请求响应数据。浏览器端(前端)的js和服务器(后端)的js(或php、java等)都可以处理数据,前者是在用户本地的浏览器客户端处理数据,后者是在远程的服务器处理数据然后再通过网络发送数据到用户的浏览器。
那么为什么有的数据在浏览器客户端处理、有的数据需要在服务器处理再发送回浏览器客户端?用浏览器环境的js处理数据基于两种需求:
-
交互效果。通过js和Browser API来实现各种交互。这个活儿只能浏览器端js来干,因为浏览器只有js引擎(解释器)没有php引擎java引擎。交互效果现在浏览器js的主要功能。
-
处理必要却不重要的功能数据,减少网络请求,提高用户体验。炫酷的交互效果只是锦上添花,但最核心功能才是根本,核心功能相关的数据处理,基本都在服务器端进行,然后通过通过网络响应给浏览器客户端,核心功能的大量数据需要数据库的支持,浏览器环境是没办法支持数据库的,只有在服务器端安装了node环境(或php环境等),js(或php等)才有读取本地文件的权限和能力,安装了数据库,才能读取并操作数据库文件。浏览器客户端的用户来自各行各业,是不可能装数据库的。当然这是开了个脑洞来阐述为什么需要在服务器端处理数据。但是~~~所有的除去交互效果相关的数据处理都要在服务器进行处理吗?比如电话号码的正则验证这一类,数据量小无需数据库、不需要高安全级别的数据处理,就可以放在浏览器端进行处理。
点击查看下一篇我眼中的js编程(2)
我眼中的js编程系列是我个人的学习总结,如有错误,烦请包涵、不吝赐教,O(∩_∩)O谢谢