playnode.key

Similar documents
Building Mobile AR Web Applications in HTML5 - Google IO 2012

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

인켈(국문)pdf.pdf

3장

Modern Javascript

슬라이드 1

Microsoft PowerPoint - Chapter_03-1_DevEnv.pptx

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Ⅰ. 서론 1989년 CERN의 팀 버너스 리에 의해 만들어진 월드 와이드 웹 기술은 HTML(HyperText Markup Language), URL(Unified Resource Locator, HTTP(Hyper- Text Transfer Protocol)이라는

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

PowerPoint 프레젠테이션

초보자를 위한 C++

PCServerMgmt7

Network seminar.key

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

chapter1,2.doc

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft Word - Automap3

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

AMP는 어떻게 빠른 성능을 내나.key

스마트폰 도입에 따른 국내 통신시장 환경의 변화 음성중심에서 데이터 중심으로 변화하고 있으며 데이 터 매출 비중도 08년 20.2% 13년 24.7%로 꾸준히 증 가할 전망이다. 또한, 데이터 활성화로 스마트폰 콘텐츠 장터(앱스토 어) 시장도 크게 성장할 것으로 예상된

鍮뚮┰硫붾돱??李⑤낯

BEef 사용법.pages

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

!K_InDesginCS_NFH

ESP1ºÎ-04

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

Syrup Store O2O Marketing Platform/Solution

<4D F736F F D205B4354BDC9C3FEB8AEC6F7C6AE5D3131C8A35FC5ACB6F3BFECB5E520C4C4C7BBC6C320B1E2BCFA20B5BFC7E2>

Corporate PPT Template

처음 시작하는 리액트: UI를 위한 자바스크립트 라이브러리 ReactJS

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

Javascript.pages

제목을 입력하세요.

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Portal_9iAS.ppt [읽기 전용]

PowerPoint 프레젠테이션

2014밝고고운동요부르기-수정3

2005프로그램표지

슬라이드 1

<C7D1B1B9C4DCC5D9C3F7C1F8C8EFBFF82D C4DCC5D9C3F7BBEABEF7B9E9BCAD5FB3BBC1F E687770>

AGENDA 모바일 산업의 환경변화 모바일 클라우드 서비스의 등장 모바일 클라우드 서비스 융합사례



접근성과 웹 The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect. Tim Berners-Lee, the inventor

2

Assign an IP Address and Access the Video Stream - Installation Guide

++11월 소비자리포트-수정

Lab1

Microsoft Word - 김완석.doc

Analyst Briefing

manual pdfÃÖÁ¾

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A

PowerPoint 프레젠테이션

Egretia_White_Paper_KR_V1.1.pages

일반인을 위한 전자책 제작 방법

Dialog Box 실행파일을 Web에 포함시키는 방법

2


1

04_오픈지엘API.key

Week8-Extra

기초에서 활용까지 윈도우즈 임베디드 CE 프로그래밍

KIDI_W_BRIEF(제1호)_본문.hwp

Microsoft PowerPoint PMS-r2.pptx

<B1DDC0B6C1A4BAB8C8ADC1D6BFE4B5BFC7E C8A3292E687770>

**더모바일05호_N0.8

초보자를 위한 ADO 21일 완성

Microsoft Word - ICT Report

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

Orcad Capture 9.x



CONTENTS 01 Adobe Photoshop Lightroom을 소개합니다 촬영부터 출력까지 간편한 사진 작업 (Simplify photography from shoot to finish) Adobe Photoshop Lightroom 작업공간(Workspace)

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

Boot Camp 설치 및 설정 설명서

Solaris Express Developer Edition

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

목 차 Ⅰ. 일반사항 1 Ⅱ. 특기사항 3 Ⅲ. 물품내역 및 세부규격 8 Ⅳ. 주의사항

PowerPoint 프레젠테이션

DIY 챗봇 - LangCon

02_3 지리산권 스마트폰 기반 3D 지도서비스_과업지시서.hwp

2

untitled

Microsoft PowerPoint - Chapter_03.pptx

untitled

2011년 10월 초판 c 2011 Sony Corporation. All rights reserved. 서면 허가 없이 전체 또는 일부를 복제하는 것을 금합니다. 기능 및 규격은 통보 없이 변경될 수 있습니다. Sony와 Sony 로고는 Sony의 상표입니다. G L

Cache_cny.ppt [읽기 전용]

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

2

SchoolNet튜토리얼.PDF

MAX+plus II Getting Started - 무작정따라하기

2012 White Paper on Korean Games 1부 산업계 동향 제1장 국내 게임시장 동향 제1절 국내 게임시장 규모 1. 전체 게임시장 규모 및 추이 2011년 국내 게임시장의 규모는 8조 8047억 원으로 추산된다. 이는 2010년의 7조 4312억 원

3.스마트TV분야

Web Scraper in 30 Minutes 강철

github_introduction.key

서현수

Microsoft PowerPoint - 엔터프라이즈_모바일 - deployment.pptx

Transcription:

Electron React Webpack! Junyoung Choi github.com/rokt33r

Speaker / Junyoung Choi (2017.3 ) Node.js. MAISIN&CO. Boostnote 2015.11~2016.10 2!

Agenda. / HMR,

Electron

Github Atom Node.js Chromium Javascript / HTML / CSS. Slack VSCode.

Node.js v6.5.0. ES2015! http://kangax.github.io/compat-table/es6/

Chromium

Electron Main/Renderer processes Globals IPC & Remote WebFrame Native API

Main/Renderer processes 2. Node.js OS GUI API (,,, ). HTML/CSS/Javascript. Node.js API.

Globals. Node.js Browser. window require <script> var content = fs.readfilesync(./readme.md ).tostring( utf-8 ) // Node.js document.write(content) // Browser </script>

Globals :! require. <script src= http://dedly-script.com/app.js ></script> http://dedly-script.com/app.js const cp = require( child_process ) cp.exec( rm -Rf *** ) //?!

Globals : HTTPS, NodeIntegration http://electron.atom.io/docs/tutorial/security

IPC / Remote IPC Remote. IPC : socket.io Remote : API.

IPC examples ipcmain.on('check-request', (event, arg) => { console.log(arg) // prints ping" autoupdater.checkforupdates() Ping event.sender.send('check-done', 'pong') }) Pong ipcrenderer.on( check-done', (event, arg) => { console.log(arg) // prints "pong" }) ipcrenderer.send( check-request', 'ping')

Remote examples. ipcmain. electron.autoupdater.checkforupdates() remote.autoupdater.checkforupdates()

Remote : BAD PRACTICE.,( + R / F5) ipcmain.! remote.ipcmain.on( check-request', (event, arg) => { console.log(arg) // prints ping" autoupdater.checkforupdates() event.sender.send('check-done', 'pong') }) ipcrenderer.on( check-done', (event, arg) => { console.log(arg) // prints "pong" }) ipcrenderer.send( check-request', 'ping')

<webview> <iframe>. <iframe>., ipc. Slack

Native API

Tray Desktop env Tray!

Dialog,

Menu, OS X Ubuntu Unity.

Others GlobalShortcuts Notifications JumpList / Dock menu / Unity Launcher Shortcuts Recent documents(macos & Windows).

Fragmentation OS

/ OS. macos Squirrel.Mac Windows Squirrel.Windows / NSIS Linux

/, macos OS. Linux macos Windows Wine Mono electron-builder

( ) Windows macos. Windows. 6 / 20~100 macos. Apple Developer program 12

: Windows, macos. electron-builder.

: Mac App Store / Windows Store.,. MAS / /

: Linux.. Snap AppImage!

1 :! Uglify ASAR edge-atom-shell https://github.com/electron/electron/issues/3041

2 : Chromium Node.js 100Mb. 40~50Mb Windows macos

1 : AWS Mobile analytics. Javascript api.

2 : Node.js API.,. electron-rebuild. ( yarn.)

3 : Browser API localstorage : ( 5mb ) IndexedDB : 1/3 Node.js Library leveldb, NeDB

4 : Devtool : Devtron IPC API Lint!.

4 : Devtool : Others. electron-devtools-installer.

Webpack

Webpack?

require <scrpt> We cannot hold on!

Electron Webpack require/module.exports import/export OK output: { librarytarget: 'commonjs2' }, externals: [ electron', // CommonJS 'levelup', leveldown', // Native module } ], { react: 'var React, // Global 'react-dom': 'var ReactDOM', 'react-redux': 'var ReactRedux', 'redux': 'var Redux //, //!!.

Electron Webpack Node.js NodeTargetPlugin. plugins: [ new webpack.hotmodulereplacementplugin(), new webpack.namedmodulesplugin(), // `fs`, `http` new NodeTargetPlugin() ],

! Electron Node.js Webpack process.env.node_env!== global.process.env.node_env DefinePlugin!

Webpack->Webpack2 ES6 & import/export! ES6 React Babel Loader...(JSX, HMRv3) import/export HMR / ex) loader (x) `babel` / (o) `babel-loader` Linter! CLI v1 (?).

HMR React App

Hot Module Replacement. babel-preset-react-hmre 1 Deprecated React Hot Loader v3!! https://webpack.js.org/guides/hmr-react/

React Hot Loader v3-beta import { AppContainer } from 'react-hot-loader' import App from./app' const render = () => { let NextApp = require(./app ).default } ReactDOM.render( <AppContainer> <NextApp store={store} history={history} /> </AppContainer>, document.getelementbyid('content') ) render()./app render. HMR./App require. // Hot Module Replacement API if (module.hot) { module.hot.accept('./app', render) }

React Hot Loader v3-beta import { AppContainer } from 'react-hot-loader' import App from./app' const render = () => { // let NextApp = require(./app ).default } ReactDOM.render( <AppContainer> <App store={store} history={history} /> </AppContainer>, document.getelementbyid('content') ) render() // Hot Module Replacement API if (module.hot) { module.hot.accept('./app', render) } Webpack 2.* import/export require!, babel-preset-es2015 Babel import/export! "presets": [ [ es2015", {"modules": false}], "stage-2", "react" ],

React Hot Loader v3-beta import reducers from './reducers' import { createstore } from 'redux' const store = createstore(reducers) if (module.hot) { module.hot.accept('./reducers', () => store.replacereducer(reducers) ) } Redux! export default store

React Hot Loader v3 : 1 Node v6.5.0 es2015, babel-preset-es2015. React this... HMRv3

React Hot Loader v3 : 2 cachedirectory Hot Module Replacement.

5: Styled-components ES2015 Template Literal PostCSS CSS Javascript CSS import styled from 'styled-components' const NavButton = styled(link)` ${p => p.theme.navbutton} &.active.octicon { fill: white; } ` <NavButton to={storageurl}> {storagename} </NavButton>

5: Styled-components import styled from 'styled-components' const NavButton = styled(link)` ${p => p.theme.navbutton} &.active.octicon { fill: white; } `.hyqbqi { height: 24px; line-height: 24px; margin: 0; padding: 0 10px; -webkit-cursor: pointer; cursor: pointer; }.hyqbqi.active.octicon { fill: white; } <NavButton to={storageurl}> {storagename} </NavButton>

Styled-components: Radium :hover React onmouseenter/leave, key ref

6: Atom/Etch Github. ( )!

!!!

API.!

PR?! => : / / ES6!! => : Electron / Awesome-electron!! Roadmap! Help Wanted! => / /! =>.

...

Carbon Stack.!....

Carbon Stack : Inpad. https://github.com/carbonstack/inpad.

Carbon Stack : Ghost desktop Github pages CMS jekyll???

!!