23
Platypus.js Enterprise JavaScript Container Доклад: Марат Гайнуллин

JavaScript в enterprise приложениях

Embed Size (px)

DESCRIPTION

Слайды с выступления Марата Гайнуллина на MoscowJS 16

Citation preview

Page 1: JavaScript в enterprise приложениях

Platypus.js

Enterprise JavaScript

Container

Доклад: Марат Гайнуллин

Page 2: JavaScript в enterprise приложениях

Чтение данных без ORM-а

1. var results = executeQuery(“some sql select text”);

2. while(!results.eof()){

3. results.first();

4. var address = results.fieldByName(“address”).asString();

5. var phone = results.fieldByName(“phone”).asString();

6. var email = results.fieldByName(“phone”).asString();

7. var dateOfBirth = results.fieldByName(“birth”).asDate();

8. }

2

Page 3: JavaScript в enterprise приложениях

Использование ORM-а

1. var customers = Models.find(“select * from customers …”);

2. customers.forEach(function(aCustomer){

3. …

4. });

5. var fifthCustomer = customers[4];

6. If(customers[2].name == =“”){

7. var cName = prompt(“Введите имя”);

8. customers[2].name = cName;

9. }

3

Page 4: JavaScript в enterprise приложениях

Запрос как источник схемы данных

4

Page 5: JavaScript в enterprise приложениях

Platypus.js ORM

1. /**

2. * Devices communication module.

3. * @acceptor asc6

4. */

5. function Asc6Acceptor() {

6. var self = this;

7. var model = P.loadModel(this.constructor.name);

8. model.packets.elementClass = Packet;

9. var packets = model.packets;

10.

11. self.flush = function () {

12. model.save(function (aAffected) {

13. log(“saved “);

14. }, function (e) {

15. log(“failed”);

16. });

17. };

18.}5

Page 6: JavaScript в enterprise приложениях

Knockout.js

1. function TaskListViewModel() {

2. // Data

3. var self = this;

4. self.tasks = ko.observableArray([]);

5. self.newTaskText = ko.observable();

6. self.incompleteTasks = ko.computed(function () {

7. return ko.utils.arrayFilter(

8. self.tasks(),

9. function (task) {

10. return !task.isDone()

11. });

12. });

13. }

14. ko.applyBindings(new TaskListViewModel());

6

Page 7: JavaScript в enterprise приложениях

Bookshelf.js

1. var Customer = bookshelf.Model.extend({

2. initialize: function () {

3. this.on('saving', this.validateSave);

4. },

5. validateSave: function () {

6. return checkit(rules).run(this.attributes);

7. }

8. });

7

Page 8: JavaScript в enterprise приложениях

Backbone.js

1. var Subject = {};

2. _.extend(Subject, Backbone.Events);

3. Subject.on("alert", function (msg) {

4. alert("Triggered " + msg);

5. });

6. Subject.trigger("alert", "an event");

8

Page 9: JavaScript в enterprise приложениях

Platypus.js Декларативный жизненный цикл

1. /**2. * @resident3. * 4. */5. function GlobalModule() {6. }

7. /**8. * @stateless9. * 10. */11.function SessionModule() {12.}

9

Page 10: JavaScript в enterprise приложениях

Platypus.js Декларативная безопасность

1. /**2. * @rolesAllowed buh3. */4. function SessionModule() {5. var self = this;6. /**7. * @rolesAllowed manager 8. */9. self.calcProfit = function () {10. };11.}

10

Page 11: JavaScript в enterprise приложениях

Platypus.js Чистый прикладной код

1. function Packet(){

2. // Pure application class

3. Packet.superclass.constructor.apply(this, arguments);

4. self = this;

5. self.calcVolume = function(){};

6. self.logtitude = 67;

7. self.latitude = 34;

8. self.calcTime = function(){};

9. }

10.//…

11.var p = new Packet();

12.p. calcVolume();

13.p. calcTime();

14.//…

11

Page 12: JavaScript в enterprise приложениях

12

Page 13: JavaScript в enterprise приложениях

Platypus UI

13

Page 14: JavaScript в enterprise приложениях

14

Page 15: JavaScript в enterprise приложениях

Java SE Client Browse

r

15

Page 16: JavaScript в enterprise приложениях

16

Page 17: JavaScript в enterprise приложениях

17

Page 18: JavaScript в enterprise приложениях

Java EE

18

Page 19: JavaScript в enterprise приложениях

Node

19

Page 20: JavaScript в enterprise приложениях

Platypus

20

Page 21: JavaScript в enterprise приложениях

Уровни параллелизма Platypus.js

Browser

Browser 2

Browser

Browser

Stateless server

module

Stateful server

module

Resident server

module

Browser 3

Browser 1

Browser

Уровень 1

Уровень 2

Уровень 3

21

Page 22: JavaScript в enterprise приложениях

Архитектура Platypus.js

22

Page 23: JavaScript в enterprise приложениях

Спасибо за вниманиеPlatypus.js документация, дистрибутивы:

http://www.platypus-platform.org

Исходники:

https://github.com/altsoft

Направляйте вопросы по адресу:

[email protected]

Доклад: Марат Гайнуллин. [email protected]

23