Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Rambler.iOS #8: Make your app extensible with JavaScriptCore

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Extend Your App With
JavaScriptCore
Micha MAZAHERI
iOS > Mac > Python > React
@mittsh

YouTube-Videos werden auf SlideShare nicht mehr unterstützt.

Original auf YouTube ansehen

API Blueprint
Integration?

Hier ansehen

1 von 31 Anzeige

Rambler.iOS #8: Make your app extensible with JavaScriptCore

Herunterladen, um offline zu lesen

Поддержка популярного продукта может стать очень тяжелой ношей — клиенты постоянно просят добавить новую функциональность, уникальную для их нужд, а у команды разработки нет времени отрываться от более приоритетных задач.

Micha Mazaheri, CEO компании-разработчика популярного http-клиента Paw, расскажет о том, как они переложили эту задачу на плечи самих пользователей, создав удобную систему плагинов с использованием фреймворка JavaScriptCore.

Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.

Поддержка популярного продукта может стать очень тяжелой ношей — клиенты постоянно просят добавить новую функциональность, уникальную для их нужд, а у команды разработки нет времени отрываться от более приоритетных задач.

Micha Mazaheri, CEO компании-разработчика популярного http-клиента Paw, расскажет о том, как они переложили эту задачу на плечи самих пользователей, создав удобную систему плагинов с использованием фреймворка JavaScriptCore.

Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.

Anzeige
Anzeige

Weitere Verwandte Inhalte

Ähnlich wie Rambler.iOS #8: Make your app extensible with JavaScriptCore (20)

Weitere von RAMBLER&Co (20)

Anzeige

Aktuellste (20)

Rambler.iOS #8: Make your app extensible with JavaScriptCore

  1. 1. Extend Your App With JavaScriptCore Micha MAZAHERI iOS > Mac > Python > React @mittsh
  2. 2. API Blueprint Integration?
  3. 3. How can we make Paw hackable with JavaScriptCore?
  4. 4. Open Source Clean Your App FocusSmall Apps
  5. 5. Updates
  6. 6. Updates
  7. 7. CocoaScript
  8. 8. WebKit
  9. 9. Your JS API Interface Contract Testing Use it Like it?
  10. 10. Example JSContext* context = [[JSContext alloc] init]; JSValue* gigaValue = [context evaluateScript:@"Math.pow(2,30)"]; NSLog(@"1 GiB = %ld bytes", [gigaValue toNumber].integerValue); // 1 GiB = 1073741824 bytes
  11. 11. JSValue JavaScript Type Objective-C Type Swift Type string NSString String boolean BOOL Bool number NSNumber double int32_t uint32_t NSNumber! Double Int32 UInt32 Date NSDate Date Array NSArray [AnyObject] Object NSDictionary [NSObject : AnyObject] Object custom type custom type
  12. 12. JSContext Virtual Machine Holds All Objects Single Thread
  13. 13. JSExport Swift Class JavaScript Prototype Swift Instance JavaScript Object
  14. 14. /* Extend JSExport protocol */ @protocol LMJSRequest <JSExport> JSExportAs(getMethod, -(id)method); JSExportAs(getUrl, -(id)url); JSExportAs(setMethod, -(id)method:(NSString*)method); JSExportAs(setUrl, -(id)url:(NSString*)url); @end /* Implement protocol as a category */ @interface LMRequest (LMJSRequest) <LMJSRequest> @end
  15. 15. Not The Web DOM WebWorkers Web Crypto Local Storage XHR (Ajax)setTimeout CSS PromiseWebSocket File API
  16. 16. Not The Web Pure Vanilla JS
  17. 17. Multithreading Core Data Grand
 Central Dispatch
  18. 18. Run Loop setTimeout() DispatchQueue.main.asyncAfter(deadline: time) …run code…
  19. 19. Extensions in Paw ImportersCode Generators Dynamic Values
  20. 20. Code Generators • Client Code (Swift, ObjC, Python, Ruby…) • Command Line (cURL, HTTPie) • API Descriptions (API Blueprint, Swagger, RAML…) • 3rd party (Postman)
  21. 21. Importers • HTTP Archives (HAR) • API Descriptions (API Blueprint, Swagger, RAML…) • 3rd party (Postman)
  22. 22. Dynamic Values • Auth (JWT, Digest, Django…) • 3rd party auth (Amazon, Auth0…) • Randomizers (Chance.js, UUID, JSON Schema)
  23. 23. Who uses JavaScriptCore? React NativeSafari Build Apps
  24. 24. Conclusion • We can open source more • Always have an answer • More features than any competitor • Update extensions multiple times a week
  25. 25. Thank You https://paw.cloud @mittsh

×