Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

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

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

Les vidéos YouTube ne sont plus prises en charge sur SlideShare

Regarder la vidéo sur YouTube

API Blueprint
Integration?

Consultez-les par la suite

1 sur 31 Publicité

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

Télécharger pour lire hors ligne

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

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

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

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

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

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

Publicité
Publicité

Plus De Contenu Connexe

Similaire à Rambler.iOS #8: Make your app extensible with JavaScriptCore (20)

Plus par RAMBLER&Co (20)

Publicité

Plus récents (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

×