JS Modulsystem
<!-- custom VueJS files -->
<script src="app/stores/taskStore.js"></script>
<script src="app/components/taskRowComponent.js"></script>
<script src="app/components/addTaskBoxComponent.js"></script>
<script src="app/components/taskListComponent.js"></script>
const taskListComponent = {
template: `
<div class="content">
<router-view></router-view>
<task-row v-bind="task" v-for="task in tasks"></task-row>
<div class="row">
<div class="col-12 right bold">{{ sum }} mins</div>
</div>
</div>`,
data: function(){
return {tasks: taskStore.tasks}
},
methods: {
addTask: function(newTask){
this.tasks.push(newTask);
}
},
computed: {
sum: function(){
return this.tasks.reduce((pv, cv)=>pv+cv.minutes, 0);
}
}
};
var taskStore = {
tasks:
[
{ label: "Katze gefüttert", minutes: 30 },
{ label: "SQL Server installiert", minutes: 180 }
]
}
No modules
Originally live-script
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
}).listen(8080);
CommonJS working group
Asynchronous module definition
Module formats
var multiply = require("multiply")
function square(number) {
return multiply(number, number)
}
exports.default = square
define(
"square",
["multiply"],
function(multiply) {
return function(number) {
multiply(number, number)
}
}
)
Loader | Format |
---|---|
Node.JS | CommonJS |
RequireJS | AMD |
SystemJS | all |
Bundler | Format |
---|---|
Browserify | CommonJS |
Webpack | all |
AMD vs. CommonJS
import { multiply } from "multiply";
export default function(number) {
return multiply(number, number)
}
"Configurable module loader enabling dynamic ES module workflows in browsers and NodeJS."