From 9a1ec340cfcc8a6d9a1929ab85c0a4209647dfbd Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sun, 11 Oct 2015 12:35:23 -0400 Subject: [PATCH] a few simple examples --- src/examples/00/modules/foo.js | 3 --- src/examples/00/modules/main.js | 4 ++-- src/examples/00/modules/maths.js | 12 ++++++++++++ src/examples/00/name | 2 +- src/examples/01/modules/answer.js | 1 + src/examples/01/modules/lib.js | 9 --------- src/examples/01/modules/main.js | 8 ++++++-- src/examples/01/name | 2 +- src/examples/02/modules/main.js | 16 +++++++++++++--- src/examples/02/modules/qux.js | 1 + src/examples/02/modules/tags.js | 10 ---------- src/examples/02/modules/unbind.js | 12 ------------ src/examples/02/name | 2 +- src/examples/03/modules/main.js | 5 +++++ src/examples/03/name | 1 + 15 files changed, 44 insertions(+), 44 deletions(-) delete mode 100644 src/examples/00/modules/foo.js create mode 100644 src/examples/00/modules/maths.js create mode 100644 src/examples/01/modules/answer.js delete mode 100644 src/examples/01/modules/lib.js create mode 100644 src/examples/02/modules/qux.js delete mode 100644 src/examples/02/modules/tags.js delete mode 100644 src/examples/02/modules/unbind.js create mode 100644 src/examples/03/modules/main.js create mode 100644 src/examples/03/name diff --git a/src/examples/00/modules/foo.js b/src/examples/00/modules/foo.js deleted file mode 100644 index 9784963..0000000 --- a/src/examples/00/modules/foo.js +++ /dev/null @@ -1,3 +0,0 @@ -export function foo () { - return 42; -} diff --git a/src/examples/00/modules/main.js b/src/examples/00/modules/main.js index 5c63da0..5e28044 100644 --- a/src/examples/00/modules/main.js +++ b/src/examples/00/modules/main.js @@ -1,2 +1,2 @@ -import { foo } from './foo'; -console.log( foo() ); +import { cube } from './maths.js'; +console.log( cube( 5 ) ); // 125 diff --git a/src/examples/00/modules/maths.js b/src/examples/00/modules/maths.js new file mode 100644 index 0000000..135de99 --- /dev/null +++ b/src/examples/00/modules/maths.js @@ -0,0 +1,12 @@ +// This function isn't used anywhere, so +// Rollup excludes it from the bundle... +export function square ( x ) { + return x * x; +} + +// This function gets included +export function cube ( x ) { + // rewrite this as `square( x ) * x` + // and see what happens! + return x * x * x; +} diff --git a/src/examples/00/name b/src/examples/00/name index 65871b6..97877a1 100644 --- a/src/examples/00/name +++ b/src/examples/00/name @@ -1 +1 @@ -first example +Tree-shaking diff --git a/src/examples/01/modules/answer.js b/src/examples/01/modules/answer.js new file mode 100644 index 0000000..7a4e8a7 --- /dev/null +++ b/src/examples/01/modules/answer.js @@ -0,0 +1 @@ +export default 42; diff --git a/src/examples/01/modules/lib.js b/src/examples/01/modules/lib.js deleted file mode 100644 index 70a687f..0000000 --- a/src/examples/01/modules/lib.js +++ /dev/null @@ -1,9 +0,0 @@ -export const sqrt = Math.sqrt; - -export function square( x ) { - return x * x; -} - -export function diag ( x, y ) { - return sqrt( square( x ) + square( y ) ); -} diff --git a/src/examples/01/modules/main.js b/src/examples/01/modules/main.js index 510a605..df7615e 100644 --- a/src/examples/01/modules/main.js +++ b/src/examples/01/modules/main.js @@ -1,3 +1,7 @@ -import { diag } from './lib'; +import answer from './answer.js'; -console.log( diag( 3, 4 ) ); // 5 +// Default exports from the 'entry module' are +// exported from the bundle +export default function () { + console.log( 'the answer is ' + answer ); +} diff --git a/src/examples/01/name b/src/examples/01/name index 2d536da..3ab82c2 100644 --- a/src/examples/01/name +++ b/src/examples/01/name @@ -1 +1 @@ -second example +Default exports diff --git a/src/examples/02/modules/main.js b/src/examples/02/modules/main.js index f7155f8..a865227 100644 --- a/src/examples/02/modules/main.js +++ b/src/examples/02/modules/main.js @@ -1,4 +1,14 @@ -import { getStringTag } from './unbind'; -import { arrayTag } from './tags'; +// There are many ways to export bindings +// from an ES2015 module +export var foo = 1; -console.log( getStringTag( [] ) === arrayTag ); // true +export function bar () { + return foo; // try changing this to `foo++` +} + +function baz () { + return bar(); +} + +export { baz }; +export * from './qux'; diff --git a/src/examples/02/modules/qux.js b/src/examples/02/modules/qux.js new file mode 100644 index 0000000..35d0a84 --- /dev/null +++ b/src/examples/02/modules/qux.js @@ -0,0 +1 @@ +export var qux = 'QUX'; diff --git a/src/examples/02/modules/tags.js b/src/examples/02/modules/tags.js deleted file mode 100644 index a1e61b3..0000000 --- a/src/examples/02/modules/tags.js +++ /dev/null @@ -1,10 +0,0 @@ -// A number of StringTags. -export const - arrayTag = '[object Array]', - dateTag = '[object Date]', - functionTag = '[object Function]', - mathTag = '[object Math]', - nullTag = '[object Null]', - regexTag = '[object RegExp]', - stringTag = '[object String]', - undefinedTag = '[object Undefined]'; diff --git a/src/examples/02/modules/unbind.js b/src/examples/02/modules/unbind.js deleted file mode 100644 index c76ec0e..0000000 --- a/src/examples/02/modules/unbind.js +++ /dev/null @@ -1,12 +0,0 @@ -// Create functions from prototype methods, to avoid using call. -const unbind = Function.prototype.bind.bind(Function.prototype.call); - -export const slice = unbind(Array.prototype.slice); - -// Check if the first argument has a given property name. -export const hasOwn = unbind(Object.prototype.hasOwnProperty); - -// Get the string tag of an object. -export const getStringTag = unbind(Object.prototype.toString); - -export default unbind; diff --git a/src/examples/02/name b/src/examples/02/name index 9c06ba0..598a1ae 100644 --- a/src/examples/02/name +++ b/src/examples/02/name @@ -1 +1 @@ -deadcode-elimination +Named exports diff --git a/src/examples/03/modules/main.js b/src/examples/03/modules/main.js new file mode 100644 index 0000000..242c334 --- /dev/null +++ b/src/examples/03/modules/main.js @@ -0,0 +1,5 @@ +// You can import external modules into your bundle – +// it doesn't matter if they're ES2015 or legacy +import $ from 'jquery'; + +$( 'body' ).html( '

Hello world!

' ); diff --git a/src/examples/03/name b/src/examples/03/name new file mode 100644 index 0000000..55527c4 --- /dev/null +++ b/src/examples/03/name @@ -0,0 +1 @@ +External imports