Javascript或jQuery中脚本或插件的生命周期
Lifecycle of a script or a plugin in Javascript or jQuery
我几乎是web开发的新手,我正面对Javascript/jQuery。我想了解一个脚本是如何在一个html页面执行。我是一个C/Java程序员,参考这些语言可以帮助我。我明白,如果我们想在加载页面后执行脚本,可以将脚本插入标题或正文末尾。我知道DOM事件可以调用函数(我将事件与中断信号关联起来)。我想知道的是,如果像这样的脚本:
<script type="text/javascript">
//<![CDATA[
var i=10;
if (i<5)
{
// some code
}
//]]>
</script>
body或head元素中的只执行一次或连续执行。jQuery的行为方式与Javascript相同吗?那么插件呢?它们是否在页面显示的所有时间(如并行线程)或它们是事件驱动的(它们通过点击/调整大小等或使用计时器调用)?我知道这是一个非常普遍的问题,可能无法用几行话来解释,但是一些基本的解释和一些文档的链接将是非常感谢的。
谢谢!
jQuery只是一个用JavaScript编写的库,主要用于简化DOM操作和处理AJAX请求。如果您想了解JS是如何工作的,请暂时忘记jQuery。
关于脚本执行:浏览器解析HTML并从中创建DOM。当浏览器遇到<script>
标记及其内容时,它为其创建一个DOM元素,将其添加到树中并执行代码。然后继续解析下一个标记,这意味着代码只执行一次。
在解析过程中执行脚本的原因是,脚本已经可以立即操作HTML(例如使用document.write
(尽管不是很好的做法)),从而改变解析器必须解析的内容。脚本执行可以使用defer
属性延迟,直到文档被完全解析(直到现在我还没有在实时代码中看到这个属性)。
所有script
标记共享相同的作用域,全局作用域和执行环境持续存在,直到您离开或重新加载页面。因此,在一个脚本中定义变量并在另一个脚本中访问它是完全有效的,事实上,当你在页面中包含jQuery等库时,你正在做的就是
<script>
var foo = 'bar';
</script>
<!-- other HTML code -->
<script>
alert(foo);
</script>
您可能会发现关于script
的HTML文档很有帮助
脚本将从上到下执行一次,就像您在页面中加载的任何其他内容一样。然而,加载的一部分将与DOM(文档对象模型,或浏览器的网页的内部表示)交互,包括注册事件处理程序等;之后,像点击、AJAX响应等事件可以触发JS函数。
如果你习惯Java UI开发,那么回调和基于事件的编程对你来说会很熟悉;如果你习惯了过程编码,那么这将是一个学习曲线。
以上代码只执行一次。
jQuery是基于javascript的,是的,当然,它的行为方式与javascript相同。jQuery使javascript更简单,也可以处理浏览器特定的问题。
Javascript代码在运行时执行,如果它写在你的例子中,但它也可能是事件驱动的。在刷新浏览器页面之前,代码结果的生命周期一直保持不变。如果你使用了计时器,javascript的生命周期也可能是连续的。
有些脚本只是创建可以稍后由事件调用的函数和对象,有些脚本实际上在页面加载时对DOM做一些事情,有些脚本只是注册侦听器。
jQuery和他们的插件只是创建对象/函数,以后可以被事件处理程序调用。
- 组件生命周期问题/无法处理未定义的问题
- 渲染方法与生命周期方法中的React计算
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- 管理动态磁贴和应用程序生命周期
- 主干网的生命周期.js创建过程中的视图
- 使用Ember中的组件生命周期事件
- 关于Angular 1.5零部件生命周期挂钩
- 更新数据时的React.js生命周期
- 雷杜克斯.从容器组件描述表示组件的生命周期方法
- 增加服务工作线程的生命周期
- 是否有一种自动方法来确定(或查找)库的生命周期结束/支持终止通知
- 如何将请求生命周期事件封装在 happy.js 中
- 使用 Async.parallel 我的参数的生命周期不会超过使用 MongoDB 的 NodeJS 中的异步调用
- 聚合物元素注册和生命周期(创建和准备调用两次)
- E_UNKNOWN beforeCreate 和其他生命周期回调的响应错误
- Aurelia 组件生命周期中的远程服务
- 节点.js简单的 Web 服务器请求生命周期
- 角度引导程序生命周期:在完全加载后运行代码
- 主干提取集合生命周期,从响应设置属性
- JQuery 插件架构,用于定义对象和变量生命周期