JS1K: Concurs Javascript 1K

De wikijoan
Salta a la navegació Salta a la cerca

JS1K

Mirar els exemples, descarregar el codi.

Compressió del codi, exemple pràctic: jCart

JCart és un carrito de la compra basat en Ajax, JQuery, PHP. El script principal, jcart.js, té dues versions: comprimida (jcart.min.js) i sense comprimit (jcart.js).

Anem a veure un exemple pràctic de com es comprimeix una funció. La funció update s'executa quan actualitzes una quantitat en el carret de la compra.

jcart.js:

function update(input) {
	// The id of the item to update
	var updateId = input.parent().find('[name="jcartItemId[]"]').val();
	// The new quantity
	var newQty = input.val();
	// As long as the visitor has entered a quantity
	if (newQty) {
		// Update the cart one second after keyup
		var updateTimer = window.setTimeout(function() {

			// Update the item and refresh cart display
			$.ajax({
				data: {
					"jcartUpdate": 1, // Only the name in this pair is used in jcart.php, but IE chokes on empty values
					"itemId": updateId,
					"itemQty": newQty,
					"jcartIsCheckout": isCheckout,
					"jcartToken": token
				}
			});
		}, 1000);
	}

El codi equivalent és: jcart.min.js:

function g(l){var o=l.parent().find('[name="jcartItemId[]"]').val();var n=l.val();if(n){var m=window.setTimeout(function(){$.ajax({data:{jcartUpdate:1,itemId:o,itemQty:n,jcartIsCheckout:c,jcartToken:e}})},1000)}l.keydown(function(p){if(p.which!==9){window.clearTimeout(m)}})}

i si tabulem la funció tenim:

function g(l){
var o=l.parent().find('[name="jcartItemId[]"]').val();
var n=l.val();
if(n){
	var m=window.setTimeout(function(){
		$.ajax({
			data:{
				jcartUpdate:1,
				itemId:o,
				itemQty:n,
				jcartIsCheckout:c,
				jcartToken:e
			}
		})
	},1000)
}
l.keydown(function(p){
	if(p.which!==9){window.clearTimeout(m)}})
}

Per trobar la funció original només cal canviar els noms de les variables, afegir els comentaris, afegir punts i coma al final de la línia (que recordem que són opcionals)...


creat per Joan Quintana Compte, maig 2013