学习前端时基础的一些概念

    最近学习移动应用开始时,接触的一些概念~。~

网页时如何构建的(DOM树):(。^▽^)点我~~

什么是开发框架:(●ˇ∀ˇ●)


Ajax (=异步传输(Asynchronous)+js+xml):传统的网页(不使用AJAX)如果需要更新内容,必需重载整个网页面。AJAX可以使网页实现异步更新,Ajax只取回一些必须的数据,它使用SOAP、XML或者支持json 的Web Service接口,我们在客户端利用JavaScript处理来自服务器的响应,这样客户端和服务器之间的数据交互就减少了,然后用户请求就得到了加速。。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。只要是JS调用异步通讯组件并使用格式化的数据来更新web页面上的内容或操作过程,那么我们用的方法就可算是AJAX。xml只是一种数据格式,在这件事里并不重要,我们在更新一行字的时候理论上说不需要这个格式,但如果我们更新很多内容,那么格式化的数据可以使我们有条理地去实现更新。现在大部分人其实是用JSON这种格式来代替XML的,因为前者更加简洁,据说目前的解析速度也更快。


Node.js :浏览器给网站(服务器)发送请求,传统的web服务器(比如Apache)服务器每接收了一个请求则会创建一个新的进程来处理这个请求,处理完后最后将响应结果传回浏览器。但是比如你要建一个人人网这样的社交网站,你的好友会随时的推送新的状态,然后你的新鲜事会实时自动刷新。要达成这个需求,我们需要让用户一直与服务器保持一个有效连接。目前最简单的实现方法,就是让用户和服务器之间保持长轮询(long polling)。

    那么什么叫长轮询呢?HTTP请求不是持续的连接,你请求一次,服务器响应一次,然后就完了。长轮训是一种利用HTTP模拟持续连接的技巧。具体来说,只要页面载入了,不管你需不需要服务器给你响应信息,你都会给服务器发一个Ajax请求。这个请求不同于一般的Ajax请求,服务器不会直接给你返回信息,而是它要等着,直到服务器觉得该给你发信息了,它才会响应。比如,你的好友发了一条新鲜事,服务器就会把这个新鲜事当做响应发给你的浏览器,然后你的浏览器就刷新页面了。浏览器收到响应刷新完之后,再发送一条新的请求给服务器,这个请求依然不会立即被响应。于是就开始重复以上步骤。利用这个方法,可以让浏览器始终保持等待响应的状态。虽然以上过程依然只有非持续的Http参与,但是我们模拟出了一个看似持续的连接状态

    我们再看传统的服务器(比如Apache)。每次一个新用户连到你的网站上,你的服务器就得开一个连接。每个连接都需要占一个进程,这些进程大部分时间都是闲着的(比如等着你好友发新鲜事,等好友发完才给用户响应信息。或者等着数据库返回查询结果什么的)。虽然这些进程闲着,但是照样占用内存。这意味着,如果用户连接数的增长到一定规模,你服务器没准就要耗光内存直接瘫了。

    这种情况怎么解决?解决方法就是刚才上边说的:非阻塞和事件驱动。这些概念在我们谈的这个情景里面其实没那么难理解。你把非阻塞的服务器想象成一个loop循环,这个loop会一直跑下去。一个新请求来了,这个loop就接了这个请求,把这个请求传给其他的进程(比如传给一个搞数据库查询的进程),然后响应一个回调(callback)。完事了这loop就接着跑,接其他的请求。这样下来。服务器就不会像之前那样傻等着数据库返回结果了。

    如果数据库把结果返回来了,loop就把结果传回用户的浏览器,接着继续跑。在这种方式下,你的服务器的进程就不会闲着等着。从而在理论上说,同一时刻的数据库查询数量,以及用户的请求数量就没有限制了。服务器只在用户那边有事件发生的时候才响应,这就是事件驱动。

    知乎是用基于Python的非阻塞框架Tornado来实现上面说的新鲜事功能的。不过,Node.js就比前者更妙了。Node.js的应用是通过javascript开发的,然后直接在Google的变态V8引擎上跑。用了Node.js,你就不用担心用户端的请求会在服务器里跑了一段能够造成阻塞的代码了。因为javascript本身就是事件驱动的脚本语言。你回想一下,在给前端写javascript的时候,更多时候你都是在搞事件处理和回调函数。javascript本身就是给事件处理量身定制的语言。(node.js - tornado - apache/tomcat)


V8引擎:https://zhuanlan.zhihu.com/p/27628685

npm是什么:npm是一个JavaScript的包管理程序,它的用途和.net中的NuGet,Java中的Maven是同一种作用。

    如果你已经使用过JavaScript,那么你可能已经听说过npm。npm为JavaScript开发者提供了一个分享代码的方式,同时也能够为开发者提供一个在他们项目中重用代码的方式

    这些被重用的代码被称为包(packages),有时候也被称为模块(modules)。一个包通常包含了一个或多个文件,同时也包含了一个定义了这个包元信息的文件“package.json”。在一个应用中,例如网站会依赖成百上千个包,这些包一般来说都比较小。通常情况下开发者创建一个包用于解决一个特定的问题。

    使用npm有很多益处。通过引入npm包你的项目团队能够借助其他开发者的力量解决特定的问题。即使你不使用其他开发者的代码,在你的项目中使用npm能够使你的团购很好的协同工作,同时也为代码重用提供了一个很好的方式。


本文内容集合于博客,知乎等网站,侵删 ( ఠൠఠ )ノ~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。