语法高亮,滚动条美化,设置页面调整

This commit is contained in:
fofolee
2019-04-19 02:41:09 +08:00
parent 1e8f76c000
commit 359d29ee0b
1590 changed files with 12328 additions and 11441 deletions

View File

@@ -5,7 +5,7 @@
<p><a href="/zh-CN/docs/Web/HTML/Element/script">script</a> 标签中使用 <code>nomodule</code> 属性,可以确保向后兼容。</p>
<p>在您希望按照一定的条件或者按需加载模块的时候,动态<code>import()</code> 是非常有用的。而静态型的 <code>import</code> 是初始化加载依赖项的最优选择,使用静态 <code>import</code> 更容易从代码静态分析工具和 <a href="/zh-CN/docs/Glossary/Tree_shaking">tree shaking</a> 中受益。</p>
<p>语法</p>
<pre class="syntaxbox">import <em>defaultExport</em> from "<em>module-name</em>";
<pre><code class="language-javascript">import <em>defaultExport</em> from "<em>module-name</em>";
import * as <em>name</em> from "<em>module-name</em>";
import { <em>export </em>} from "<em>module-name</em>";
import { <em>export</em> as <em>alias </em>} from "<em>module-name</em>";
@@ -16,7 +16,7 @@ import <em>defaultExport</em>, { <em>export</em> [ , <em>[...]</em> ] } from "<e
import <em>defaultExport</em>, * as <em>name</em> from "<em>module-name</em>";
import "<em>module-name</em>";
var promise = import("module-name");//这是一个处于第三阶段的提案。
</pre>
</code></pre>
<dl>
<dt><code>defaultExport</code></dt>
<dd>导入模块的默认导出接口的引用名。</dd>
@@ -33,41 +33,41 @@ var promise = import("module-name");//这是一个处于第三阶段的提案。
<p><code>name</code>参数是“导入模块对象”的名称它将用一种名称空间来引用导入模块的接口。export参数指定单个的命名导出<code>import * as name</code>语法导入所有导出接口,即导入模块整体。以下示例阐明该语法。</p>
<h3 id="导入整个模块的内容">导入整个模块的内容</h3>
<p>这将<code>myModule</code>插入当前作用域,其中包含来自位于<code>/modules/my-module.js</code>文件中导出的所有接口。</p>
<pre class="brush: js">import * as myModule from '/modules/my-module.js';
</pre>
<pre><code class="language-javascript">import * as myModule from '/modules/my-module.js';
</code></pre>
<p>在这里访问导出接口意味着使用模块名称在本例为“myModule”作为命名空间。例如如果上面导入的模块包含一个接口<code>doAllTheAmazingThings()</code>,你可以这样调用:</p>
<pre class="brush: js">myModule.doAllTheAmazingThings();</pre>
<pre><code class="language-javascript">myModule.doAllTheAmazingThings();</code></pre>
<h3 id="导入单个接口">导入单个接口</h3>
<p>给定一个名为<code>myExport</code>的对象或值,它已经从模块<code>my-module</code>导出(因为整个模块被导出)或显式地导出(使用<a href="Reference/Statements/export" title="在创建JavaScript模块时export 语句用于从模块中导出函数、对象或原始值以便其他程序可以通过 import 语句使用它们。"><code>export</code></a>语句),将<code>myExport</code>插入当前作用域。</p>
<pre class="brush: js">import {myExport} from '/modules/my-module.js';</pre>
<pre><code class="language-javascript">import {myExport} from '/modules/my-module.js';</code></pre>
<h3 id="导入多个接口">导入多个接口</h3>
<p>这将<code>foo</code><code>bar</code>插入当前作用域。</p>
<pre class="brush: js">import {foo, bar} from '/modules/my-module.js';</pre>
<pre><code class="language-javascript">import {foo, bar} from '/modules/my-module.js';</code></pre>
<h3 id="导入带有别名的接口">导入带有别名的接口</h3>
<p>你可以在导入时重命名接口。例如,将<code>shortName</code>插入当前作用域。</p>
<pre class="brush: js">import {reallyReallyLongModuleExportName as shortName}
from '/modules/my-module.js';</pre>
<pre><code class="language-javascript">import {reallyReallyLongModuleExportName as shortName}
from '/modules/my-module.js';</code></pre>
<h3 id="导入时重命名多个接口">导入时重命名多个接口</h3>
<p>使用别名导入模块的多个接口。</p>
<pre class="brush: js">import {
<pre><code class="language-javascript">import {
  reallyReallyLongModuleMemberName as shortName,
  anotherLongModuleName as short
} from '/modules/my-module.js';
</pre>
</code></pre>
<h3 id="仅为副作用而导入一个模块">仅为副作用而导入一个模块</h3>
<p>整个模块仅为副作用(中性词,无贬义含义)而导入,而不导入模块中的任何内容(接口)。 这将运行模块中的全局代码, 但实际上不导入任何值。</p>
<pre><code>import '/modules/my-module.js';</code></pre>
<pre><code>import '/modules/my-module.js';</code></code></pre>
<h3 id="导入默认值">导入默认值</h3>
<p><code><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">引入模块可能有一个</span></font>default</code><a href="Reference/Statements/export" title="在创建JavaScript模块时export 语句用于从模块中导出函数、对象或原始值以便其他程序可以通过 import 语句使用它们。"><code>export</code></a>(无论它是对象,函数,类等)可用。然后可以使用<code>import</code>语句来导入这样的默认接口。</p>
<p>最简单的用法是直接导入默认值:</p>
<pre class="brush: js">import myDefault from '/modules/my-module.js';</pre>
<pre><code class="language-javascript">import myDefault from '/modules/my-module.js';</code></pre>
<p>也可以同时将<code>default</code>语法与上述用法(命名空间导入或命名导入)一起使用。在这种情况下,<code>default</code>导入必须首先声明。 例如:</p>
<pre class="brush: js">import myDefault, * as myModule from '/modules/my-module.js';
// myModule used as a namespace</pre>
<pre><code class="language-javascript">import myDefault, * as myModule from '/modules/my-module.js';
// myModule used as a namespace</code></pre>
<p>或者</p>
<pre class="brush: js">import myDefault, {foo, bar} from '/modules/my-module.js';
<pre><code class="language-javascript">import myDefault, {foo, bar} from '/modules/my-module.js';
// specific, named imports
</pre>
</code></pre>
<h3 id="动态import">动态import</h3>
<p>关键字import可以像调用函数一样来动态的导入模块。以这种方式调用将返回一个 <code>promise</code></p>
<p> </p>
@@ -75,16 +75,16 @@ var promise = import("module-name");//这是一个处于第三阶段的提案。
.then((module) =&gt; {
// Do something with the module.
});</code>
</pre>
</code></pre>
<p>这种使用方式也支持 <code>await</code> 关键字。</p>
<pre><code>let module = await import('/modules/my-module.js');</code></pre>
<pre><code>let module = await import('/modules/my-module.js');</code></code></pre>
<p> </p>
<p> </p>
<h2 id="示例">示例</h2>
<h3 id="标准导入">标准导入</h3>
<p>下面的代码将会演示如何从辅助模块导入以协助处理AJAX JSON请求。</p>
<h4 id="模块file.js">模块file.js</h4>
<pre class="brush: js">function getJSON(url, callback) {
<pre><code class="language-javascript">function getJSON(url, callback) {
let xhr = new XMLHttpRequest();
xhr.onload = function () {
callback(this.responseText)
@@ -95,15 +95,15 @@ var promise = import("module-name");//这是一个处于第三阶段的提案。
export function getUsefulContents(url, callback) {
getJSON(url, data =&gt; callback(JSON.parse(data)));
}</pre>
}</code></pre>
<h4 id="主程序main.js">主程序main.js</h4>
<pre class="brush: js">import { getUsefulContents } from '/modules/file.js';
<pre><code class="language-javascript">import { getUsefulContents } from '/modules/file.js';
getUsefulContents('http://www.example.com',
data =&gt; { doSomethingUseful(data); });</pre>
data =&gt; { doSomethingUseful(data); });</code></pre>
<h3 id="动态导入">动态导入</h3>
<p>此示例展示了如何基于用户操作去加载功能模块到页面上,在例子中通过点击按钮,然后会调用模块内的函数。当然这不是能实现这个功能的唯一方式,<code>import()</code>函数也可以支持<code>await</code></p>
<pre class="brush: js">const main = document.querySelector("main");
<pre><code class="language-javascript">const main = document.querySelector("main");
for (const link of document.querySelectorAll("nav &gt; a")) {
link.addEventListener("click", e =&gt; {
e.preventDefault();
@@ -116,7 +116,7 @@ for (const link of document.querySelectorAll("nav &gt; a")) {
main.textContent = err.message;
});
});
}</pre>
}</code></pre>
<h2 id="规范">规范</h2>
<table class="standard-table">
<tbody>