Slide 1

Slide 1 text

YUI on Node.js Ryuichi Okumura

Slide 2

Slide 2 text

YUI 3.5.0 “3.5.0 final is tentatively scheduled for April 3rd. We will post another update when the date is finalized.” via: http://www.yuiblog.com/blog/2012/03/12/update-on-3-5-0-release-schedule/

Slide 3

Slide 3 text

via: http://twitter.com/#!/izs/status/166651576226807808

Slide 4

Slide 4 text

YUI on browser YUI().use(‘yql’, function (Y) { // YUI Sandbox Y.YQL(‘select * from ...’); });

Slide 5

Slide 5 text

YUI on Node.js $ npm install yui (only dependency “request”) // AND var YUI = require(‘yui’).YUI; YUI().use(‘yql’, function (Y) { Y.YQL(‘select * from ...’); }); // OR var Y = require(‘yui/yql’); Y.YQL(‘select * from ...’);

Slide 6

Slide 6 text

Work with DOM // npm install jsdom var jsdom = require('jsdom'); var YUI = require('yui').YUI; var document = jsdom.jsdom('

Hello!!

'); var window = document.createWindow(); YUI({ win: window, doc: document }).use('node-base', function (Y) { Y.log(Y.one("h1").getContent()); });

Slide 7

Slide 7 text

YUI module module.js YUI.add('my-module', function(Y) { Y.MyModule = function () { Y.YQL(‘select * from ...’, function (r) { Y.log(r.query.results); }); }; });

Slide 8

Slide 8 text

npm packaging package.json { "version": "0.0.1", "name": "my-module", "dependencies": { "yui": "*" }, "main": "./index.js" }

Slide 9

Slide 9 text

npm packaging index.js var path = require('path'); var meta = { 'my-module': { requires: ['yql'], fullpath: path.join(__dirname, 'module.js') } }; module.exports = { module: function() { var inst = require('yui').getInstance(); inst.applyConfig({useSync: true, modules: meta}); return inst.use(Object.keys(meta)); }, metadata: function() { return meta; } }

Slide 10

Slide 10 text

npm packaging How to use my module: // npm install my-module var mod = require('my-module'); var YUI = require('yui').YUI; YUI({ modules: mod.metadata() }).use('my-module', function (Y) { Y.MyModule(); });

Slide 11

Slide 11 text