De fleste webutviklere har brukt import og export i Javascript. Og de fleste føler kanskje at de har relativt kontroll på importere og eksportere kode mellom filer på denne måten.
Men har du for eksempel vurdert å bruke noe annet enn export default? Og vet du hva slags andre muligheter import og export gir deg?
Mikael Brevik er her for å fortelle deg!
I dagens Kodesnutt går han gjennom noen av de mange mulighetene ES2015-syntaksen gir deg, med eksempler som kjører i Node. Videoen ser du over.
Og vil du bare se det som kode, har vi først en bolk fra Brevik om de ulike import-mulighetene her:
import './module.mjs'; // side-effects
// === Import specific things
import sayHello from './module.mjs';
sayHello('Wade');
// === Can be named anything
import hello from './module.mjs';
hello('Wade');
// === Doesnt work if there is no default
import sayHello from './module.mjs';
sayHello('Wade');
// === Import non defaults
import { sayHello } from './module.mjs';
sayHello('Wade');
// === Must be correctly named
import { hello } from './module.mjs';
hello('Wade');
import { sayHello as hello } from './module.mjs';
hello('Wade');
// === Import multiple things
import {
sayHello as hello,
sayGoodbye
} from './module.mjs';
hello('Wade');
sayGoodbye('DP');
// === Import unknown things
import * as mod from './module.mjs';
console.log(mod);
mod.sayHello('Wade');
mod.sayGoodbye('DP');
// === Import unknown things
import * as mod from './module.mjs';
console.log(mod);
// === How about default AND multiple?
import something, {
sayHello
} from './module.mjs';
something();
sayHello('Wade');
// === How about default AND multiple unknown?
import something, * as mod from './module.mjs';
something();
console.log(mod);
// === How about default AND multiple unknown?
import * as mod from './transitive.mjs';
console.log(mod);
import something from './transitive.mjs';
console.log(something);
import something, * as mod from './transitive.mjs';
console.log(something);
console.log(mod);
Og her ser du forskjellige måter å gjøre export på:
console.log('Hello from module!');
// === Exporting one thing
export default function sayHello(name) {
console.log('Hello,', name);
}
// === Can be declared somewhere else
function sayHello(name) {
console.log('Hello,', name);
}
export default sayHello; // Notice semicolon here.
// === What if we want multiple things?
export function sayHello(name) {
console.log('Hello,', name);
}
export function sayGoodbye(name) {
console.log('Bye,', name);
}
// === Alternative way to export
function sayHello(name) {
console.log('Hello,', name);
}
function sayGoodbye(name) {
console.log('Bye,', name);
}
// export { sayHello, sayGoodbye };
// Or renamed
export {
sayHello as hello,
sayGoodbye as goodbye
};
// or values
export let v1 = 1,
v2 = 2,
v3;
// === Default and named
export default function saySomething(name) {
console.log('Something');
}
export function sayHello(name) {
console.log('Hello,', name);
}
export function sayGoodbye(name) {
console.log('Bye,', name);
}
// === Alternative way
function saySomething(name) {
console.log('Something');
}
function sayHello(name) {
console.log('Hello,', name);
}
function sayGoodbye(name) {
console.log('Bye,', name);
}
export {
saySomething as default,
sayHello,
sayGoodbye
};