`script`和`link as =“ script”`标签之间的区别

时间:2018-06-29 16:26:55

标签: javascript html html5 head

除了标准的脚本加载方法之外,

Semaphore maxInFlight = new Semaphore(MAX_REQUEST_PER_CON_REMOTE);
...
maxInFlight.acquireUninterruptibly();
ResultSetFuture future = executeAsync(...);
Futures.addCallback(future, new FutureCallback<ResultSet>() {
     @Override
     public void onSuccess(ResultSet rs) {
     ...
     maxInFlight.release();
     }

     @Override
     public void onFailure(Throwable t) {
     ...
     maxInFlight.release();
     }, executor);

我见过人们这样做:

<script src="js/script.js"></script>

有什么区别吗?


请注意:还有一个类似的What's the difference between using link and script tag to reference JavaScript source?问题询问<link href="js/script.js" as="script"> ,这是不同的。

1 个答案:

答案 0 :(得分:4)

如果该link标记上带有rel="preload"(或rel="modulepreload"),它将指示一个预加载请求,该请求将预加载但不运行该脚本。当然,script会加载并运行脚本。但是如果没有rel,则link是无效的,并且没有有用的作用(至少在规范方面)。

如果您在规范中查看link,则会看到as列为:

  

as —预加载请求的潜在目的地(rel="preload"rel="modulepreload"

在指向as属性的链接之后,显示为:

  

as属性为href属性给定的资源指定预加载请求的潜在目的地。它是一个枚举的属性。每个潜在目的地都是该属性的关键字,映射到相同名称的状态。必须在具有link属性且包含rel关键字的preload元素上指定该属性。它可以在具有link属性的rel属性的modulepreload元素上指定;在这种情况下,它必须具有一个类似于脚本的目标值。对于其他link元素,不得指定。