很多新手前端在初期学习的时候往往把注意力放在如何编写页面,如何编写效果上,群里有个朋友问我js是如何与后台交互的,我简单的说一下。

  首先需要知道两个东西,一个是客户端,一个是服务器,客户端其实就是我们在上网时候使用的机器,大部分情况下这个客户端就是我们的电脑,包括台式电脑,笔记本电脑,手机,平板之类的。那么服务器是什么?服务器其实也是电脑,准确的说服务器是性能比较强大的电脑,正常情况下一台服务器可以连续半年甚至一年不关机,连续运行,这个技能我们家用电脑大多做不到。正是因为服务器可以保持长时间的运行,从而保证我们放在服务器上文件可以随时都被访问到.

  现在来看一下服务器和客户端之间的联系,这里就以网站为基础,通俗的解释一下。我们访问网站大多数使用的都是浏览器,通过在地址栏里面写下域名,按下回车就可以访问到我们想要访问的网站,那么这个具体的过程肯定不是那么简单,我们在地址栏中写下网址以后,按下回车,这个时候浏览器首先会访问自己所在的电脑上的host文件,查看host文件中是否记录有我们在地址栏中输入的域名,如果有,则找到与之对应的ip,访问去了。如果没有,它就要去到一个叫做dns的系统中,这个dns是存在于公网中的,他的作用就是保存许多域名和ip(真实的dns系统比这个复杂的多,这里只是方便理解简述一下),他找到dns以后,把域名告诉dns,让dns去查一下,看看有没有与之对应的ip,如果查到了,就会拿着ip去找那个网站去了!!这里说一下,ip实际上可以理解为地址,是我们存放程序时候标记的地址。域名只是为了帮助我们更好的记住,实际上真正要找到网站还是要靠ip。

  到此为止,我们已经找到了与这个ip对应的服务器,那么接下来解释两者互相对话啦,浏览器告诉服务器我要看首页,服务器回答好,然后把首页交给浏览器,去看吧!!这里我打了一个比方,事实上这个过程都是建立在网络通讯协议上的,其中有一个最常用的就是http协议,浏览器与服务器之间一切交流都是建立在这个协议之上的,这里我简单的讲一下这个协议吧,http协议分为两部分,分别是请求部分和响应部分,请求部分是又浏览器发出的,服务器接受到以后读取协议内容,然后发出响应,浏览器接受到响应的内容,并把它展示到电脑上。http协议中的请求部分分为请求行,请求头信息,请求消息体三部分,请求行包括我们想要访问的域名,协议等级,请求消息头包括具体访问的文件,连接长度,浏览器内核信息等,消息体则是浏览器发送给服务器上的具体数据,这个数据只有在发送方式为post的情况才会出现在消息体上,如果是get方式,则出现在地址栏中。服务器收到相关请求以后,开始分析具体要干什么,然后去执行,执行完成以后吧数据全部返回,相应部分就不详细说明了。

  还要注意一件事情,那就是服务器收到请求以后做的事情是如何完成的,我以PHP程序为例。假如服务器收到请求需要访问网站首页,那么首先就会去调取后台对应的首页文件,然后开始解析这个文件,解析的过程中,PHP就发挥作用了,比如说,页面中的数据都是依靠它来进去读取的,假如首页中有一块地方需要展示出今天的最新新闻,那么PHP就会调用相关程序,然后去访问数据库,把对应的数据从数据库中取出来,然后展示到页面中,以此类推,其他的的数据都是这样搞出来的。当然了,PHP还会做很多其他事情啊,比如判断登录状态,检测ip之类的,最后当PHP把所有要做的事情都做完以后,最后就是把处理好的文件返回给浏览器了,这里注意一下,服务返回给浏览器的其实就是已经生成好的静态页面了,里面没有一行后台代码,浏览器接收到这个返回到数据,然后开始逐行解析,最后展示给我们看。

  以上就是前后台交互流程。至于Js与后台交互,说白了,就是依靠js像后台发送数据,然后接受服务器返回的数据就是了。这里要说到一个技术就是ajax,其实整体的流程都是一样的,我们通过js的事件触发ajax,像服务器发送相关数据,服务器得到数据,处理完成以后返回给我们对应的数据,js可以获取到这个数据,然后该怎么处理就怎么处理,这个和我们上面说的流程基本一样,区别就是通过 js发送请求可以达到无刷新的效果,正常我们访问一个页面,服务器都是整个页面的返回给我们,如果是通过ajax的话,只会返回我们想要的数据,这样,是不会刷新页面的,加快了速度,减少流量的浪费,还有很多好处的,不多说了。(如果不了解ajax,那么可能需要首先学习下ajax哦!!)

  这篇文章没有一句代码,说的也不是很专业,只能作为入门来了解,有问题的地方,请大家多多指教!

