Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是内联javascript?(审查速度/效率缓存比较)_Javascript_Html_Ajax - Fatal编程技术网

什么是内联javascript?(审查速度/效率缓存比较)

什么是内联javascript?(审查速度/效率缓存比较),javascript,html,ajax,Javascript,Html,Ajax,我有很多内联javascript,但除了调用以下函数外,什么都没有: <form id="some_id" style="x" method="post" onsubmit="return someFunction(this);"></form> 或“onchange”、“onkeyup”。我也有一些脚本(不是很多)用html写在标记中,其余的都是外部的。上面显式的内部调用都被外部脚本函数调用 我选择这样做是因为考虑到许多带有元素插入的异步调用,并且需要侦听器来注册

我有很多内联javascript,但除了调用以下函数外,什么都没有:

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

或“onchange”、“onkeyup”。我也有一些脚本(不是很多)用html写在
标记中,其余的都是外部的。上面显式的内部调用都被外部脚本函数调用

我选择这样做是因为考虑到许多带有元素插入的异步调用,并且需要侦听器来注册这些更改,我发现这样做更实用。这是,$.on(“form onsubmit”,function(){将不应用于在没有侦听器的情况下异步附加的新元素。

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

我的main file.js(external)有1832行,我的索引文件(包括file.js)大约有500到350行,带有内联javascript,如上图所示

这就是说:

  • 如上图所示保留内联javascript会被认为是一个巨大的缺陷(是的,我知道谷歌会这样做),或者即使按照高标准也会被认为是可以接受的

  • 考虑到“内联javascript没有保存在缓存中”,这到底意味着什么?每次用户请求网页时,他都会获取上面一行中的整个“onsubmit”?或者我没有理解这句话的意思


抱歉,如果问题含糊不清,但我认为我的大部分服务几乎没有完成,我不知道我是否应该重复这一点:(非常感谢。

很难定义“巨大缺陷”,所以让我们坚持正反两方面,保持代码“原样”:

专业人士:

  • 您当前的代码工作正常:不需要额外的工作
  • 被告:

  • 更难调试:JS在很多地方被分割,使用浏览器调试工具更难跟踪bug。特别是对于经验更丰富的JS开发人员来说,他们“期望”(或至少希望)代码按照良好的实践进行组织,比如分离HTML、JS和CSS
  • 速度:您的客户端必须在每次查询时下载并解析附加的JS。如果您能够在主JS文件中分解所有这些方法调用,则不需要这样做
  • 模块化:您从HTML调用的所有方法都必须位于全局命名空间中。您编写的脚本将更难重用
  • 因此,基本上,如果网站只由您开发,不会被数百万人使用,如果您不希望在其他项目上重用这些代码,我会保留这样的代码

    如果这些条件中的任何一个不满足,我将重构代码


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

    很难定义“巨大缺陷”,所以让我们坚持正反两方面的原则,保持代码“原样”:

    专业人士:

  • 您当前的代码工作正常:不需要额外的工作
  • 被告:

  • 更难调试:JS在很多地方被分割,使用浏览器调试工具更难跟踪bug。特别是对于经验更丰富的JS开发人员来说,他们“期望”(或至少希望)代码按照良好的实践进行组织,比如分离HTML、JS和CSS
  • 速度:您的客户端必须在每次查询时下载并解析附加的JS。如果您能够在主JS文件中分解所有这些方法调用,则不需要这样做
  • 模块化:您从HTML调用的所有方法都必须位于全局命名空间中。您编写的脚本将更难重用
  • 因此,基本上,如果网站只由您开发,不会被数百万人使用,如果您不希望在其他项目上重用这些代码,我会保留这样的代码

    如果这些条件中的任何一个不满足,我将重构代码

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

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

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


    这将处理DOM的任何未来变化。

    是一个老的问题,可能有帮助。@ MattCeleMe:这是一个不同的主题。这是关于绑定处理程序作为元素属性的。@斜视这正是我所说的斜视,我们可以把<代码>绑定处理程序作为元素属性< /代码>作为内嵌的JavaScript吗?ily denegrate performance?你所说的
    是什么意思?如果它没有经过优化以重用相当多的函数,我会感到惊讶,因为它不会改变
    。@Fane:等等,你到底在说什么?现在再看一遍,你可能会混淆内联脚本和内联处理程序的概念。@眯着眼睛看是的,我是我猜猜看,你能很快解释给我听吗?我会同意你的答案,请这样做…我上面展示的代码仅仅是处理程序吗?对于
    每个处理程序都会创建一个新函数
    你是说每次一个新元素来自一个异步调用时,它都会创建一个新函数吗?这会给服务带来明显的不良性能吗?还是可能是协同的这是一个不同的话题。这是一个不同的话题。这是关于绑定处理程序的元素属性。@斜视这正是我所说的斜视。我们可以把<代码>绑定处理程序作为元素属性< /代码>作为内嵌的JavaScript吗?它会严重影响性能吗?如果它没有经过优化以重用相当多的函数,我会感到惊讶,因为它没有改变
    。@Fane:等等,你到底在说什么?现在再看看这个,