Javascript Bundler
Browserify, Webpack, Rollup, Fuse-box, Parcel
Pourquoi ?
Au début tout était simple
$(document).ready(function(){
$('a[href^=#]').click(function() {
cible=$(this).attr('href');
scrollTo(cible);
return false;
});
});
function scrollTo(cible){
if($(cible).length>=1){
hauteur=$(cible).offset().top;
}
else{
hauteur=$("a[name="+cible.substr(1,cible.length-1)+"]").offset().top;
}
hauteur -= (windowH()-$(cible).height())/2;
$('html,body').animate({scrollTop: hauteur}, 1000,'easeOutQuint');
return false;
}
function windowH(){
if (window.innerHeight) return window.innerHeight ;
else{return $(window).height();}
}
Diviser pour mieux régner
// app.js
$(document).ready(function(){
$('a[href^=#]').click(function() {
cible=$(this).attr('href');
scrollTo(cible);
return false;
});
});
// functions.js
function scrollTo(cible){
if($(cible).length>=1){
hauteur=$(cible).offset().top;
}
else{
hauteur=$("a[name="+cible.substr(1,cible.length-1)+"]").offset().top;
}
hauteur -= (windowH()-$(cible).height())/2;
$('html,body').animate({scrollTop: hauteur}, 1000,'easeOutQuint');
return false;
}
function windowH(){
if (window.innerHeight) return window.innerHeight ;
else{return $(window).height();}
}
// functions.js
function scrollTo(cible){
if($(cible).length>=1){
hauteur=$(cible).offset().top;
}
else{
hauteur=$("a[name="+cible.substr(1,cible.length-1)+"]").offset().top;
}
hauteur -= (windowH()-$(cible).height())/2;
$('html,body').animate({scrollTop: hauteur}, 1000,'easeOutQuint');
return false;
}
function windowH(){
if (window.innerHeight) return window.innerHeight ;
else{return $(window).height();}
}
NodeJS est arrivé
// app.js
var http = require('http');
var dt = require('./date');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write("The date and time are currently: " + dt.myDateTime());
res.end();
}).listen(8080);
// date.js
exports.myDateTime = function () {
return Date();
};
Pourquoi ne pas faire pareil
// app.js
var scrollTo = require('./functions/scrollto');
var $ = require('jquery');
$(document).ready(function(){
$('a[href^=#]').click(function() {
cible=$(this).attr('href');
scrollTo(cible);
return false;
});
});
Mais pour le front ?
// scrollto.js
module.exports = function (cible){
if($(cible).length>=1){
hauteur=$(cible).offset().top;
}
else{
hauteur=$("a[name="+cible.substr(1,cible.length-1)+"]").offset().top;
}
hauteur -= (windowH()-$(cible).height())/2;
$('html,body').animate({scrollTop: hauteur}, 1000,'easeOutQuint');
return false;
}
function windowH(){
if (window.innerHeight) return window.innerHeight ;
else{return $(window).height();}
}
ECMAScript 2015
// app.js
import scrollTo from './functions/scrollto'
import $ from 'jquery'
$(document).ready(function(){
$('a[href^=#]').click(function() {
let cible = $(this).attr('href');
scrollTo(cible);
return false;
});
});
Standardise l'utilisation des modules
// scrollto.js
export default function (cible){
// ...
}
// app.js
import { scrollTo } from './functions/scrollto'
import $ from 'jquery'
$(document).ready(function(){
$('a[href^=#]').click(function() {
let cible = $(this).attr('href');
scrollTo(cible);
return false;
});
});
// scrollto.js
export function scrollTo (cible){
// ...
}
export function windowH () {
if (window.innerHeight) return window.innerHeight ;
else{return $(window).height();}
}
Browserify, Webpack, Rollup, Fuse-box, Parcel
JavaScript Bundlers
By Jonathan Boyer
JavaScript Bundlers
- 1,235