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 = squaredefine(
"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."