grooscript greach

Post on 10-May-2015

1.125 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

My talk about at Greach Madrid 2014

TRANSCRIPT

grooscript@grooscript

http://grooscript.org

grooscript@gmail.com

Jorge Franco

About me

Developer, I love it

Lazy in english at school

Living in Madrid

Working at Osoco

Grooscript developer

@jfrancoleza

jorge.franco.leza@gmail.com

The players

Web developer

Leave your comfort zone

Move to the client side

Doesn’t run!

on browsers

Do something! No excuses

You can do a library, resolve issues, create a plugin, give feedback,

help other projects, … !

You will learn a lot

The wire

Groovy to Javascript converter

Groovy 2 to Javascript ECMAScript 5

Open source project, Apache 2 license

Library with Groovy and GPars dependencies

No special Javascript objects or functions

Converted code requires grooscript.js to run

Different conversion options

Grails plugin, npm package, gradle plugin

What is grooscript?

File.groovy File.js

Conversion!Options

grooscript.js

Convert Groovy files

Groovy code

Javascript result

Javascript

GroovyJava

More Ja

vasc

ript fr

iendly

Types, inheritance, java 8, …

metaClass

ListsClosures

Operators

Dsl’s

ExpandoMaps

beans

methodMissingMixins

Categories

LimitationsGroovy / Java not fully supported Working in groovy-core No good support for inheritance No methods with same name Basic support in metaClass No packages, no classes with same name No metainfo, expandoMetaClass, class info Only AST transformations applied in semantic phase No complex Java / Groovy types … see documentation for more info on grooscript.org

Directly convert code

Conversion options

convertDependencies - boolean - default false

classPath - List<String> or String - default null - Ex: ‘src/groovy’

customization - Closure - default null

mainContextScope - List<String> - default null

initialText / finalText - String - default null

recursive - boolean - default false

Convert dependencies option

Car.groovy

Wheel.groovy

Car.jsconvert

== optionwheel code

included

Main context scope

Customization

• Requires Groovy 2.1, the closure is passed to withConfig(conf)

• More info in http://docs.codehaus.org/display/GROOVY/Advanced+compiler+configuration

• Sometimes you don’t know where to find a variable

• When conversion is done, some variables come from other contexts

• grooscript.js sometimes tries to find missed variables with eval

• Node.js eval not working same way that browsers do

• You can define variables or function names with this option

• Ex. [‘$’, ‘myAwesomeFunction’, ‘myMissedVariable’]

Feature: Annotations

@GsNotConvert @GsNative

Feature: Daemon

>phantomjs myTest.js

Inject grooscript.js and jquery

Use Groovy script abilities

I want to be Groovier

@AST

http://phantomjs.org/

Please code in Groovy!

Mandatory Screen capture Before start test

More console infoAccept basic parameters

Works fine in GroovyTestCaseNot so well in Spock

Have to define

Phantom.js path

Feature: PhantomJsTest

Example

Feature: builder

grooscript-builder.js

Demo websockets with Vert.xhttps://github.com/chiquitinxx/demoGroovyMeteor

http://www.meteor.com

https://vimeo.com/59395085

https://github.com/chiquitinxx/grooscript-vertx-plugin

http://www.grails.org/plugin/grooscript-vertx

v 0.4

Grooscript Vert.x Plugin

Convert Groovy code to Javascript

Run conversion daemon

Websockets

Eventbus bridge

New port openEvents in the client

Auto reload pages

Both are optional

http://grooscript.org/pluginManual/

v 1.3.1

Requires Java 1.7

Differences?Renders on server

Renders on the client

Conversions are cached with cache plugin

Grooscript tags auto - import js files needed

Grails port 8080

Vert.x port 8085

Browser gsp

eventBus

http

websockets

Config.groovy

BootStrap.groovy Chat sample

main.gsp

More eventsBuilder

Where

Listen events Render on load

Send event message

= println

Execute on event message

Don’t use ${} in grooscript tags

Strong dependency Resources plugin

Can put code in a .groovy file

Domain classes in the client**Experimental, it requires Groovy 2.1 (grails 2.3)

• validate, clientValidations ** • hasErrors • count • list * without params • get • save * without params • delete

Domain classes connected with the server**Experimental, it requires Groovy 2.1 (grails 2.3)

• list • get • save • delete

PhantomJs Tests**Not working in Grails 2.3, need improvements

New test phase phantomjs

Tests in test/phantomjs

More features

features, features…

next release 0.5

Change resources plugin dependencies to Require.js

Improve domain options

PhantomJs tests improvements

Move to websockets with Spring 4 in 2.4

and many more…

Remote domain class to grails REST support

https://github.com/chiquitinxx/grooscript-gradle-plugin

v 0.2

Gradle plugin

Add in your build.gradle

http://grooscript.wordpress.com/2014/02/22/starting-with-grooscript/

Create more conversion tasks: http://grooscript.wordpress.com/2014/01/31/61/

Converted files destination

Require.js setup file

Files to be converted

Bind id’s to presenter properties

Demo springboot

http://projects.spring.io/spring-boot/

REST - Require.js - Grooscript Gradle Plugin - H2

https://github.com/chiquitinxx/springboot-rest-demo

https://github.com/chiquitinxx/grooscript/tree/master/npm

Last demo :)

Node.js is very fast!http://grooscript.wordpress.com/2014/01/10/impressive-node-js-v8-speed/

https://github.com/chiquitinxx/colors

Final topics

Coming next months…

grooscript 0.5

gradle plugin 0.3

Improve Groovy support (Java 8 too) and Javascript friendly

Add jQuery and binder utilities

Do tests also with Node.js

Wait function in PhantomJs tests

Remove binder and integrates with web frameworks

website

Back to dynamic, online conversions and robots!

Improve documentation

Why would I use grooscript?

• Create small modules to use in your views • You can continue developing in Groovy • Can use dsl’s, typeCheck, AST’s,… in the browser • You have all the java tools and IDE’s • You can work with new Javascript tools from Groovy • Don’t repeat code in two languages • Single development environment • Create your own architecture in Groovy • Don’t learn another “to Javascript” tool

Thank you!

All people reading this

680 motivation clicks

Jetbrains for IntelliJ IDEA v13 open source license

Special thanks to René, @glaforge and @marioggar

Community, I love your feedback

Please…

Version 0.4.4, time to improve

Questions?

Beer time!

top related