Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

180 lines (180 sloc) 7.698 kB
{
"frontmatter": {
"body": "Sam Foster, \nWeb Engineer, Mozilla.\n\n[@samfosteriam](http://twitter.com/samfosteriam)\n\n<span class=\"play-btn\" id=\"themesong-btn\"></span><audio id=\"themesong-audio\" autobuffer autoloop loop><source src=\"./resources/media/Sleepy_Lagoon.mp3\" /><source src=\"./resources/media/Sleepy_Lagoon.ogg\" /></audio>\n",
"id": "frontmatter",
"title": "Desert Island Disks with Dojo",
"x": "0",
"y": "0"
},
"aboutme": {
"body": "* Developer on the Pancake project, Mozilla\n* Mostly Front-end\n* Recently working with: Backbone.js, require.js\n* Dojo contributor since ~2007\n* <a href=\"http://leedsjs.org/\">LeedsJs</a>\n",
"id": "aboutme",
"title": "About Me",
"x": "1",
"y": "0",
"classes": "medium"
},
"libraries": {
"body": "* Level foundation \n* Language utils\n* Core APIs\n\n* Price of entry\n",
"id": "libraries",
"title": "The Age of Libraries",
"x": "2",
"y": "0",
"classes": "compact"
},
"modules": {
"body": "Developing at any scale needs modules: \n\n* dojo.require\n* dojo.provide\n\nBetter known as: \n\n* require\n* define\n",
"id": "modules",
"title": "Modules",
"x": "0",
"y": "1",
"classes": "medium"
},
"modules-1": {
"id": "modules-1",
"x": "1",
"y": "1",
"body": "####Modules and packaging standards\n* Module scope\n* Module exports\n* Module Ids, Anonymous modules\n\n####Production builds\n\n* Concatenation\n* Minification\n* Optimization\n\n",
"classes": "medium",
"title": "Modules"
},
"hitch": {
"body": " var me = {\n name: \"Sam\",\n greeting: function(){\n return \"My name is: \" + this.name;\n }\n };\n \n var greet = me.greeting; \n greet(); // returns \"My name is \" or whatever window.name is\n ",
"id": "hitch",
"title": "Hitch",
"scale": 1,
"x": "0",
"y": "2",
"classes": "medium"
},
"hitch-1": {
"id": "hitch-1",
"x": "1",
"y": "2",
"body": " var greet = dojo.hitch( me, 'greeting' );\n\n greet(); // returns \"My name is Sam\"\n\nSimilar to Function.bind, _.bind etc. ",
"title": "Fixing 'this' with dojo.hitch"
},
"adapter-registry": {
"body": "Replace a function with a registry of adapters\n\n* Adapter name\n* \"accepts\" function\n* Handler function \n",
"id": "adapter-registry",
"title": "AdapterRegistry",
"x": "0",
"y": "3"
},
"xhr-plugins": {
"body": "A registry of adapters to intercept XHR requests and decorate, re-route and or mock the request",
"id": "xhr-plugins",
"title": "XHR Plugins ",
"x": "1",
"y": "3"
},
"xhr-plugins-1": {
"id": "xhr-plugins-1",
"x": "2",
"y": "3",
"body": "* Cross-origin requests, to add CORS headers or pick a JSON-P transport\n* decorate requests needing some auth token\n* Mock requests in unit tests\n* Normalize responses from different service end-points\n",
"title": "XHR Plugins Use Cases"
},
"i18n": {
"body": "* Locale-specific bundles\n* i18n AMD plugin\n\n\n require(['i18n!some/nls/bundle'], function(text){\n // greets in your language\n alert(text.greeting);\n });",
"id": "i18n",
"title": "i18n",
"x": "0",
"y": "4"
},
"doh": {
"body": "* Async-friendly test runner\n* Includes \"robot\" for UI testing\n* AMD\n* Visual and audible feedback!\n\n<a class=\"example-link\" href=\"/resources/vendor/dojo-trunk/util/doh/runner.html?test=dojo/tests/_base/array\">doh runner</a>",
"id": "doh",
"title": "DOH",
"x": "0",
"y": "5"
},
"dojo-data": {
"body": "Consistent, ubiquitous interface to data\n\n* get, query, getIdentity\n* remove, put, save\n* observe\n\n",
"id": "dojo-data",
"title": "dojo/store",
"x": "0",
"y": "6"
},
"store-example": {
"id": "store-example",
"x": "1",
"y": "6",
"body": " var npcs = [\n { nom:\"coder\", alive:true, sprite:'coder.png' },\n { nom:\"deathknight\", alive:true, sprite:'deathknight.png' },\n { nom:\"crab\", alive: true, sprite:'crab.png' },\n { nom:\"goblin\", alive: false, sprite:'goblin.png' }\n ];\n var npcStore = new dojo.store.Memory({\n data:npcs, idProperty: \"nom\"\n });\n \n npcStore.query({alive:true}).forEach(function(npc){\n // this is called for each not-yet-dead npc\n console.log(npc.sprite);\n });",
"title": "Store example",
"classes": "compact"
},
"promises": {
"body": "Increasing adoption, notably in jQuery. \n\n* Do something then do something else\n* When something is done, do this other thing\n",
"id": "promises",
"title": "Promises",
"x": "0",
"y": "7"
},
"promises-example": {
"id": "promises-example",
"x": "1",
"y": "7",
"body": " require(['promise'], function(Promise){\n function pause(){\n var start = +new Date, \n promise = new Promise();\n \n setTimeout(function(){\n var now = +new Date;\n promise.resolve(start-now);\n }, 1000);\n \n return promise;\n }\n\n pause().then(function(elapsed){\n console.log(\"elapsed: \" + elapsed);\n });\n\n });",
"title": "Promises in Practice",
"classes": "compact"
},
"dojox-json": {
"body": "JSON utilities: \n\n* JSON References, \n* JSON Schema\n* JSON Date",
"id": "dojox-json",
"title": "dojox/json",
"x": "0",
"y": "8"
},
"json-refs": {
"id": "json-refs",
"x": "1",
"y": "8",
"body": " {\n \"x\": 0,\n \"y\": 0,\n \"type\": \"abyss\",\n \"$ref\": \"/location/0,0.json\"\n },\n",
"title": "JSON References",
"classes": "medium"
},
"json-schema": {
"id": "json-schema",
"x": "2",
"y": "8",
"body": " {\n \"description\":\"This is the JSON Schema for JSON Schemas.\",\n \"type\":[ \"object\", \"array\" ],\n \"items\":{\n \"type\":\"object\",\n \"properties\":{\n \"$ref\":\"$.properties\"\n },\n \"description\":\"When the schema is an array, it indicates that it is enforcing tuple typing...\"\n },\n \"properties\":{\n \"type\":{\n \"type\":[ \"string\", \"array\" ],\n \"items\":{\n \"$ref\":\"$.properties.type\"\n },\n ...\n }",
"title": "Schema Schema",
"classes": "compact"
},
"data-dojo": {
"body": "* data-dojo-type\n* data-dojo-config\n\n* Declarative UI\n* In-place configuration",
"id": "data-dojo",
"title": "data-dojo*",
"x": "0",
"y": "9"
},
"attachpoint": {
"body": "Binding between DOM and object properties",
"id": "attachpoint",
"title": "attachPoint",
"x": "0",
"y": "10"
},
"dojo-cla": {
"body": "Dojo Foundation owns copyright of all Dojo Toolkit contributions\n\nUnambiguous intellectual property ownership\n",
"id": "dojo-cla",
"title": "Dojo CLA",
"x": "0",
"y": "11"
},
"desert-island-books": {
"body": "* How do we consume libraries and toolkits\n* Granular, single-function modules\n* Pick-and-mix",
"id": "desert-island-books",
"title": "What If?",
"x": "0",
"y": "12"
},
"desert-island-luxury": {
"body": "####I've been Sam Foster\n* <a href=\"http://twitter.com/samfosteriam\">@samfosteriam</a>\n\n####Slides on Github\n\n<a href=\"https://github.com/sfoster/web5-desert-island-dojo-talk\">github.com/sfoster/web5-desert-island-dojo-talk</a>\n",
"id": "desert-island-luxury",
"title": "Thank You",
"x": "0",
"y": "13"
}
}
Jump to Line
Something went wrong with that request. Please try again.