什么被认为是内联JavaScript? (审查速度/效率缓存比较)

时间:2015-12-10 23:36:52

标签: javascript html ajax

我有很多的内联javascript,但是只需调用以下函数:

<form id="some_id" style="x" method="post" onsubmit="return someFunction(this);"></form>

或&#34; onchange&#34;,&#34; onkeyup&#34;。我还在html中的<script>标签内写了一些脚本(不是很多),其余的都是外部的。上面显式的内部调用都被调用到外部脚本函数。

我选择这样做是因为考虑到许多带有元素插入的 async 调用并且需要监听器来注册这些更改,因此发现它更实用。这是$ .on(&#34;表单onsubmit&#34;,function(){不适用于没有监听器的附加async的新元素。

由于我的模板结构,我在服务器端构建新元素,并将它们直接附加到ajax回调上。

我的主文件.js(外部)位于1832行,我的包含file.js的索引文件大约有~500,〜350,内联javascript如上所示。

这说:

  • 如上所示,留下内联javascript是否会被视为一个巨大的缺陷(是的,我知道google会这样做),或者即使高标准也可以认为是可接受的?

  • 考虑&#34; 内联javascript未保存在缓存中&#34;,这究竟是什么意思?每次用户请求网页时,他都会提取整个&#34; onsubmit&#34;在上面的行?或者我错过了这句话的意思。

很抱歉,如果这个问题含糊不清,但我觉得我的服务大部分时间都没有完成,也不知道我是否应该完成这项工作:(非常感谢。< / p>

2 个答案:

答案 0 :(得分:0)

定义“巨大的缺陷”真的很难,所以让我们坚持专业和保持代码“按原样”的方式:

Pro:

  1. 您当前的代码有效:无需其他工作。
  2. Con's:

    1. 难以调试:你在许多地方分裂了JS,使用浏览器调试工具将难以跟踪一个错误。特别是对于那些“期望”(或者至少希望)按照以下方式组织代码的经验丰富的JS开发人员好的做法,比如分离HTML,JS和CSS。
    2. 速度:您的客户必须下载并解析每个查询的附加JS。如果您能够在主JS文件中分解所有这些方法调用,则不需要这样做。
    3. 模块化:您从HTML调用的所有方法都必须位于全局命名空间中。您编写的脚本将难以重用。
    4. 所以基本上,如果网站只是由你开发,我会保留这样的代码,不会被百万人使用,如果你不希望在另一个项目中重用任何这些代码。< / p>

      如果不满足任何这些条件,我会重构代码。

      此外,重构代码,并学习如何正确绑定处理程序是一个非常好练习,如果你打算学习更多的javascript。

答案 1 :(得分:0)

$('body')。on('onsubmit','form',function(){});

这将处理对DOM的任何未来更改。