Heim >Backend-Entwicklung >PHP-Tutorial >javascript - 请问做一个动态网站的原理是什么呢?

javascript - 请问做一个动态网站的原理是什么呢?

WBOY
WBOYOriginal
2016-06-06 20:11:461141Durchsuche

其实我对制作网页时间也不长,但是我以前用 vb vc 写过游戏辅助软件,对编程还是了解点的;
我经过一段时间学习,对js,php,sql,html 函数,对象,语法变量也都有一定的了解了;

我会用php 配合 sql 在 MySQL 提取数据;
也会用css改界面样式;
也会用JavaScript处理一些事件;
但是我不会连起来用........

比如别人提交了一个信息之后,
我会返回一个独一无二的网址,就比如我们都在

segmentfault.com
但是我的页面是:
https://segmentfault.com/u/duofei/;
你的就是一个
https://segmentfault.com/u/乐于助人的好人甲/

我们的主页分别有我们的文章数,提问数,回答数,等等等;

我想问问,这个过程是怎么回事?

当然,我会 用 PHP echo"

.. .." 出一个网页,
但是我觉得不可能一个网页是用 PHP echo 做的,肯定是先设计好一个 html 网页,存到服务器的硬盘;

然后还有 js ,css文件,也存到服务器,你点的时候,连接到事先准备好的html文件,把js,css等文件下到你电脑的缓存;

然后你的电脑去解析这个html,执行css 样式表 和 js 文件,把html 的文章啊,粉丝啊,提问啊,回答啊,积分啊,都反馈给你;

我想问问,这些都是怎么回事?我还得学什么,才能独立的弄个简单的网站?

回复内容:

其实我对制作网页时间也不长,但是我以前用 vb vc 写过游戏辅助软件,对编程还是了解点的;
我经过一段时间学习,对js,php,sql,html 函数,对象,语法变量也都有一定的了解了;

我会用php 配合 sql 在 MySQL 提取数据;
也会用css改界面样式;
也会用JavaScript处理一些事件;
但是我不会连起来用........

比如别人提交了一个信息之后,
我会返回一个独一无二的网址,就比如我们都在

segmentfault.com
但是我的页面是:
https://segmentfault.com/u/duofei/;
你的就是一个
https://segmentfault.com/u/乐于助人的好人甲/

我们的主页分别有我们的文章数,提问数,回答数,等等等;

我想问问,这个过程是怎么回事?

当然,我会 用 PHP echo"

.. .." 出一个网页,
但是我觉得不可能一个网页是用 PHP echo 做的,肯定是先设计好一个 html 网页,存到服务器的硬盘;

然后还有 js ,css文件,也存到服务器,你点的时候,连接到事先准备好的html文件,把js,css等文件下到你电脑的缓存;

然后你的电脑去解析这个html,执行css 样式表 和 js 文件,把html 的文章啊,粉丝啊,提问啊,回答啊,积分啊,都反馈给你;

我想问问,这些都是怎么回事?我还得学什么,才能独立的弄个简单的网站?

MVC框架模式,html模板和后端代码分离,实现各自的操作;
来回答你的问题,为什么每个用户在同一个界面所显示的效果(数据)不一样呢?其实也很简单,在数据表中分别是不同的用户存储的信息也就不同,而存储这些信息可能由多个表组成。就像每个人的主页,以我的主页举例:
javascript - 请问做一个动态网站的原理是什么呢?

这里多个不同的区块之间的统计和输出就由mysql语句、PHP代码、和前端html文件之间的配合实现。例如:图片左边的统计,举例:我的回答的次数,或许在数据表中就有这样一个字段,我每回答一次问题,这个字段里的数据就会自加1,然后当我进入这个页面的时候,mysql直接读取我这个字段的值就好了(当然,更复杂的数据统计也皆由sql语句实现,而且这些数据皆是在数据表中读取),再由PHP代码在html页面输出;

这之间的开始、过程、结束,皆由sql语句、php(或者其他后端语言)、前端代码(html、css、js等)构成。

动态网页是将页面的数据逻辑和显示逻辑分开的东西,显示逻辑就相当与HTML布局的固定部分,比如某个div的定义部分,而其中的数据内容比如

<code><div>[there are some php echo]</div></code>

