Script - PowerPoint PPT Presentation

1 / 21
About This Presentation
Title:

Script

Description:

Compile-time consistency check. Refactoring support ... Compile C# into javascript. Execute from HTML. namespace.class used to instantiate objects ... – PowerPoint PPT presentation

Number of Views:78
Avg rating:3.0/5.0
Slides: 22
Provided by: gojko
Category:
Tags: compile | script

less

Transcript and Presenter's Notes

Title: Script


1
Script - the .NET response to Google Web Toolkit
  • Gojko Adzic
  • http//gojko.net
  • gojko_at_gojko.com

2
Why should you care?
  • A much more productive way to write and maintain
    complex JavaScript code
  • Compile-time consistency check
  • Refactoring support
  • Full Intellisense for DOM and your own JS classes
  • Lots of other VS IDE benefits
  • Free (not opensource, though)

3
What Script is not
  • It does not hide browser complexity
  • It does not abstract away JS peculiarities
  • It is not a general-purpose .NET to browser
    converter
  • It is not a widget/effect library (it has some,
    but not nearly like GWT)

4
Under the hood
  • Compiles C into JS directly
  • Replacement for System namespace, a mashup of
    .NET and JS
  • Sscorlib.dll in C for Intellisense,
  • sscorlib.js in the browser
  • sscompat.js provides cross-browser compatibility
  • System.DHTML.Document, System.Script
    System.DHTML.Window link to the environment

5
A very simple example
  • Script library project
  • Compile C into javascript
  • Execute from HTML
  • namespace.class used to instantiate objects
  • If you do the web site by hand, dont forget
    sscompat.js!

6
Visual Studio Integration
  • Project templates for class libraries and web
    sites
  • C editor for scriptlets (has some bugs, though)

7
MSBuild Integration
  • ScriptSharp target does the job for you ltImport
    Project"(ProgramFiles)\nStuff\ScriptSharp\v1.0\n
    Stuff.ScriptSharp.targets" /gt
  • Remember ltNoStdLibgtTruelt/NoStdLibgt
  • Automatically added by the VS ScriptSharp template

8
Scriptlets
  • Script webforms components
  • Add Script assembly and page control to
    web.config
  • Use main() as an entry point to the component
  • No need to worry about script initialisation
  • Put all scripts into App_Scripts folder (or use a
    VS template to create the project)

9
AJAX support
  • Add ltscript type"text/javascript"
    src"App_Scripts/ssfx.Core.Debug.js" gt
  • lt/scriptgt
  • Use ScriptFX.Net.HTTPRequest for cross-browser
    compatible AJAX requests
  • Supports Script transport for Cross-Domain Ajax!

10
Ajax/JSON
  • private void OnOKButtonClick(object sender,
    EventArgs e)
  • Dictionary parameters new Dictionary()
  • parameters"prefix" _prefixTextBox.Text
  • parameters"count" 5
  • _request HTTPRequest.CreateRequest("Comp
    letionList.ashx/GetItemsViaPost", HTTPVerb.POST)
  • _request.SetContentAsJSON(parameters)
  • _request.Invoke(new HTTPRequestCompletedCa
    llback(OnRequestComplete), null)
  • private void OnRequestComplete(HTTPRequest
    request, object context)
  • if (_request request)
  • string values (string)_request.R
    esponse.GetObject()
  • _valuesLabel.Text values.Join(",
    ")

11
Behaviours
  • Declaratively attach functionality to DOM
    elements
  • Taken from ASP.NET Ajax (Atlas)
  • Popups, watermark, autocomplete, overlay etc
  • Not a lot of widgets, but you can use ExtJS with
    ExtSharp!

12
More advanced options
  • FxCop code analysis
  • Unit testing should follow soon
  • ASP.NET Ajax instead of sscorelib
  • Some silverlight support
  • MSN Messenger APIs
  • Facebook client API
  • Sidebar Gadgets

13
Quirks Namespace references
  • Does not work
  • DOMElement runner System.DHTML.Document.GetElemen
    tById(
  • runnerElementId)
  • Works
  • Using System.DHTML
  • DOMElement runner Document.GetElementById(runner
    ElementId)

14
Quirks Compilation issues
  • VS New class wizard adds System, System.Data and
    System.Xml references
  • Script compilation breaks as a result
  • Does not resolve indirect module dependencies
  • Nested namespaces not supported

15
Quirks 0 and null comparisons
  • if (something null) and if (something 0)
    compiled into if (!something)
  • Try this
  • Number a null
  • if (a 0)
  • Script.Alert("I shouldn't be seeing this???")
  • Number b 0
  • if (b null)
  • Script.Alert("I shouldn't be seeing this
    either???")

16
Quirks Scriptlets
  • Scriptlet tag has to be inside a form tag
  • If not, nothing happens, but you dont get an
    alert
  • Inline Scriptlets use ScriptletArguments,
    pre-compiled ones use Dictionary

17
Quirks Events
  • DOMEventHandler expects void() delegate
  • Use Window.Event.ReturnValue to return false from
    an event

18
Whats good?
  • Working with complex JS files is much very
    productive
  • VS integration
  • MSBuild integration
  • Basic Documentation is great

19
Whats not so good?
  • Some unintuitive mismatch between C and JS
    type conversions, 0 and null
  • Advanced stuff not documented that well
  • See the samples zip in the distribution!
  • Still not opensource

20
Where next?
  • http//gojko.net
  • http//projects.nikhilk.net/ScriptSharp/
  • http//code.google.com/p/extsharp/
  • http//www.codeplex.com/JQuerySharp

21
What next?
  • Dependency Injection with Castle Oct 23rd
  • Asynchronous Enterprise Applications with
    NServiceBus Nov 27th
  • TDD with .NET Dec 17th
  • ALT.NET Community evening Jan 13th
Write a Comment
User Comments (0)
About PowerShow.com