{"id":6322,"date":"2017-10-29T15:52:48","date_gmt":"2017-10-29T13:52:48","guid":{"rendered":"https:\/\/www.tomislavstankovic.com\/blog\/?p=6322"},"modified":"2019-01-05T21:25:14","modified_gmt":"2019-01-05T19:25:14","slug":"ionic-3-electron-desktop-aplikacija","status":"publish","type":"post","link":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/","title":{"rendered":"Ionic 3 desktop aplikacija"},"content":{"rendered":"<p>Iako sam <a href=\"https:\/\/www.tomislavstankovic.com\/blog\/ionic-framework-resursi\/\" rel=\"noopener\" target=\"_blank\">do sada o <em>Ionicu<\/em> pisao samo u kontekstu mobilnih aplikacija<\/a> nedavno sam nai\u0161ao na <a href=\"https:\/\/medium.com\/@LohaniDamodar\/lets-make-desktop-application-with-ionic-3-and-electron-44316f82901d\" rel=\"noopener\" target=\"_blank\">primjere<\/a> kori\u0161tenja <em>Ionica<\/em> kao <em>cross-platform desktop<\/em> aplikacije \u0161to mi se u\u010dinilo zanimljivim pa sam odlu\u010dio ne\u0161to vi\u0161e saznati o tome i napisati ovaj blog post. <\/p>\n<h2>\u0160to je Electron?<\/h2>\n<p><em><a href=\"https:\/\/electron.atom.io\/\" rel=\"noopener\" target=\"_blank\">Electron<\/a><\/em> je <em>framework<\/em> za razvoj <em>cross-platform desktop<\/em> aplikacija koriste\u0107i <em>JavaScript<\/em>, <em>HTML<\/em> i <em>CSS<\/em>. S tehnologijama koje koristi jako podsje\u0107a na <em>Ionic<\/em>, a omogu\u0107ava razvoj <em>desktop<\/em> aplikacija koje se mogu pokrenuti na <em>Windows<\/em>, <em>Mac<\/em> i <em>Linux<\/em> platformi.<\/p>\n<p><iframe loading=\"lazy\" width=\"660\" height=\"415\" src=\"https:\/\/www.youtube.com\/embed\/8YP_nOCO-4Q\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<h2>Priprema Ionic projetka<\/h2>\n<p>Za po\u010detak \u0107emo kreirati novi <em>Ionic<\/em> projekt.<\/p>\n<pre class=\"lang:sh decode:true \" >$ ionic start Ionic3ElectronApp sidemenu\r\n$ cd Ionic3ElectronApp\r\n$ ionic serve<\/pre>\n<p>Kada aplikaciju pokrenemo ne\u0107emo vidjeti ni\u0161ta \u0161to ve\u0107 ranije nismo vidjeli. Standardna <em>Ionic<\/em> aplikacija koja se pokre\u0107e u web pregledniku kao \u0161to je npr. <em>Google Chrome<\/em>. <\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron.gif\" alt=\"Ionic desktop aplikacija\" width=\"1118\" height=\"817\" class=\"aligncenter size-full wp-image-6332\" \/><\/a><\/p>\n<h2>Postavljanje Electron projekta<\/h2>\n<p>Sada je potrebno dodati <em>Electron<\/em> unutar na\u0161eg <em>Ionic<\/em> projekta koriste\u0107i naredbu:<\/p>\n<pre class=\"lang:sh decode:true \" >$ npm install electron --save<\/pre>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-1.gif\" alt=\"Ionic desktop aplikacija\" width=\"976\" height=\"430\" class=\"aligncenter size-full wp-image-6337\" \/><\/a><\/p>\n<p>Sve dalje opisane korake radimo prema slu\u017ebenoj dokumentaciji na adresi <a href=\"https:\/\/electron.atom.io\/docs\/\" rel=\"noopener\" target=\"_blank\">https:\/\/electron.atom.io\/docs\/<\/a><\/p>\n<p>Sada \u0107emo kreirati datoteku <strong><em>main.js<\/em><\/strong> koja \u0107e biti ulazna to\u010dka prilikom pokretanja <em>Ionic-Electron<\/em> aplikacije. Vi\u0161e o ovoj datoteci mo\u017eete prona\u0107i na adresi <a href=\"https:\/\/electron.atom.io\/docs\/tutorial\/quick-start\/\" rel=\"noopener\" target=\"_blank\">https:\/\/electron.atom.io\/docs\/tutorial\/quick-start\/<\/a><\/p>\n<pre class=\"lang:js decode:true \" title=\"main.js\" >const {app, BrowserWindow} = require('electron')\r\nconst path = require('path')\r\nconst url = require('url')\r\n\r\n\/\/ Keep a global reference of the window object, if you don't, the window will\r\n\/\/ be closed automatically when the JavaScript object is garbage collected.\r\nlet win\r\n\r\nfunction createWindow () {\r\n  \/\/ Create the browser window.\r\n  win = new BrowserWindow({width: 800, height: 600})\r\n\r\n  \/\/ and load the index.html of the app.\r\n  win.loadURL(url.format({\r\n    pathname: path.join(__dirname, 'www\/index.html'),\r\n    protocol: 'file:',\r\n    slashes: true\r\n  }))\r\n\r\n  \/\/ Open the DevTools.\r\n  win.webContents.openDevTools()\r\n\r\n  \/\/ Emitted when the window is closed.\r\n  win.on('closed', () =&gt; {\r\n    \/\/ Dereference the window object, usually you would store windows\r\n    \/\/ in an array if your app supports multi windows, this is the time\r\n    \/\/ when you should delete the corresponding element.\r\n    win = null\r\n  })\r\n}\r\n\r\n\/\/ This method will be called when Electron has finished\r\n\/\/ initialization and is ready to create browser windows.\r\n\/\/ Some APIs can only be used after this event occurs.\r\napp.on('ready', createWindow)\r\n\r\n\/\/ Quit when all windows are closed.\r\napp.on('window-all-closed', () =&gt; {\r\n  \/\/ On macOS it is common for applications and their menu bar\r\n  \/\/ to stay active until the user quits explicitly with Cmd + Q\r\n  if (process.platform !== 'darwin') {\r\n    app.quit()\r\n  }\r\n})\r\n\r\napp.on('activate', () =&gt; {\r\n  \/\/ On macOS it's common to re-create a window in the app when the\r\n  \/\/ dock icon is clicked and there are no other windows open.\r\n  if (win === null) {\r\n    createWindow()\r\n  }\r\n})\r\n\r\n\/\/ In this file you can include the rest of your app's specific main process\r\n\/\/ code. You can also put them in separate files and require them here.<\/pre>\n<p>Osim te datoteke moramo unutar <em><strong>package.json<\/strong><\/em> dodati dvije va\u017ene naredbe. <\/p>\n<p><span class=\"lang:sh decode:true  crayon-inline\">&#8220;main&#8221;: &#8220;main.js&#8221;<\/span> slu\u017ei kako bi se znalo koju datoteku gledati kada se projekt pokrene kao <em>Electron<\/em> aplikacija.<\/p>\n<p><span class=\"lang:sh decode:true  crayon-inline\">&#8220;start&#8221;: &#8220;electron .&#8221;<\/span> slu\u017ei kao naredba za pokretanje <em>Electron<\/em> aplikacije.<\/p>\n<pre class=\"lang:default mark:13,40 decode:true \" title=\"package.json\" >{\r\n  \"name\": \"Ionic3ElectronApp\",\r\n  \"version\": \"0.0.1\",\r\n  \"author\": \"Tomislav Stankovi\u0107\",\r\n  \"homepage\": \"https:\/\/www.tomislavstankovic.com\",\r\n  \"private\": true,\r\n  \"scripts\": {\r\n    \"clean\": \"ionic-app-scripts clean\",\r\n    \"build\": \"ionic-app-scripts build\",\r\n    \"lint\": \"ionic-app-scripts lint\",\r\n    \"ionic:build\": \"ionic-app-scripts build\",\r\n    \"ionic:serve\": \"ionic-app-scripts serve\",\r\n    \"start\": \"electron .\"\r\n  },\r\n  \"dependencies\": {\r\n    \"@angular\/common\": \"4.4.4\",\r\n    \"@angular\/compiler\": \"4.4.4\",\r\n    \"@angular\/compiler-cli\": \"4.4.4\",\r\n    \"@angular\/core\": \"4.4.4\",\r\n    \"@angular\/forms\": \"4.4.4\",\r\n    \"@angular\/http\": \"4.4.4\",\r\n    \"@angular\/platform-browser\": \"4.4.4\",\r\n    \"@angular\/platform-browser-dynamic\": \"4.4.4\",\r\n    \"@ionic-native\/core\": \"4.3.2\",\r\n    \"@ionic-native\/splash-screen\": \"4.3.2\",\r\n    \"@ionic-native\/status-bar\": \"4.3.2\",\r\n    \"@ionic\/storage\": \"2.0.1\",\r\n    \"electron\": \"^1.7.9\",\r\n    \"ionic-angular\": \"3.8.0\",\r\n    \"ionicons\": \"3.0.0\",\r\n    \"rxjs\": \"5.4.3\",\r\n    \"sw-toolbox\": \"3.6.0\",\r\n    \"zone.js\": \"0.8.18\"\r\n  },\r\n  \"devDependencies\": {\r\n    \"@ionic\/app-scripts\": \"3.0.1\",\r\n    \"typescript\": \"2.3.4\"\r\n  },\r\n  \"description\": \"An Ionic project\",\r\n  \"main\": \"main.js\"\r\n}<\/pre>\n<p>Spremni smo za kreiranje skripte <strong><em>buildElectron.sh<\/em><\/strong> koja \u0107e obaviti nekoliko radnji automatski tako da ih ne moramo svaki put ru\u010dno pokretati. <\/p>\n<pre class=\"lang:sh decode:true \" title=\"buildElectron.sh\">ionic cordova build browser --prod\r\nrm -rf www\/*\r\ncp -r platforms\/browser\/www\/* www\/\r\nnpm start<\/pre>\n<p>I kona\u010dno, <em>Ionic-Electron<\/em> aplikaciju mo\u017eemo pokrenuti naredbom <span class=\"lang:sh decode:true  crayon-inline\">.\/buildElectron.sh<\/span><\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-3.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-3.gif\" alt=\"Ionic desktop aplikacija\" width=\"980\" height=\"431\" class=\"aligncenter size-full wp-image-6351\" \/><\/a><\/p>\n<p>ili dvoklikom na ikonu <strong><em>buildElectron<\/em><\/strong> skripte unutar na\u0161eg projekta.<\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-5.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-5.gif\" alt=\"Ionic desktop aplikacija\" width=\"968\" height=\"553\" class=\"aligncenter size-full wp-image-6356\" \/><\/a> <\/p>\n<p>nakon \u010dega dobijemo na\u0161u <em>Ionic<\/em> aplikaciju unutar <em>Electrona<\/em>.<\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-2.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-2.gif\" alt=\"Ionic desktop aplikacija\" width=\"784\" height=\"542\" class=\"aligncenter size-full wp-image-6349\" \/><\/a><\/p>\n<p>Mo\u017eete primijetiti da se prilikom pokretanja aplikacije automatski pokrenuo i <em>Developer Tools<\/em>. To mo\u017eemo sprije\u010diti ako unutar <em><strong>main.js<\/strong><\/em> datoteke zakomentiramo <span class=\"lang:js decode:true  crayon-inline\">win.webContents.openDevTools().<\/span><\/p>\n<h2>Dizajn i prilagodba su\u010delja<\/h2>\n<p>Dizajn trenutno kreirane aplikacije prilago\u0111en je mobilnim ure\u0111ajima i ako ju ra\u0161irimo preko cijelog ekrana nekog <em>desktop<\/em> ure\u0111aja to ne\u0107e izgledati lijepo jer \u0107e npr. popis stavki i\u0107i jedan ispod drugog preko cijelog ekrana umjesto da se fino rasporedi po nekoliko stavki u jedan red.<\/p>\n<p>Ovo \u0107emo prikazati na primjeru stranice <em><strong>list.html<\/strong><\/em><\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-4.png\" alt=\"Ionic desktop aplikacija\" width=\"1363\" height=\"615\" class=\"aligncenter size-full wp-image-6354\" srcset=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-4.png 1363w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-4-300x135.png 300w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-4-768x347.png 768w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-4-1024x462.png 1024w\" sizes=\"auto, (max-width: 1363px) 100vw, 1363px\" \/><\/a><\/p>\n<p>To \u0107emo rije\u0161iti kori\u0161tenjem <em><a href=\"https:\/\/ionicframework.com\/docs\/api\/components\/grid\/Grid\/\" rel=\"noopener\" target=\"_blank\">Ionic Grida<\/a><\/em>.<\/p>\n<pre class=\"lang:xhtml decode:true \" title=\"list.html\" >&lt;ion-header&gt;\r\n  &lt;ion-navbar&gt;\r\n    &lt;button ion-button menuToggle&gt;\r\n      &lt;ion-icon name=\"menu\"&gt;&lt;\/ion-icon&gt;\r\n    &lt;\/button&gt;\r\n    &lt;ion-title&gt;List&lt;\/ion-title&gt;\r\n  &lt;\/ion-navbar&gt;\r\n&lt;\/ion-header&gt;\r\n\r\n&lt;ion-content&gt;\r\n  &lt;ion-grid&gt;\r\n    &lt;ion-row&gt;\r\n      &lt;ion-col *ngFor=\"let item of items\" (click)=\"itemTapped($event, item)\" col-12 col-md-6 col-lg-4 col-xl-3&gt;\r\n          &lt;ion-card&gt;\r\n              &lt;ion-card-header&gt;{{item.title}}&lt;\/ion-card-header&gt;\r\n              &lt;ion-card-content&gt;{{item.note}}&lt;\/ion-card-content&gt;\r\n          &lt;\/ion-card&gt;\r\n      &lt;\/ion-col&gt;\r\n    &lt;\/ion-row&gt;\r\n  &lt;\/ion-grid&gt;\r\n  &lt;div *ngIf=\"selectedItem\" padding&gt;\r\n    You navigated here from &lt;b&gt;{{selectedItem.title}}&lt;\/b&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/ion-content&gt;<\/pre>\n<p>Kona\u010dan izgled na ve\u0107em ekranu je sljede\u0107i<\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-6.png\" alt=\"Ionic desktop aplikacija\" width=\"1362\" height=\"612\" class=\"aligncenter size-full wp-image-6359\" srcset=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-6.png 1362w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-6-300x135.png 300w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-6-768x345.png 768w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-6-1024x460.png 1024w\" sizes=\"auto, (max-width: 1362px) 100vw, 1362px\" \/><\/a><\/p>\n<h2>Produkcijska verzija <em>Electron<\/em> aplikacije<\/h2>\n<p>Kada smo zadovoljni s na\u0161om aplikacijom mo\u017eemo kreirati produkcijsku verziju.<\/p>\n<p>Prije nego to napravimo moramo instalirati <a href=\"https:\/\/github.com\/electron-userland\/electron-packager\" rel=\"noopener\" target=\"_blank\">Electron Packager<\/a>. To mo\u017eemo u\u010diniti naredbom <span class=\"lang:sh decode:true  crayon-inline\">$ npm install -g electron-packager<\/span><\/p>\n<p>Nakon toga \u0107emo kreirati produkcijsku verziju <em>Electron<\/em> aplikacije za <em>Windows OS<\/em>.<\/p>\n<pre class=\"lang:sh decode:true\">$ electron-packager . Ionic3ElectronApp --overwrite --platform=win32 --arch=x64 --prune=true --out=release-builds<\/pre>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-7.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic3-sidemenu-electron-7.gif\" alt=\"Ionic desktop aplikacija\" width=\"1347\" height=\"579\" class=\"aligncenter size-full wp-image-6362\" \/><\/a><\/p>\n<p>Proces kreiranja produkcijske verzije <em>Electron<\/em> aplikacije za <em>Windows<\/em>, <em>Mac<\/em> ili <em>Linux<\/em> mo\u017ee se olak\u0161ati i <a href=\"https:\/\/www.christianengvall.se\/electron-packager-tutorial\/\" rel=\"noopener\" target=\"_blank\">ubrzati na sljede\u0107i na\u010din<\/a>.<\/p>\n<p>U datoteku <em><strong>package.json<\/strong><\/em> dodajemo<\/p>\n<pre class=\"lang:default mark:14-16 decode:true \" title=\"package.json\" >{\r\n    \"name\": \"Ionic3ElectronApp\",\r\n    \"version\": \"0.0.1\",\r\n    \"author\": \"Tomislav Stankovi\u0107\",\r\n    \"homepage\": \"https:\/\/www.tomislavstankovic.com\",\r\n    \"private\": true,\r\n    \"scripts\": {\r\n        \"clean\": \"ionic-app-scripts clean\",\r\n        \"build\": \"ionic-app-scripts build\",\r\n        \"lint\": \"ionic-app-scripts lint\",\r\n        \"ionic:build\": \"ionic-app-scripts build\",\r\n        \"ionic:serve\": \"ionic-app-scripts serve\",\r\n        \"start\": \"electron .\",\r\n        \"package-mac\": \"electron-packager . --overwrite --platform=darwin --arch=x64 --icon=assets\/icons\/mac\/icon.icns --prune=true --out=release-builds\",\r\n        \"package-win\": \"electron-packager . electron-tutorial-app --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets\/icons\/win\/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\\\"Electron Tutorial App\\\"\",    \r\n        \"package-linux\": \"electron-packager . electron-tutorial-app --overwrite --asar=true --platform=linux --arch=x64 --icon=assets\/icons\/png\/1024x1024.png --prune=true --out=release-builds\"\r\n    },<\/pre>\n<p>I onda se proces kreiranja produkcijske verzije <em>Electron desktop<\/em> aplikacije pokre\u0107e sljede\u0107im naredbama:<br \/>\n  &#8211; Windows OS: <span class=\"lang:sh decode:true  crayon-inline\">npm run package-win<\/span><br \/>\n  &#8211; Mac: <span class=\"lang:sh decode:true  crayon-inline\">npm run package-mac<\/span><br \/>\n  &#8211; Linux: <span class=\"lang:sh decode:true  crayon-inline\">npm run package-linux<\/span><\/p>\n<h2>Zaklju\u010dak<\/h2>\n<p>Iz ovog ste blog posta mogli vidjeti kako <em>Ionic<\/em> mobilnu aplikaciju pretvoriti u <em>cross-platform destkop<\/em> aplikaciju pa iako se to \u010dini zanimljivim i o\u010dito da je mogu\u0107e osobno se ne planiram detaljnije tome posvetiti. Tako\u0111er, ne treba zanemariti niti \u010dinjenicu da na tu temu ne postoji dovoljno primjera i dokumentacije.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Iako sam do sada o Ionicu pisao samo u kontekstu mobilnih aplikacija nedavno sam nai\u0161ao na primjere kori\u0161tenja Ionica kao cross-platform desktop aplikacije \u0161to mi se u\u010dinilo zanimljivim pa sam odlu\u010dio ne\u0161to vi\u0161e saznati o tome i napisati ovaj blog post. \u0160to je Electron? Electron je framework za razvoj cross-platform desktop aplikacija koriste\u0107i JavaScript, HTML &hellip; <a href=\"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/\" class=\"more-link\">Nastavi \u010ditati <span class=\"screen-reader-text\">Ionic 3 desktop aplikacija<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":6323,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[564,351],"tags":[476,352,400],"class_list":["post-6322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile","category-razvoj","tag-electron-framework","tag-ionic","tag-ionic-3"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ionic 3 desktop aplikacija - Tomislav Stankovi\u0107<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/\" \/>\n<meta property=\"og:locale\" content=\"hr_HR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ionic 3 desktop aplikacija - Tomislav Stankovi\u0107\" \/>\n<meta property=\"og:description\" content=\"Iako sam do sada o Ionicu pisao samo u kontekstu mobilnih aplikacija nedavno sam nai\u0161ao na primjere kori\u0161tenja Ionica kao cross-platform desktop aplikacije \u0161to mi se u\u010dinilo zanimljivim pa sam odlu\u010dio ne\u0161to vi\u0161e saznati o tome i napisati ovaj blog post. \u0160to je Electron? Electron je framework za razvoj cross-platform desktop aplikacija koriste\u0107i JavaScript, HTML &hellip; Nastavi \u010ditati Ionic 3 desktop aplikacija\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/\" \/>\n<meta property=\"og:site_name\" content=\"Tomislav Stankovi\u0107\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-29T13:52:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-01-05T19:25:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic-electron-desktop-aplikacija.png\" \/>\n\t<meta property=\"og:image:width\" content=\"825\" \/>\n\t<meta property=\"og:image:height\" content=\"510\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tomislav Stankovi\u0107\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisao\/la\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tomislav Stankovi\u0107\" \/>\n\t<meta name=\"twitter:label2\" content=\"Procijenjeno vrijeme \u010ditanja\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuta\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/\"},\"author\":{\"name\":\"Tomislav Stankovi\u0107\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\"},\"headline\":\"Ionic 3 desktop aplikacija\",\"datePublished\":\"2017-10-29T13:52:48+00:00\",\"dateModified\":\"2019-01-05T19:25:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/\"},\"wordCount\":560,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/ionic-electron-desktop-aplikacija.png\",\"keywords\":[\"Electron framework\",\"Ionic\",\"Ionic 3\"],\"articleSection\":[\"Mobile\",\"Razvoj\"],\"inLanguage\":\"hr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/\",\"name\":\"Ionic 3 desktop aplikacija - Tomislav Stankovi\u0107\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/ionic-electron-desktop-aplikacija.png\",\"datePublished\":\"2017-10-29T13:52:48+00:00\",\"dateModified\":\"2019-01-05T19:25:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#breadcrumb\"},\"inLanguage\":\"hr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"hr\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/ionic-electron-desktop-aplikacija.png\",\"contentUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/ionic-electron-desktop-aplikacija.png\",\"width\":825,\"height\":510,\"caption\":\"Ionic cross-platform desktop aplikacija\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/ionic-3-electron-desktop-aplikacija\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Po\u010detna stranica\",\"item\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ionic 3 desktop aplikacija\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/\",\"name\":\"Tomislav Stankovi\u0107\",\"description\":\"Sam svoj bloger\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"hr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\",\"name\":\"Tomislav Stankovi\u0107\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"hr\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\",\"contentUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\",\"width\":248,\"height\":165,\"caption\":\"Tomislav Stankovi\u0107\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\"},\"description\":\"Bloger \u0161irokog raspona interesa od kojih dio voli objaviti na ovom blogu. U neslobodno vrijeme Angular developer mobilnih i web aplikacija.\",\"sameAs\":[\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/tomislavstankovic\\\/\"],\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/author\\\/tomislavstankovic\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ionic 3 desktop aplikacija - Tomislav Stankovi\u0107","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/","og_locale":"hr_HR","og_type":"article","og_title":"Ionic 3 desktop aplikacija - Tomislav Stankovi\u0107","og_description":"Iako sam do sada o Ionicu pisao samo u kontekstu mobilnih aplikacija nedavno sam nai\u0161ao na primjere kori\u0161tenja Ionica kao cross-platform desktop aplikacije \u0161to mi se u\u010dinilo zanimljivim pa sam odlu\u010dio ne\u0161to vi\u0161e saznati o tome i napisati ovaj blog post. \u0160to je Electron? Electron je framework za razvoj cross-platform desktop aplikacija koriste\u0107i JavaScript, HTML &hellip; Nastavi \u010ditati Ionic 3 desktop aplikacija","og_url":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/","og_site_name":"Tomislav Stankovi\u0107","article_published_time":"2017-10-29T13:52:48+00:00","article_modified_time":"2019-01-05T19:25:14+00:00","og_image":[{"width":825,"height":510,"url":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic-electron-desktop-aplikacija.png","type":"image\/png"}],"author":"Tomislav Stankovi\u0107","twitter_card":"summary_large_image","twitter_misc":{"Napisao\/la":"Tomislav Stankovi\u0107","Procijenjeno vrijeme \u010ditanja":"6 minuta"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#article","isPartOf":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/"},"author":{"name":"Tomislav Stankovi\u0107","@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d"},"headline":"Ionic 3 desktop aplikacija","datePublished":"2017-10-29T13:52:48+00:00","dateModified":"2019-01-05T19:25:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/"},"wordCount":560,"commentCount":0,"publisher":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d"},"image":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic-electron-desktop-aplikacija.png","keywords":["Electron framework","Ionic","Ionic 3"],"articleSection":["Mobile","Razvoj"],"inLanguage":"hr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/","url":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/","name":"Ionic 3 desktop aplikacija - Tomislav Stankovi\u0107","isPartOf":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#primaryimage"},"image":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic-electron-desktop-aplikacija.png","datePublished":"2017-10-29T13:52:48+00:00","dateModified":"2019-01-05T19:25:14+00:00","breadcrumb":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#breadcrumb"},"inLanguage":"hr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/"]}]},{"@type":"ImageObject","inLanguage":"hr","@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#primaryimage","url":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic-electron-desktop-aplikacija.png","contentUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2017\/10\/ionic-electron-desktop-aplikacija.png","width":825,"height":510,"caption":"Ionic cross-platform desktop aplikacija"},{"@type":"BreadcrumbList","@id":"https:\/\/www.tomislavstankovic.com\/blog\/ionic-3-electron-desktop-aplikacija\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Po\u010detna stranica","item":"https:\/\/www.tomislavstankovic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ionic 3 desktop aplikacija"}]},{"@type":"WebSite","@id":"https:\/\/www.tomislavstankovic.com\/blog\/#website","url":"https:\/\/www.tomislavstankovic.com\/blog\/","name":"Tomislav Stankovi\u0107","description":"Sam svoj bloger","publisher":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.tomislavstankovic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"hr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d","name":"Tomislav Stankovi\u0107","image":{"@type":"ImageObject","inLanguage":"hr","@id":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg","url":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg","contentUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg","width":248,"height":165,"caption":"Tomislav Stankovi\u0107"},"logo":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg"},"description":"Bloger \u0161irokog raspona interesa od kojih dio voli objaviti na ovom blogu. U neslobodno vrijeme Angular developer mobilnih i web aplikacija.","sameAs":["https:\/\/www.tomislavstankovic.com\/blog\/","https:\/\/www.linkedin.com\/in\/tomislavstankovic\/"],"url":"https:\/\/www.tomislavstankovic.com\/blog\/author\/tomislavstankovic\/"}]}},"_links":{"self":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts\/6322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/comments?post=6322"}],"version-history":[{"count":36,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts\/6322\/revisions"}],"predecessor-version":[{"id":6368,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts\/6322\/revisions\/6368"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/media\/6323"}],"wp:attachment":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/media?parent=6322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/categories?post=6322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/tags?post=6322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}