这样来实现动态页面的,当然了,你也可以将div的echo出来

你可以去研究下thinkphp了

简单的说一下,很多细节不完全准确。
动态网站的根本原理在于html文件可以不是一个硬盘上存好的文件,而是可以直接由程序动态生成,也可以动态修改。

比如你访问'https://segmentfault.com/u/乐于助人的好人甲/'这个URL
服务器收到你的访问请求之后,把'乐于助人的好人甲'从URL里提取出来,到数据库里查到对应ID的资料,然后生成一个包含html文件信息的字符串填入这些资料,比如
<title>乐于助人的好人甲</title>男,回答xx,提问xxx,声望……,这些数据无需保存到磁盘上,直接用网络传输给你的浏览器,浏览器把它当作文件解析出来,你就看到结果了。
有一些相同的东西比如<title>{{ }}</title>{{ }},回答{{ }},提问{{ }},声望{{ }}……,如果每次都动态生成效率就太低了,我们可以把这些保存成一个模板文件,这样查看个人主页时,不同的ID把信息分门别类填入对应的括号里就行了。
此外还可以通过javascript在浏览器已经加载出页面之后,动态的从服务器获取数据然后更新html页面。

我认为楼主的最终目的是写个简单的网站,可以先从搭建一个服务器开始,这样可以去了解代理、路由等这些是怎么回事,如果只是想写个可访问的页面,可以在新浪云做代码管理

1、前端页面
2、后台管理
3、数据库连接
4、表单设计
5、表单处理

当你在浏览器输入用户名密码后浏览器发送数据给服务器,服务器端的PHP根据你输入的内容去查找用户,然后返回你自己的页面。返回的里面的动态数据是PHP生成的,PHP从数据库里找到然后放到HTML里的,HTML里的其他固定内容(像网页的结构什么的)是存在服务器的里的html文件里的(也许是寸在几个不同的文件里,然后PHP把他们和从数据库里查询的信息整合在一起发给你的浏览器)。然后浏览器收到HTML文件,看看里面应用了哪些css,javascript和图片文件,然后向服务器请求这些文件,得到这些文件后才能将整个网页渲染出来。

先了解一下这个~当你在浏览器中输入 google.com 并且按下回车之后发生了什么?
了解完以后,简单说一下。
比如这个url:https://segmentfault.com/u/duofei/
/u/duofei/ 里面包含了两个参数,服务器上的动态语言会根据该参数去数据库查询,并将结果返回。比如有可能是查询user表里,用户名为duofei的用户。

暴力一点:-)

https://segmentfault.com/u/duofei/实际上是一个服务器上的一个function,你用浏览器打开这个url就是调用这个function参数是由浏览器发送的,然后服务器等function运行完把return value(可能是html)给你,浏览器再把这个html渲染成你看到的样子

顺便说一下我省略了很多很重要的东西,但其中的socket题主需要的

感觉B/S其实就是特化(HTTP)的C/S

其实动态网站比静态网站就多了一点东西,本质来说就是你请求一些文件,服务器发送给你一些文件,你浏览器解释一些文件罢了。
在你发送请求之后,服务器发送给你一些文件之前先经过服务端语言(php、jsp等等)处理一下
如何处理的?为什么每个人的sf页面不同?
这些是基于从数据库取出数据,并根据数据生成页面内容。动态的要点就是:这些数据是在改变的。比如你访问小明的站点,他今天写了一段话(日志数据更改),造成粉丝关注度大涨(粉丝数据被更改),或者修改了状态(状态数据更改)等等,然后服务端语言从数据库调取数据的时候,加上一些逻辑,比如根据粉丝度进行排行,那些粉丝度高的就被生成到前面,最终就是访问的页面和上次不一样(因为数据改变了,导致生成的页面就不一样了)。然后服务端把一坨html,css,js等发给你,你浏览器乖乖的按照规则显示绚丽的页面,并执行js代码。配合js,你在页面上的一些实时操作,js会把这些操作数据发到服务器,服务器再返回一些数据,js由这些数据再去更改一些页面内容,浏览器显示。就是这样子...

原理就是:动态的改变网站结构,就是进行数据交互

动态网站其实就是把数据库的数据和前台用户进行交互操作提供一个渠道

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn