This talk discusses techniques for deploying YUI 3 custom modules within a larger server application environment, using a working application as a reference. You'll learn how to streamline your development and deployment process, ways to organize your code for maximum efficiency, how to integrate with the Eclipse IDE, and some tips and tricks around build strategies and server-side tooling.
13. Goals for UI Dev and Deploy
1. Component framework
14. Goals for UI Dev and Deploy
1. Component framework
2. Managed dependencies
15. Goals for UI Dev and Deploy
1. Component framework
2. Managed dependencies
3. Build components automatically
16. Goals for UI Dev and Deploy
1. Component framework
2. Managed dependencies
3. Build components automatically
4. No manual assembly required — Auto deploy
75. Automatic Building in Eclipse
‣ Eclipse: An open, extensible development
platform (i.e. an IDE)
76. Automatic Building in Eclipse
‣ Eclipse: An open, extensible development
platform (i.e. an IDE)
‣ External Tools Builders
77. Automatic Building in Eclipse
‣ Eclipse: An open, extensible development
platform (i.e. an IDE)
‣ External Tools Builders
‣ Integrated Ant Builder — YUI Builder
defines Ant tasks
78. Automatic Building in Eclipse
‣ Eclipse: An open, extensible development
platform (i.e. an IDE)
‣ External Tools Builders
‣ Integrated Ant Builder — YUI Builder
defines Ant tasks
‣ Build triggers
79. Automatic Building in Eclipse
‣ Eclipse: An open, extensible development
platform (i.e. an IDE)
‣ External Tools Builders
‣ Integrated Ant Builder — YUI Builder
defines Ant tasks
‣ Build triggers
‣ Cmd + S = JSLint, Compress, & Deploy
82. Custom Modules — Deployment Ready
‣ Derivatives created
‣ Debug: has Y.log calls
83. Custom Modules — Deployment Ready
‣ Derivatives created
‣ Debug: has Y.log calls
‣ Min: compressed via YUI Compressor, served
in production
84. Custom Modules — Deployment Ready
‣ Derivatives created
‣ Debug: has Y.log calls
‣ Min: compressed via YUI Compressor, served
in production
‣ Ability to debug code, or check performance
(page-load times)
86. Generating YUI 3 Configuration
‣ YUI 3 configuration can be done on the server
87. Generating YUI 3 Configuration
‣ YUI 3 configuration can be done on the server
‣ Combine:
88. Generating YUI 3 Configuration
‣ YUI 3 configuration can be done on the server
‣ Combine:
‣ Where YUI is Hosted
89. Generating YUI 3 Configuration
‣ YUI 3 configuration can be done on the server
‣ Combine:
‣ Where YUI is Hosted
‣ Custom Module Metadata
90. Generating YUI 3 Configuration
‣ YUI 3 configuration can be done on the server
‣ Combine:
‣ Where YUI is Hosted
‣ Custom Module Metadata
‣ Other YUI Instance config
91. Generating YUI 3 Configuration
‣ YUI 3 configuration can be done on the server
‣ Combine:
‣ Where YUI is Hosted
‣ Custom Module Metadata
‣ Other YUI Instance config
‣ Write as JavaScript Object literal
100. YUI 3 w/ Auto Build & Gen. Config
‣ Depends on specifics
101. YUI 3 w/ Auto Build & Gen. Config
‣ Depends on specifics
‣ YUI 3 fits with larger dev & deploy process
102. YUI 3 w/ Auto Build & Gen. Config
‣ Depends on specifics
‣ YUI 3 fits with larger dev & deploy process
‣ Faster development
103. YUI 3 w/ Auto Build & Gen. Config
‣ Depends on specifics
‣ YUI 3 fits with larger dev & deploy process
‣ Faster development
‣ Simplified deployment
104. YUI 3 w/ Auto Build & Gen. Config
‣ Depends on specifics
‣ YUI 3 fits with larger dev & deploy process
‣ Faster development
‣ Simplified deployment
‣ YUI 3 + Streamlined Dev & Deploy = :-)
105. Thanks! Any Questions?
‣ Eric Ferraiuolo
‣ http://twitter.com/ericf
‣ http://925html.com
‣ http://ericf.name
Notes de l'éditeur
Who are you?
What are you talking about?
You know about YUI 3?
- Developing rich UIs
- Leveraging YUI 3
- Logismo case-study, dissect
- Integrate with your projects as a whole
- Developing rich UIs
- Leveraging YUI 3
- Logismo case-study, dissect
- Integrate with your projects as a whole
- Developing rich UIs
- Leveraging YUI 3
- Logismo case-study, dissect
- Integrate with your projects as a whole
- Developing rich UIs
- Leveraging YUI 3
- Logismo case-study, dissect
- Integrate with your projects as a whole
- For all types of web apps?
- Implementation phase - how I see UIs
----------------
- Organize: Disassemble into components
- making dev easier (focus, file management)
- Link: connect/wire/glue components together
- Construct: re-assemble in Browser
- State-of-the-world
- Implementation phase - how I see UIs
----------------
- Organize: Disassemble into components
- making dev easier (focus, file management)
- Link: connect/wire/glue components together
- Construct: re-assemble in Browser
- State-of-the-world
- Implementation phase - how I see UIs
----------------
- Organize: Disassemble into components
- making dev easier (focus, file management)
- Link: connect/wire/glue components together
- Construct: re-assemble in Browser
- State-of-the-world
- Make my life easier
- For non-trivial apps/projects
- Code organization
- Benefits at each stage
------------
- Tools for making Widgets
- Stop worrying about what depends on what
- Deploy-ready on file save
- UI is told about the env.
- Make my life easier
- For non-trivial apps/projects
- Code organization
- Benefits at each stage
------------
- Tools for making Widgets
- Stop worrying about what depends on what
- Deploy-ready on file save
- UI is told about the env.
- Make my life easier
- For non-trivial apps/projects
- Code organization
- Benefits at each stage
------------
- Tools for making Widgets
- Stop worrying about what depends on what
- Deploy-ready on file save
- UI is told about the env.
- Make my life easier
- For non-trivial apps/projects
- Code organization
- Benefits at each stage
------------
- Tools for making Widgets
- Stop worrying about what depends on what
- Deploy-ready on file save
- UI is told about the env.
- How to leverage the greatness of YUI 3
- Component Infra: Organizing code and features
- Module System: Manages and loads dependencies
- Core to YUI3
- Custom Modules
- Build System — Still need to make building automatic
- Runtime Config — Used to assemble “the world”
- Tell the YUI instance what’s going on
- Component Infra: Organizing code and features
- Module System: Manages and loads dependencies
- Core to YUI3
- Custom Modules
- Build System — Still need to make building automatic
- Runtime Config — Used to assemble “the world”
- Tell the YUI instance what’s going on
- Component Infra: Organizing code and features
- Module System: Manages and loads dependencies
- Core to YUI3
- Custom Modules
- Build System — Still need to make building automatic
- Runtime Config — Used to assemble “the world”
- Tell the YUI instance what’s going on
- Component Infra: Organizing code and features
- Module System: Manages and loads dependencies
- Core to YUI3
- Custom Modules
- Build System — Still need to make building automatic
- Runtime Config — Used to assemble “the world”
- Tell the YUI instance what’s going on
- Organize app’s UI into functional components
- YUI 3 comes in big here
- Still beta but… used by Yahoo Homepage
- Something that was missing from YUI 2
- e.g. Yahoo Search w/ Search Assist
- Organize app’s UI into functional components
- YUI 3 comes in big here
- Still beta but… used by Yahoo Homepage
- Something that was missing from YUI 2
- e.g. Yahoo Search w/ Search Assist
- Organize app’s UI into functional components
- YUI 3 comes in big here
- Still beta but… used by Yahoo Homepage
- Something that was missing from YUI 2
- e.g. Yahoo Search w/ Search Assist
- Organize app’s UI into functional components
- YUI 3 comes in big here
- Still beta but… used by Yahoo Homepage
- Something that was missing from YUI 2
- e.g. Yahoo Search w/ Search Assist
- Organize app’s UI into functional components
- YUI 3 comes in big here
- Still beta but… used by Yahoo Homepage
- Something that was missing from YUI 2
- e.g. Yahoo Search w/ Search Assist
- Organize app’s UI into functional components
- YUI 3 comes in big here
- Still beta but… used by Yahoo Homepage
- Something that was missing from YUI 2
- e.g. Yahoo Search w/ Search Assist
- A strategy I’ve been taking
- Inter-component comm. via Top-Level Component
- I use Y.Base for this component
- Managed Attributes & Event Target
- A strategy I’ve been taking
- Inter-component comm. via Top-Level Component
- I use Y.Base for this component
- Managed Attributes & Event Target
- A strategy I’ve been taking
- Inter-component comm. via Top-Level Component
- I use Y.Base for this component
- Managed Attributes & Event Target
- Y.io polling example
-------
- Custom Events to describe app
- Easy to go back to at later point
- Top-Level component get’s requests, decides what to do
- Tells other components
- Y.io polling example
-------
- Custom Events to describe app
- Easy to go back to at later point
- Top-Level component get’s requests, decides what to do
- Tells other components
- Y.io polling example
-------
- Custom Events to describe app
- Easy to go back to at later point
- Top-Level component get’s requests, decides what to do
- Tells other components
- Y.io polling example
-------
- Custom Events to describe app
- Easy to go back to at later point
- Top-Level component get’s requests, decides what to do
- Tells other components
- Y.io polling example
-------
- Custom Events to describe app
- Easy to go back to at later point
- Top-Level component get’s requests, decides what to do
- Tells other components
- Benefits of turning into custom modules?
- Managed dependencies
- Custom Modules, something new to YUI 3
--------
- usually 1:1 parity with components
- Benefits of turning into custom modules?
- Managed dependencies
- Custom Modules, something new to YUI 3
--------
- usually 1:1 parity with components
- Benefits of turning into custom modules?
- Managed dependencies
- Custom Modules, something new to YUI 3
--------
- usually 1:1 parity with components
What is Logismo?
What is Logismo?
What is Logismo?
What is Logismo?
- Can see what the app is doing, high-level
- Written to HTML via server
- YUI Instance config is dynamic, generated by server
- Logismo, the top-level component, configured with info only the server has
- path to the log events, could change in productions; make it variable
- YUI().use() reduced to this!
- Server-side code built along with UI
- Don’t have to switch from IDE to build
- Other developers don’t worry about building UI
- UI dev is too complex for backend coders anyways :-)
- Server-side code built along with UI
- Don’t have to switch from IDE to build
- Other developers don’t worry about building UI
- UI dev is too complex for backend coders anyways :-)
- Server-side code built along with UI
- Don’t have to switch from IDE to build
- Other developers don’t worry about building UI
- UI dev is too complex for backend coders anyways :-)
- Eclipse is the tool we use
- Want to have JS be build like our Java code is built, i.e. when it changes
- YUI Builder works with YUI 3 Custom Modules
- Make changes, see results, both server-side (Java) code and client code (JS).
- Eclipse is the tool we use
- Want to have JS be build like our Java code is built, i.e. when it changes
- YUI Builder works with YUI 3 Custom Modules
- Make changes, see results, both server-side (Java) code and client code (JS).
- Eclipse is the tool we use
- Want to have JS be build like our Java code is built, i.e. when it changes
- YUI Builder works with YUI 3 Custom Modules
- Make changes, see results, both server-side (Java) code and client code (JS).
- Eclipse is the tool we use
- Want to have JS be build like our Java code is built, i.e. when it changes
- YUI Builder works with YUI 3 Custom Modules
- Make changes, see results, both server-side (Java) code and client code (JS).
- Eclipse is the tool we use
- Want to have JS be build like our Java code is built, i.e. when it changes
- YUI Builder works with YUI 3 Custom Modules
- Make changes, see results, both server-side (Java) code and client code (JS).
- Provides debugging support during dev
- Provides minified versions which will run in prod to test during dev
- Provides debugging support during dev
- Provides minified versions which will run in prod to test during dev
- Provides debugging support during dev
- Provides minified versions which will run in prod to test during dev
- Provides debugging support during dev
- Provides minified versions which will run in prod to test during dev
- Already have config for server-side software
- config YUI along-side other project config
- Dynamic configuration, finalized at last minute
- Respond to changes in the software environment
- Already have config for server-side software
- config YUI along-side other project config
- Dynamic configuration, finalized at last minute
- Respond to changes in the software environment
- Already have config for server-side software
- config YUI along-side other project config
- Dynamic configuration, finalized at last minute
- Respond to changes in the software environment
- Already have config for server-side software
- config YUI along-side other project config
- Dynamic configuration, finalized at last minute
- Respond to changes in the software environment
- Already have config for server-side software
- config YUI along-side other project config
- Dynamic configuration, finalized at last minute
- Respond to changes in the software environment
- Already have config for server-side software
- config YUI along-side other project config
- Dynamic configuration, finalized at last minute
- Respond to changes in the software environment
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- YUI3Config class writes the instance config as an object literal
- You’re environment will be different
- You can tie your UI code w/ rest of project
- Nice to not tear everything down for small changes, like server
- You’re environment will be different
- You can tie your UI code w/ rest of project
- Nice to not tear everything down for small changes, like server
- You’re environment will be different
- You can tie your UI code w/ rest of project
- Nice to not tear everything down for small changes, like server
- You’re environment will be different
- You can tie your UI code w/ rest of project
- Nice to not tear everything down for small changes, like server
- You’re environment will be different
- You can tie your UI code w/ rest of project
- Nice to not tear everything down for small changes, like server