js与后台交互详述(入门篇)的更多相关文章

  1. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

  2. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  3. 前端向后台的华丽转身 — PHP入门篇

    三个月就这么悄悄溜走了,本K对于前端虽然有了一定的认识,但对一些方面还是处于一种比较萌币的状态,就在这种萌币状态下,本K又跟着大神浩开始了后台语言-PHP语言的学习.PHP的学习对于学过其他语言的人来 ...

  4. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  5. web前端开发分享-css,js入门篇(转)

    转自:http://www.cnblogs.com/jikey/p/3600308.html 关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人 ...

  6. 【转】three.js详解之入门篇

    原文链接:https://www.cnblogs.com/shawn-xie/archive/2012/08/16/2642553.html   开场白 webGL可以让我们在canvas上实现3D效 ...

  7. web前端开发分享-css,js入门篇

    学习没有捷径,但学习是有技巧与方法.   一,css入门篇:   推荐书籍:css哪些事儿,精通css. 理由:css那些事儿,他是一本介绍css基础类的书,是入门的经典读物. 系统的介绍了css的选 ...

  8. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

  9. JS基础入门篇(三十五)—面向对象(二)

    如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)

随机推荐

  1. 解决nginx [error] open() "usr/local/nginx/logs/nginx.pid" failed错误

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之 后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/us ...

  2. centos7下安装vsftpd

    安装步骤: 创建ftp目录 cd / mkdir ftpfile 创建指定登陆用户并不让他拥有登陆系统的权限(设置指定登陆shell) useradd ftpuser -d /ftpfile/ -s ...

  3. 依赖于boodtrap3的插件推荐以及bootrap发展前景

    作为一个栅格系统和速度开发的,偏向于框架,bootstrap出来很火,为了节省效率,不少公司选用这个框架进行开发,一同被发现的是依赖于bootrap各种插件的adminLTE的集成模版,但是前端框架日 ...

  4. C# 13行代码带你模拟登录QQ空间

    最近想做一个QQ空间点赞的小工具,于是晚上下班回来就开始分析PC版的QQ空间,打开Chrome,切换到Network,然后输入账号密码,然后点击登录... 然后,我曹....一堆请求就开始了....搞 ...

  5. 在kali安装中文输入法的教程

    1终端下vi /etc/apt/sources.list  修改镜像元  (按E进行编辑 具体实例不同可能没有)  按 i进入编辑 擦除原有的几个官方源改为deb http://mirrors.ali ...

  6. freemaker中的map遍历

    前两天在freemaker中遇到一个问题,怎么遍历一个Map<List<Object>的map呢? 网上找个很多都是类似下面的: <#if map?exists> < ...

  7. caffe+GPU︱AWS.G2+Ubuntu14.04+GPU+CUDA8.0+cudnn8.0

    国服亚马逊的GPU实例G2.2xlarge的python+caffe的安装过程,被虐- 一周才装出来- BVLC/caffe的在AWS安装的官方教程github: https://github.com ...

  8. 1.2 PCI总线的信号定义

    PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备.这些PCI设备通过一系列信号与PCI总线相连,这些信号由地址/数据信号.控制信号.仲裁信号.中断信号等多种信号组成. PCI总线是一 ...

  9. Android WebView编程的那些坑(一)

    最大的坑是ROM不同,webkit不同,差异性很大.再加上google的坑,真是坑上加坑.比如js注入问题,比如client回调接口时序问题, 比如内存回收问题,etc 1.内存泄漏问题,尤其注意An ...

  10. TOE(TCP/IP Offload Engine)网卡与一般网卡的区别

    TCP减压引擎,第一次听说这个名词,但是并不是一个新的概念了,若干年前听说过设备厂商在研究在FPGA之中实现TCP Stack,但是后来没有听到任何的产品出来,应该是路由设备to host的traff ...