Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Side by Side Diff: examples/js/users-guide.md

Issue 821403003: Changes magic sequence to '!#mojo ' and strips 'mojo ' when building url (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: two more Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « examples/js/share_echo_target.js ('k') | examples/js/wget.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Running Mojo Applications 1 # Running Mojo Applications
2 2
3 A Mojo application written in JavaScript is launched with mojo_shell like this: 3 A Mojo application written in JavaScript is launched with mojo_shell like this:
4 4
5 ``` 5 ```
6 mojo_shell <js-application-url> 6 mojo_shell <js-application-url>
7 ``` 7 ```
8 8
9 Where js-application-url is a URL understood by the shell. For example 9 Where js-application-url is a URL understood by the shell. For example
10 a file or an http URL that names a JS source file. The JS file itself 10 a file or an http URL that names a JS source file. The JS file itself
11 must begin with a Mojo "shebang" that specifies the Mojo URL of the JS 11 must begin with a Mojo "shebang" that specifies the Mojo URL of the JS
12 content handler. In other words, the first line of the JS source file 12 content handler. In other words, the first line of the JS source file
13 must be: 13 must be:
14 14
15 ```javascript 15 ```javascript
16 #!mojo:js_content_handler 16 #!mojo mojo:js_content_handler
17 ``` 17 ```
18 18
19 Following the shebang should be a single AMD module called "main" whose value 19 Following the shebang should be a single AMD module called "main" whose value
20 is an Application subclass. The JS content handler will create an instance of 20 is an Application subclass. The JS content handler will create an instance of
21 the Application and make it the client of the Mojo shell. The JS content handler 21 the Application and make it the client of the Mojo shell. The JS content handler
22 is itself a Mojo application and it's responsible for creating an instance of V8 22 is itself a Mojo application and it's responsible for creating an instance of V8
23 and loading the "main" JS module and all of the modules the main module 23 and loading the "main" JS module and all of the modules the main module
24 depends on. 24 depends on.
25 25
26 ## JavaScript Classes 26 ## JavaScript Classes
27 27
28 The JS content handler depends on the ECMAScript6 ("Harmony") classes feature. 28 The JS content handler depends on the ECMAScript6 ("Harmony") classes feature.
29 29
30 As of January 2015 Chrome enables Harmony classes by default. 30 As of January 2015 Chrome enables Harmony classes by default.
31 31
32 32
33 # The JS Application Class 33 # The JS Application Class
34 34
35 Mojo JS applications are defined with the Application class. The 35 Mojo JS applications are defined with the Application class. The
36 Application class handles incoming requests for services and provides 36 Application class handles incoming requests for services and provides
37 services of its own. 37 services of its own.
38 38
39 This is the overall structure of a JS Mojo application: 39 This is the overall structure of a JS Mojo application:
40 40
41 ```javascript 41 ```javascript
42 #!mojo:js_content_handler 42 #!mojo mojo:js_content_handler
43 43
44 define("main", ["mojo/services/public/js/application", 44 define("main", ["mojo/services/public/js/application",
45 <list of other modules that this application depends on> 45 <list of other modules that this application depends on>
46 ], 46 ],
47 function(application, <one parameter per dependent module>) { 47 function(application, <one parameter per dependent module>) {
48 class MyApplication extends application.Application { 48 class MyApplication extends application.Application {
49 constructor(appShell, url) { 49 constructor(appShell, url) {
50 super(appShell, url); // Initializes this.shell, this.url. 50 super(appShell, url); // Initializes this.shell, this.url.
51 // MyApplication initializations here. 51 // MyApplication initializations here.
52 } 52 }
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 ### Requesting a Service Using the Application's Shell 423 ### Requesting a Service Using the Application's Shell
424 424
425 The Shell's `connectToService()` method returns a proxy to a Mojo 425 The Shell's `connectToService()` method returns a proxy to a Mojo
426 service provided by another application. The proxy can be used immediately. 426 service provided by another application. The proxy can be used immediately.
427 427
428 Given the URL of a Mojo application that implements the EchoService we 428 Given the URL of a Mojo application that implements the EchoService we
429 can use the application's shell to get an EchoService proxy. Here's a 429 can use the application's shell to get an EchoService proxy. Here's a
430 complete application: 430 complete application:
431 431
432 ```javascript 432 ```javascript
433 #!mojo:js_content_handler 433 #!mojo mojo:js_content_handler
434 434
435 define("main", [ 435 define("main", [
436 "console", 436 "console",
437 "mojo/services/public/js/application", 437 "mojo/services/public/js/application",
438 "services/js/test/echo_service.mojom" 438 "services/js/test/echo_service.mojom"
439 ], function(console, appModule, echoModule) { 439 ], function(console, appModule, echoModule) {
440 440
441 class EchoShellRequest extends appModule.Application { 441 class EchoShellRequest extends appModule.Application {
442 initialize(args) { 442 initialize(args) {
443 var url = "file:/foo/bar/echo.js"; 443 var url = "file:/foo/bar/echo.js";
(...skipping 16 matching lines...) Expand all
460 460
461 The echo_share.js and echo_share_target.js applications demonstrate this. 461 The echo_share.js and echo_share_target.js applications demonstrate this.
462 462
463 463
464 ### Providing a Service with an Application's ServiceProvider 464 ### Providing a Service with an Application's ServiceProvider
465 465
466 A complete application that unconditionally provides the EchoService 466 A complete application that unconditionally provides the EchoService
467 looks like this: 467 looks like this:
468 468
469 ```javascript 469 ```javascript
470 #!mojo:js_content_handler 470 #!mojo mojo:js_content_handler
471 471
472 define("main", [ 472 define("main", [
473 "mojo/services/public/js/application", 473 "mojo/services/public/js/application",
474 "services/js/test/echo_service.mojom" 474 "services/js/test/echo_service.mojom"
475 ], function(appModule, echoModule) { 475 ], function(appModule, echoModule) {
476 476
477 class EchoService extends appModule.Application { 477 class EchoService extends appModule.Application {
478 acceptConnection(initiatorURL, serviceProvider) { 478 acceptConnection(initiatorURL, serviceProvider) {
479 function EchoServiceImpl(client) { 479 function EchoServiceImpl(client) {
480 this.echoString = function(s) { 480 this.echoString = function(s) {
(...skipping 20 matching lines...) Expand all
501 501
502 The echo_share.js and echo_share_target.js applications demonstrate this. 502 The echo_share.js and echo_share_target.js applications demonstrate this.
503 503
504 ## Final note 504 ## Final note
505 505
506 An initiator's serviceProvider object can be retained and used to 506 An initiator's serviceProvider object can be retained and used to
507 request or provide services at any time, not just from within 507 request or provide services at any time, not just from within
508 application's acceptConnection() method. 508 application's acceptConnection() method.
509 509
510 510
OLDNEW
« no previous file with comments | « examples/js/share_echo_target.js ('k') | examples/js/wget.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698