summaryrefslogtreecommitdiff
path: root/docs/examples/import_export.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/import_export.md')
-rw-r--r--docs/examples/import_export.md102
1 files changed, 102 insertions, 0 deletions
diff --git a/docs/examples/import_export.md b/docs/examples/import_export.md
new file mode 100644
index 000000000..22d02eea7
--- /dev/null
+++ b/docs/examples/import_export.md
@@ -0,0 +1,102 @@
+# Import and Export Modules
+
+Deno by default standardizes the way modules are imported in both JavaScript and
+TypeScript. It follows the ECMAScript 6 `import/export` standard with one
+caveat, the file type must be included at the end of import statement.
+
+```js
+import {
+ add,
+ multiply,
+} from "./arithmetic.ts";
+```
+
+Dependencies are also imported directly, there is no package management
+overhead. Local modules are imported in exactly the same way as remote modules.
+As the examples show below, the same functionality can be produced in the same
+way with local or remote modules.
+
+## Local Import
+
+In this example the `add` and `multiply` functions are imported from a local
+`arithmetic.ts` module.
+
+**Command:** `deno run local.ts`
+
+```ts
+import { add, multiply } from "./arithmetic.ts";
+
+function totalCost(outbound: number, inbound: number, tax: number): number {
+ return multiply(add(outbound, inbound), tax);
+}
+
+console.log(totalCost(19, 31, 1.2));
+console.log(totalCost(45, 27, 1.15));
+
+/**
+ * Output
+ *
+ * 60
+ * 82.8
+ */
+```
+
+## Export
+
+In the example above the `add` and `multiply` functions are imported from a
+locally stored arithmetic module. To make this possible the functions stored in
+the arithmetic module must be exported.
+
+To do this just add the keyword `export` to the beginning of the function
+signature as is shown below.
+
+```ts
+export function add(a: number, b: number): number {
+ return a + b;
+}
+
+export function multiply(a: number, b: number): number {
+ return a * b;
+}
+```
+
+All functions, classes, constants and variables which need to be accessible
+inside external modules must be exported. Either by prepending them with the
+`export` keyword or including them in an export statement at the bottom of the
+file.
+
+To find out more on ECMAScript Export functionality please read the
+[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export).
+
+## Remote Import
+
+In the local import example above an `add` and `multiply` method are imported
+from a locally stored arithmetic module. The same functionality can be created
+by importing `add` and `multiply` methods from a remote module too.
+
+In this case the Ramda module is referenced, including the version number. Also
+note a JavaScript module is imported directly into a TypeSript module, Deno has
+no problem handling this.
+
+**Command:** `deno run ./remote.ts`
+
+```ts
+import {
+ add,
+ multiply,
+} from "https://x.nest.land/ramda@0.27.0/source/index.js";
+
+function totalCost(outbound: number, inbound: number, tax: number): number {
+ return multiply(add(outbound, inbound), tax);
+}
+
+console.log(totalCost(19, 31, 1.2));
+console.log(totalCost(45, 27, 1.15));
+
+/**
+ * Output
+ *
+ * 60
+ * 82.8
+ */
+```