29

Introducciòn a RequireJS

Embed Size (px)

DESCRIPTION

Presentaciòn de RequireJS, librerìa para definiciòn de modulos AMD de Javascript

Citation preview

Page 1: Introducciòn a RequireJS
Page 2: Introducciòn a RequireJS

Sobre mi

René [email protected]://github.com/reneolivo/

● BSc. Ingenieria de Sistemas.● MSc. Electronic Commerce.● 15 años de experiencia en

el área web.● Hobbies: aprender, enseñar & all-

things-web-development. Recientemente tambièn Chap-Hop.

Page 3: Introducciòn a RequireJS
Page 4: Introducciòn a RequireJS

Temas● RequireJS● Modulos y Definiciones● Configuraciòn● Shim that yo!● SPA● Optimizer● Buenas pràcticas● Conclusiòn● Further Reading

Page 5: Introducciòn a RequireJS

Què es RequireJS?

Page 6: Introducciòn a RequireJS

RequireJS

● Librerìa para definiciòn de modulos.● usa el patròn AMD (Asynchronous Module Definition) para

la carga de dependencias.

Page 7: Introducciòn a RequireJS

Ventajas● Organizaciòn de proyectos en modulos.● Cargar solo las dependencias definidas, cuando sean

necesarias.● Elimina el uso de variables globales.● Uso de múltiples versiones para la misma librerìa*.● Uglify FTW!

Page 8: Introducciòn a RequireJS

Show me the money $$$

Page 9: Introducciòn a RequireJS

Require VS Define● Require sirve para definir un modulo que no se usarà

como dependencia de otro.● Require tambièn funciona para cargar modulos

dinàmicamente.● Define se usa para definir modulos que seràn

requeridos por otros.● Demasiado complicado? Solo usa Define!

Page 10: Introducciòn a RequireJS

Anatomìa de Define ( y Require… )

Page 11: Introducciòn a RequireJS

Definiciòn de objetos / configuraciones

define({propiedad: 'valor'

});

Page 12: Introducciòn a RequireJS

Definiciòn de modulo

define(function modulo() {//haz lo que quieras

//retorna lo que quieras});

Page 13: Introducciòn a RequireJS

Definiciòn de modulo

define(function definicion_modulo() {return function modulo() {

}});

Page 14: Introducciòn a RequireJS

Definiciòn de dependencias

define([ 'folder/dependencia' ],function definicion_modulo(dep) {

return function modulo() {//usa dep

}}

);

Page 15: Introducciòn a RequireJS

No, no, no!

define('nombre',[ 'folder/dependencia' ],function definicion_modulo(dep) {

return function modulo() {//usa dep

}}

);

Page 16: Introducciòn a RequireJS

Configuraciòn

Page 17: Introducciòn a RequireJS

Opciones màs importantes:

● baseUrl● waitSeconds● urlArgs● paths● shim● deps● callback

Page 18: Introducciòn a RequireJS

Opciones para multiple versiones

● context● map

Page 19: Introducciòn a RequireJS

SHIM Shim that yo!

Page 20: Introducciòn a RequireJS

SPASingle Page Application

Page 21: Introducciòn a RequireJS

SPA - module loaderdefine(function module() {

return {load: function load(path) {

require([ path ], function( module ) {if (typeof module === 'function')

module();});

}}

});

Page 22: Introducciòn a RequireJS

OptimizerUglify that yo!

Page 23: Introducciòn a RequireJS

Configuraciòn de la optimizaciòn / build

Guìa completa:https://github.com/jrburke/r.js/blob/master/build/example.build.js

Page 24: Introducciòn a RequireJS

Opciones màs importantes({

appDir : './src',dir : './build',baseUrl : 'js',mainConfigFile : './src/js/config.js',paths : {

jQuery: '../libs/jquery/jquery.min'},optimizeCss : 'standard',modules: [ { name: 'main' } ]

})

Page 25: Introducciòn a RequireJS

Conclusiones

Page 26: Introducciòn a RequireJS

Buenas practicas

● Un mòdulo por archivo.● No especifiquen la extensiòn .js en las

dependencias.● shim esas librerìas externas como jQuery,

Angular, Backbone, etc.

Page 27: Introducciòn a RequireJS

Further Reading

● RequireJS y NodeJS:http://requirejs.org/docs/node.html

● RequireJS y Angular :http://www.startersquad.com/blog/angularjs-requirejs/

Page 28: Introducciòn a RequireJS

Preguntas

Page 29: Introducciòn a RequireJS

Gracias