Ela*_*eli 1 javascript php web angularjs
我对整个网络应用程序和网站世界都是新手,但我开始编程并构建我自己的网络,使用angular,我觉得客户端渲染的想法非常舒服,并且在角度中使用AJAX($ HTTP/$ RESOURCE),但我没有使用"遗产"apporach来建立网站,因为我跳起角度,因为它听起来像最好的新!
但是当我了解到我的道路上有很多障碍因为传统网站技术缺乏知识以及所有的发展方式,我想知道网站是如何开始的,以及对这个世界有什么吸引力,以及如何服务器端渲染是否正常工作,因为我理解所有这些,就是这么简单我有模板,并且侧客户端的JS执行所有操作,添加/删除div等,并且没有任何与服务器的连接关于渲染DOMS的一面,只能通过使用http或资源来获取信息..我想知道php服务器端是如何工作的.
渲染有两种不同的含义,这可能会让你感到困惑.
Angular可以获取一条"原始"信息并"渲染"显示该数据所需的DOM元素.例如,数据可以是JavaScript对象,可以从某个API获取JSON对象.
在服务器与客户端上呈现
在更传统的方法中,HTML代码来自服务器"预呈现".这意味着服务器包含静态HTML(只是您可以在记事本中键入的HTML文件),或者像PHP这样的服务器端脚本,它将使用其中的所有数据"呈现"HTML代码.服务器返回此HTML源代码,浏览器只是"呈现"它.
因此,"在服务器上呈现"意味着获取模板和数据并将它们组合成原始源代码.并且"在客户端上呈现"传统上意味着获取HTML源代码并将其显示在屏幕上.Angular使用第三种变体,这意味着执行DOM操作以将数据"呈现"到文档中.但我稍后会谈到的.
因此,服务器端呈现并不意味着(现在或以前)实际显示(您查看的页面)在服务器上呈现.甚至DOM都不在服务器上呈现.服务器只是从它获取的数据中呈现文本HTML源代码,而客户端(浏览器本身)仍然生成DOM并对页面进行图形呈现.
因此,PHP也不会直接响应按钮.它仅响应HTTP请求,HTTP请求可以源自键入的URL,正在访问的链接,正在发布的表单或正在执行的AJAX请求.
HTML具有内置行为
传统的HTML具有内置行为,这就是为什么它可以在没有任何客户端脚本的情况下工作的原因.由于脚本,普通超链接不可点击,但因为浏览器知道此元素及其意图.因此,从一个页面跳到另一个页面的逻辑内置于浏览器本身.形式也是如此.浏览器知道单击提交按钮时应将表单数据发送到服务器.您在HTML中所做的就是定义(在表单属性中)URL是什么,方法以及按下哪个按钮来发送信息.同样,不需要脚本.
客户端JavaScript可以操纵已加载的页面
客户端进程实际上是一个两步过程.首先,解析HTML源代码并将其转换为DOM文档,即包含有关元素信息的内存中对象列表.然后在屏幕上呈现(显示)该文档.
JavaScript(包括jQuery或Angular)也可以使用这些内存中的对象.它可以将事件绑定到它们,因此您可以在发送之前验证表单输入(节省执行往返的时间,服务器端检查和解析完整的响应页面),或响应对任何元素的单击.您甚至可以通过更改其内容,外观,删除它们或添加新对象来操纵对象本身.
所以JavaScript的方法似乎介于两者之间.您不必实际绘制所需的更改,但您也不必依赖HTML加载.您可以直接访问对象,并且您对它们所做的任何更改都会自动反映在浏览器的显示屏上.因此,您可以插入一个额外的元素对象,它将自动显示在屏幕上.
这就是使JavaScript如此快速和强大的原因.这种方法比从服务器加载大量HTML更直接.所以在过去,你可以从一个页面跳到另一个页面,整个页面需要重新加载和重新渲染.使用JavaScript,您可以进行小型交互,使用AJAX,您可以从外部源获取信息,并在页面上显示该信息,而无需重新加载整个页面.
NB.顺便说一下AJAX也不是很新.它是微软多年前发明的,用于构建基于Web的丰富Outlook版本.AJAX中的X代表XML,现在它被JSON取代,作为传递这些信息的选择符号.
Angular'隐藏'这个DOM操作
Angular只是一个抽象JavaScript可以做的所有DOM操作的框架.它允许您在HTML中放置标记,并在JavaScript中操作对象数据,它会自动将这些标记放在一起以更新页面.这样可以更轻松地在高级别上构建Web应用程序.您只需要担心设计和数据,并且将它们组合在一起的大部分技术性都被取消了.
除此之外,Angular并不比JavaScript DOM操作的任何其他方式更多.它只是让你弄乱当前加载的文档,这是服务器端脚本无法做到的.
但是,在大多数情况下,服务器(和服务器端脚本)仍然起着重要作用.正是这个服务器端进程现在"呈现"由Angular应用程序提取的JSON数据.也就是说,除非您有一些应用程序不需要从其他任何地方加载任何其他数据.