异步javascript加载程序的推荐用法

异步javascript加载程序的推荐用法,javascript,dependency-management,asynchronous-loader,Javascript,Dependency Management,Asynchronous Loader,刚刚开始研究异步javascript加载lib,如和。我的问题是关于使用这种异步加载模式的最佳实践 我想到了几个可能的设置: 加载顶部的异步加载程序或带有脚本标记的页面。这允许gzip和缓存,但也会在初始加载期间阻塞。这可能不是什么大问题,因为这些加载程序应该相当小(我们还是应该先加载css吗) 将异步加载程序代码内联到html中,然后立即开始使用加载依赖项。这意味着异步加载程序没有单独的请求,因此可能会更快一些,但它也不会被gzip压缩和缓存,因此每次都必须加载 在页面底部进行JS的经典加载,

刚刚开始研究异步javascript加载lib,如和。我的问题是关于使用这种异步加载模式的最佳实践

我想到了几个可能的设置:

  • 加载顶部的异步加载程序或带有脚本标记的页面。这允许gzip和缓存,但也会在初始加载期间阻塞。这可能不是什么大问题,因为这些加载程序应该相当小(我们还是应该先加载css吗)

  • 将异步加载程序代码内联到html中,然后立即开始使用加载依赖项。这意味着异步加载程序没有单独的请求,因此可能会更快一些,但它也不会被gzip压缩和缓存,因此每次都必须加载

  • 在页面底部进行JS的经典加载,以便首先加载样式表等。将异步加载程序放在页面底部的阻塞脚本标记中,然后异步加载所有依赖项

  • 最常用的场景是什么,人们通常如何异步加载js??

    
    
    <head>
       <!-- data-main attribute tells require.js to load
            scripts/main.js after require.js loads. -->
       <script data-main="scripts/main" src="scripts/require.js"></script>
    </head>
    
    我建议(1)您将其加载到头部

    在html(2)中串联它是不值得的,因为它会停止缓存。更不用说你必须把它放在任何地方,而且它很难看

    一个有效的选择(3)(但个人不值得)是使用JavaScript创建一个
    标记并将其注入您的大脑。如果这是在你的身体底部完成的,那么在你的异步加载程序开始之前,它应该能让你的html/css完全加载

    作为一个不错的奖励,require.js允许您提供一个指向主脚本的指针,一旦require被加载,它就会加载该脚本。然后,您可以在主脚本中执行大部分异步文件加载,并根据页面上的要求为每个文件设置一组定义良好的要求

    异步加载javascript的原因包括

    • 快速加载初始HTML/CSS
    • 你的标题保持“干净”
    • 您的javascript和html是明确分开的
    • 可以基于特征检测动态加载文件
    • 您可以清楚地定义文件间的依赖关系
    • 您可以以模块化的方式(如YUI)加载库,而不是加载整个库(如jQuery)
    这一清单还在继续。在默认/共享视图或母版页中包含上面这样的行是非常干净整洁的

    扩展基于特征检测的动态加载javascript文件。我的意思是,您可以浏览应该加载哪些javascript文件的DOM。例如,如果您的页面上有一个
    ,那么您可以通过标准css选择器检测到它,并加载
    image slider.js
    文件,以不引人注目地使用JavaScript增强它

    这意味着您不必使用图像滑块手动将其包含在每个页面上。默认情况下,您不必在每个页面上都包含,您可以使用一条信息(类名)来应用视觉样式和功能。

    
    
    我建议(1)您将其加载到头部

    在html(2)中串联它是不值得的,因为它会停止缓存。更不用说你必须把它放在任何地方,而且它很难看

    一个有效的选择(3)(但个人不值得)是使用JavaScript创建一个
    标记并将其注入您的大脑。如果这是在你的身体底部完成的,那么在你的异步加载程序开始之前,它应该能让你的html/css完全加载

    作为一个不错的奖励,require.js允许您提供一个指向主脚本的指针,一旦require被加载,它就会加载该脚本。然后,您可以在主脚本中执行大部分异步文件加载,并根据页面上的要求为每个文件设置一组定义良好的要求

    异步加载javascript的原因包括

    • 快速加载初始HTML/CSS
    • 你的标题保持“干净”
    • 您的javascript和html是明确分开的
    • 可以基于特征检测动态加载文件
    • 您可以清楚地定义文件间的依赖关系
    • 您可以以模块化的方式(如YUI)加载库,而不是加载整个库(如jQuery)
    这一清单还在继续。在默认/共享视图或母版页中包含上面这样的行是非常干净整洁的

    扩展基于特征检测的动态加载javascript文件。我的意思是,您可以浏览应该加载哪些javascript文件的DOM。例如,如果您的页面上有一个
    ,那么您可以通过标准css选择器检测到它,并加载
    image slider.js
    文件,以不引人注目地使用JavaScript增强它


    这意味着您不必使用图像滑块手动将其包含在每个页面上。默认情况下,您不必在每个页面上都包含,您可以使用一条信息(类名)来应用视觉样式和功能。

    不要对yepnope.js迷惑不解-我个人的最爱,我的yepnope就在结束正文标记之前-我猜这就是您的情况2,最适合我。别忘了yepnope.js-我个人最喜欢的,我的yepnope就在结束body标签之前-我猜这是你的案例2,最适合我。