aboutsummaryrefslogtreecommitdiff
path: root/files/nl/web/javascript/reference/statements/export/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/nl/web/javascript/reference/statements/export/index.html')
-rw-r--r--files/nl/web/javascript/reference/statements/export/index.html155
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>