diff options
Diffstat (limited to 'files/nl/web/javascript/reference/statements/export/index.html')
| -rw-r--r-- | files/nl/web/javascript/reference/statements/export/index.html | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/files/nl/web/javascript/reference/statements/export/index.html b/files/nl/web/javascript/reference/statements/export/index.html new file mode 100644 index 0000000000..b08808c693 --- /dev/null +++ b/files/nl/web/javascript/reference/statements/export/index.html @@ -0,0 +1,155 @@ +--- +title: export +slug: Web/JavaScript/Reference/Statements/export +translation_of: Web/JavaScript/Reference/Statements/export +--- +<div>{{jsSidebar("Statements")}}</div> + +<p>Het <strong><code>export</code></strong> statement wordt gebruikt bij het maken van JavaScript modules om functies, objecten of primitieve waarden te exporteren van de module zodat deze gebruikt kunnen worden door andere programmas met het {{jsxref("Statements/import", "import")}} statement.</p> + +<p>Geëxporteerde modules worden altijd uitgevoerd in {{jsxref("Strict_mode","strict mode")}}, ongeacht of dat is aangegeven. Het export-statement kan niet gebruikt worden in<em> </em>ingevoegde scripts.</p> + +<div class="note"> +<p>Deze functie is momenteel niet geïmplementeerd in Internet Explorer, Android webview en Samsung Internet. Het is wel geïmplementeerd in 'transpilers' zoals de <a href="https://github.com/google/traceur-compiler">Traceur Compiler</a>, <a href="http://babeljs.io/">Babel</a> of <a href="https://github.com/rollup/rollup">Rollup</a>.</p> +</div> + +<h2 id="Syntax">Syntax</h2> + +<pre class="brush: js line-numbers language-js">export { <var>name1</var>, <var>name2</var>, …, <var>nameN</var> }; +export { <var>variable1</var> as <var>name1</var>, <var>variable2</var> as <var>name2</var>, …, <var>nameN</var> }; +export let <var>name1</var>, <var>name2</var>, …, <var>nameN</var>; // also var, function +export let <var>name1</var> = …, <var>name2</var> = …, …, <var>nameN</var>; // also var, const +<code class="language-js">export function FunctionName() {...} +export class ClassName {...}</code> + +export default <em>expression</em>; +export default function (…) { … } // also class, function* +export default function name1(…) { … } // also class, function* +export { <var>name1</var> as default, … }; + +export * from …; +export { <var>name1</var>, <var>name2</var>, …, <var>nameN</var> } from …; +export { <var>import1</var> as <var>name1</var>, <var>import2</var> as <var>name2</var>, …, <var>nameN</var> } from …; +<code class="language-js">export { default } from …;</code></pre> + +<p> </p> + +<dl> + <dt><code>nameN</code></dt> + <dd>Identificator die geëxporteerd moet worden (zodat het geïmporteerd kan worden via {{jsxref("Statements/import", "import")}} in een ander script).</dd> +</dl> + +<h2 id="Beschrijving">Beschrijving</h2> + +<p>Er zijn 2 verschillende types van export: <strong>named </strong>en <strong>default</strong>. Er kunnen meerdere <em>named exports</em> per module bestaan, maar slechts een <em>default export</em>. Elk type komt overeen met een van de bovenstaande syntaxen.</p> + +<ul> + <li>Genoemde exports (named exports): + <pre class="brush: js">// exporteert een eerder gedeclareerde functie +export { myFunction }; + +// exporteert een constante +export const foo = Math.sqrt(2);</pre> + </li> + <li>Standaard exports (default exports) (function): + <pre class="brush: js">export default function() {} </pre> + </li> + <li>Standaard exports (default exports) (class): + <pre class="brush: js">export default class {} </pre> + </li> +</ul> + +<p>Genoemde exports zijn handig om verschillende waardes te exporteren. Tijdens de import is het verplicht om dezelfde naam als het overeenkomende object te gebruiken.</p> + +<p>Maar een standaard export kan geïmporteerd worden met enige andere naam, bijvoorbeeld:</p> + +<pre class="syntaxbox">let k; export default k = 12; // in bestand test.js + +import m from './test' // let op dat we de vrijheid hebben om import m te gebruiken in plaats van import k, omdat k een default export is. + +console.log(m); // Zal '12' in de console laten zien +</pre> + +<p>Er kan slechts 1 standaard export zijn.</p> + +<p>De volgende syntax exporteert geen standaard export van de geïmporteerde module:</p> + +<pre>export * from …;</pre> + +<p>Gebruik de volgende syntax als de standaard export nodig is:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js">export {default} from 'mod';</code></pre> + +<h2 id="Voorbeelden">Voorbeelden</h2> + +<h3 id="Genoemde_(named)_exports_gebruiken">Genoemde (named) exports gebruiken</h3> + +<p>In de module zouden we de volgende code kunnen gebruiken:</p> + +<pre class="brush: js">// module "my-module.js" +function cube(x) { + return x * x * x; +} +const foo = Math.PI + Math.SQRT2; +export { cube, foo }; +</pre> + +<p>Op deze manier zouden we in een ander script deze code kunnen hebben:</p> + +<pre class="brush: js">import { cube, foo } from 'my-module'; +console.log(cube(3)); // 27 +console.log(foo); // 4.555806215962888</pre> + +<h3 id="De_standaard_(default)_export_gebruiken">De standaard (default) export gebruiken</h3> + +<p>Als we een enkele waarde willen exporteren of willen terugvallen op een waarde voor onze module zouden we een standaard (default) export kunnen gebruiken:</p> + +<pre class="brush: js">// module "my-module.js" +export default function cube(x) { + return x * x * x; +} +</pre> + +<p>Op die manier zal het vanzelfsprekend zijn om in een ander script de standaard (default) export te importeren:</p> + +<pre class="brush: js">import cube from 'my-module'; +console.log(cube(3)); // 27 +</pre> + +<p>Merk op dat het niet mogelijk is om <code>var</code>, <code>let</code> of <code>const</code> te gebruiken met <code>export default</code>.</p> + +<h2 id="Specificaties">Specificaties</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-exports', 'Exports')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initiële definitie.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-exports', 'Exports')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibiliteit">Browser compatibiliteit</h2> + +<div class="hidden">De compatibiliteitstabel op deze pagina is gegenereerd van gestructureerde data. Indien u wenst bij te dragen aan deze data, bekijk dan <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> en stuur ons een pull request.</div> + +<p>{{Compat("javascript.statements.export")}}</p> + +<h2 id="Bekijk_ook">Bekijk ook</h2> + +<ul> + <li>{{jsxref("Statements/import", "import")}}</li> + <li><a href="https://hacks.mozilla.org/2015/08/es6-in-depth-modules/">ES6 in Depth: Modules</a>, Hacks blog post by Jason Orendorff</li> + <li><a href="http://exploringjs.com/es6/ch_modules.html">Axel Rauschmayer's book: "Exploring JS: Modules"</a></li> +</ul> |
