рдПрдХ рдХрдард┐рди рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!


рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмрд╣реБрдд рдкрд╣рд▓реЗ, рдПрдХ рдЯрд░реНрдо рдкреЗрдкрд░ рд▓рд┐рдЦрдирд╛ рд╕реАрдЦрдиреЗ рдХрд╛ рдХрд╛рдо рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕реЗ рд▓рд┐рдЦрд╛ред рддрд╛рдХрд┐ рдЕрдЪреНрдЫрд╛ рдЧрд╛рдпрдм рди рд╣реЛ, рдореИрдВрдиреЗ рдПрдХ рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ (рдкрд╛рдареНрдпрдХреНрд░рдо) рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рди рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЙрддрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЬреЛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдПрдХ рдЙрдЪреНрдЪ рд╡реЗрддрди рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред


рддреЛ, рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рд╡рд┐рд╖рдп:


рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо "рдЦреЛрдЬ" рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рд╢рдмреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд╢рдмреНрдж рдХреАрдмреЛрд░реНрдб рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП, рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкрд╛рда рдХреА рд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢рдмреНрдж рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрд╕рдкреАрдП рдФрд░ рдкреАрдбрдмреНрд▓реНрдпреВрдП рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдХреЛ рдЫреВрдиреЗ рдХрд╛ рдХреЛрдИ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдерд╛ ред рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдордПрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдХреНрдпреЛрдВ рдирд╣реАрдВ ...


рдФрд░, рдЪрд▓реЛ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред




рдЖрдзреБрдирд┐рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ISR (IDE) - рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ ( рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ ) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ , рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб, рд╕рдВрдХрд▓рди, рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд▓реЗрдЦрди, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕реНрд╡рдд: рд▓реЙрдиреНрдЪ, рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рдЖрдИрдПрд╕рдЖрд░ рдХреЗ рдЖрдЧрдорди рд╕реЗ рдкрд╣рд▓реЗ , рд╡рд┐рдХрд╛рд╕ рдиреЗ рд╕рд░рд▓рддрдо рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдлреА рд╕рдордп рд▓рд┐рдпрд╛ред рд╕рд╛рде рд╣реА, рд╡рд┐рдХрд╛рд╕ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдИред SRI рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЬрд┐рддрдирд╛ рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛, рдЙрддрдирд╛ рд╣реА рд▓рдЪреАрд▓рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ISR рдФрд░ рдЙрдкрдХрд░рдг рдЬреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


. . тАФ Visual Studio Code, Microsoft Windows, Linux macOS. ┬л┬╗ - . , Git, , IntelliSense . : , . , , . Visual Studio Code , тАж



- Visual Studio Code


тАУ PhpStorm. - Web . JetBrains IntelliJ IDEA. PhpStorm PHP, HTML JavaScript , PHP JavaScript. PhpStorm PHP 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2 7.4 ( ), , , , , . SQL- .


, IntelliJ, .


"" PhpStorm , 7 .



тАУ PhpStorm



1.


1.1


Electron тАФ , , GitHub, HTML, CSS JavaScript. Electron Chromium Node.js , Mac, Windows Linux.


Electron 2013 Atom. 2014 . Electron , .


Chromium тАФ , , . Chromium Google Chrome. Electron Chromium .


Node.js тАФ , V8 ( JavaScript ), JavaScript . Node.js JavaScript - API ( C++), , , JavaScript-. Node.js , -, Node.js ( NW.js, AppJS Electron Linux, Windows macOS) (, tessel espruino). Node.js - ( ) /.


Electron Google Chrome тАУ n- . .



Electron


Electron IPC.


IPC ( inter-process communication) тАФ . , , IPC. , .


, IPC, :


  • ;
  • ;
  • ;
  • (RPC).

, - , . Electron', , API Node.js -, .


. , ┬л┬╗. . .


"" . , , . , , . , , ( ) тАУ npm (Node Package Manager), GitHub ( 2018 Microsoft).


Npm :


  • -;
  • (CLI);
  • .

(CLI), , .


, / , .
, .


1.2 /


:


  1. web Electron тАУ ;
  2. , Electron.

() web . web .


, ┬л┬╗:


  • Webpack, webpack-cli, webpack-merge. Webpack тАУ , () , , . , Webpack JavsScript-, CSS, , html- .
    Webpack тАФ code splitting ( ). , .
  • @ babel/core тАУ Babel.JS , javascript ES5 ES-2015+. babel/core тАФ , .
  • @ babel/preset-env тАУ @babel/core, , , . ┬лbabel/preset-env┬╗ .browserslistrc, . .
  • babel-plugin-prismjs тАУ babel. PrismJS , , Prism.
  • babel-loader тАУ Webpack. babel/core .
  • copy-webpack-plugin тАУ Webpack. .
  • css-loader тАУ Webpack. import url() import/require() (resolve) .
  • html-webpack-plugin тАУ Webpack. html index WebpackтАЩ. , , , .
  • mini-css-extract-plugin тАУ / Webpack. .css , .
  • null-loader тАУ Webpack. "" , .
  • Pug, pug-loader, pug-plain-loader тАУ Pug- , Haml JavaScript Node.js . pug-loader, pug-plain-loader тАУ Webpack, , .
  • sass-loader тАУ Webpack. sass (Syntactically Awesome Stylesheets) тАУ CSS, CSS . sass-loader CSS pug.
  • style-loader тАУ css css <style> Web .
  • vue-loader, vue-template-compiler тАУ .vue, . vue-template-compiler Vue ( template) , .

, ┬л┬╗:


  • prismjs тАУ Prism, , , -. -, , .
  • Vue тАУ JavaScript Framework. Framework ┬л┬╗. Framework Google тАФ .
  • Vuex тАУ , . Vuex . Vue , , . . тАФ . , , .
  • vue-prism-editor тАУ vue prismjs. prismjs, vue .
  • electron-find тАУ node.js electron, , .

2. ┬л┬╗


2.1


┬л┬╗ Windows. . - OC ( ) .


. Node.JS. https://nodejs.org/ru/ . Node.JS npm (Node Package Manager) (CLI).


Node.JS , , :


npm init

:


  1. ;
  2. ;
  3. ;
  4. JavaScript ;
  5. ;
  6. Git ;
  7. , , npm;
  8. ;
  9. , , npm;

JSON.



npm .


, Enter. : package.json, .


, ( PhpStorm) , JSON .


package.json
{
  "name": "stext",
  "version": "1.0.0",
  "description": " : :   ┬л┬╗.         .     .           .      ,      ",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron .",
    "dev": "webpack --mode=development --config webpack.dev.js --progress",
    "build": "webpack --config webpack.prod.js --env.F --mode=production --progress --hide-modules",
    "pack": "electron-builder --dir",
    "dist": "electron-builder"
  },
  "build": {
    "appId": "roman.gavrilow.ru.stext",
    "icon": "app/mainicon.png",
    "win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ]
    }
  },
  "author": "roman@gavrilow.ru",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.9.0",
    "@babel/preset-env": "^7.9.5",
    "babel-loader": "^8.1.0",
    "babel-plugin-prismjs": "^2.0.1",
    "copy-webpack-plugin": "^5.1.1",
    "css-loader": "^3.5.1",
    "electron": "^8.2.1",
    "electron-builder": "^22.4.1",
    "html-webpack-plugin": "^4.0.4",
    "mini-css-extract-plugin": "^0.9.0",
    "null-loader": "^3.0.0",
    "prismjs": "^1.20.0",
    "pug": "^2.0.4",
    "pug-loader": "^2.4.0",
    "pug-plain-loader": "^1.0.0",
    "sass-loader": "^8.0.2",
    "style-loader": "^1.1.3",
    "vue": "^2.6.11",
    "vue-loader": "^15.9.1",
    "vue-template-compiler": "^2.6.11",
    "vuex": "^3.1.3",
    "webpack": "^4.42.1",
    "webpack-cli": "^3.3.11",
    "webpack-merge": "^4.2.2"
  },
  "dependencies": {
    "electron-find": "^1.0.6",
    "vue-prism-editor": "^0.5.1"
  }
}

package.json. :


"scripts"


  • "start": "electron .", Electron . , , , "main".
  • "dev": "webpack --mode=development --config webpack.dev.js --progress", . , .
  • "build": "webpack --config webpack.prod.js --env.F --mode=production --progress --hide-modules", , .
  • "pack": "electron-builder --dir", Electron ┬лdist\┬╗ .
  • "dist": "electron-builder" тАФ Electron , .

devDependencies dependencies , . 1.2


package.json , npm install npm. node_modules , , , , тАж


2.2


     2.2.1 .


Electron main package.json. "main.js".


:


const { app, BrowserWindow, globalShortcut, Menu, dialog } = require('electron');

  • app тАФ Electron .
  • BrowserWindow тАУ render .
  • globalShortcut тАУ .
  • Menu тАУ .
  • Dialog тАУ .

. , . Electron. :


main.js
const { app, BrowserWindow, globalShortcut, Menu, dialog } = require('electron');

let win;

const isMac = process.platform === 'darwin';

function createWindow () {
    //   .
    win = new BrowserWindow({
        width: 800,
        height: 600,
        center: true,
        title: '   .   ..',
        icon: 'app/mainicon.png',
        webPreferences: {
            nodeIntegration: true
        }
    });

    //   index.html .
    win.loadFile('app/index.html');

    // ,      .
    //win.webContents.openDevTools();

    //    "focus",       
    //      Ctrl + F
    win.on('focus', () => {
        globalShortcut.register('CommandOrControl+F', function () {
            if (win && win.webContents) {
                //    "on-find"   .
                win.webContents.send('on-find')
            }
        })
    });

    //    "blur",        
    //       Ctrl + F
    win.on('blur', () => {
        globalShortcut.unregister('CommandOrControl+F')
    });

}

const template = [
    {
        label: '',
        submenu: [
            {
                label: '',
                click: async () => { //          ""
                    //      
                    let files = await dialog.showOpenDialog(win,{ properties: ['openFile'] });

                    if (win && win.webContents) {
                        //    "on-files-select"      .
                        await win.webContents.send('on-files-select', files)
                    }
                }
            },

            { type: 'separator' }, //  .
            isMac ? { role: 'close' } : { role: 'quit' } //      Electron
        ]
    },
    {
        label: '',
        submenu: [
            {
                label: '',
                click: async () => { //         ""
                    if (win && win.webContents) {
                        //    "on-find"   .
                        win.webContents.send('on-find')
                    }
                }
            }
        ]
    }
];

app.whenReady().then(function(){
    createWindow();
});

app.on('will-quit', () => {
    //    .
    globalShortcut.unregisterAll()
});

const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);

Menu Menu.buildFromTemplate(template), template JSON JavaScript Object. "main.js". :


const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);


┬л┬╗


     2.2.2 IPC.


, , Electron. , - render , IPC . Electron , , BrowserWindow:


win.webContents.send('on-find')
await win.webContents.send('on-files-select', files)

, ┬лsrc/electron.js┬╗


ipcRenderer.on('on-find', (e, args) => {

});

ipcRenderer.on('on-files-select', (e, args) => {

});

'on-find' тАУ .
'on-files-select' тАУ , , ┬л┬╗. . , .


     2.2.3


┬л┬╗ Vue. -, Vue . (view), . , Vue (SPA, Single-Page Applications), .


Vue Model-View-ViewModel (MVVM) . 2005 (John Gossman), Presentation Model. , Windows Presentation Foundation, Silverlight Microsoft.


MVVM MVC , , , ┬л ┬╗. MVC/MVP , (. Controller) Presenter. WPF Silverlight ┬л ┬╗, . , MVC, - , MVC/MVP.


Vue . ┬л┬╗. . , , :



Vue тАФ , , Vue .


Vue , Webpack, (entry). JavaScript ┬л.js┬╗. ┬лsrc/main.js┬╗. Web , , (bundle).


, Webpack webpack.common.js, . Webpack :


  • webpack.common.js
  • webpack.dev.js
  • webpack.prod.js

Webpack , .


Vue, vue-prism-editor, 1.2 . ( ) ┬л┬╗.


Vue 3 : , . . . тАЬsrc/app.vueтАЭ. template lang="pug", vue-loader pug , pug html . , html.


<script> . Vue , (hooks) . , , , . ┬л┬╗ created(), . , - тАЬsrc/main.jsтАЭ. (ON_SELECT_FILE) , IPC, Electron. IPC тАЬon-files-selectтАЭ


ON_SELECT_FILE . created() , , , , language, . language тАУ . , prism-editor . , text. text , prism-editor , .


     2.3


Electron , WebpackтАЩ. 2 : development (webpack.dev.js) production (webpack.prod.js). webpack.dev.js webpack.prod.js webpack.common.js. , . "webpack-merge" npm. devDependencies ┬лpackage.json┬╗. , , WebpackтАЩ (. scripts ┬лpackage.json┬╗.) WebpackтАЩ : path: path.resolve(__dirname, './app'). development production , production : + js, css , , VueJS , (bundle) WebpackтАЩ.


development :


npm run dev

┬л/app┬╗.



, , .


"production" :


npm run build


┬л/app┬╗ Webpack .


2.4 ┬л┬╗


Electron :


npm start

"scripts" :


"start": "electron ."

┬лelectron .┬╗ Electron ┬л┬╗ , "main" ┬лpackage.json┬╗



     2.4.1


┬л┬╗. ┬лmain.js┬╗, .


, ┬л┬╗ ┬л┬╗ Ctrl+F.



, .
(. .). . , , / (1/2). "<" ">" .



, , "0/0".


     2.4.2


, . , , open source npm, API Electron. dependencies ┬лpackage.json┬╗ 'electron-find'. ┬лsrc/electron.js┬╗. WebpakтАЩ . () ipc 'on-find', Electron Ctrl+F ┬л┬╗. (. main.js)


2.5 ┬л┬╗


, - Web , ┬л ┬╗ . Electron Chromium, , , , Google Chrome. , (main.js), Electron, ┬лDev Tools┬╗. (render ):


win.webContents.openDevTools();

2.6 ┬л┬╗


, - , , . 'devDependencies 'electron-builder. 'electron-builder тАФ Electron ┬л ┬╗. 'electron-builder ┬лpackage.json┬╗. 64- Windows:


  "build": {
    "appId": "roman.gavrilow.ru.stext",
    "icon": "app/mainicon.png",
    "win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ]
    }
  },

:



, :


npm run dist

.



. :


npm run pack


┬лdist/win-unpacked┬╗ .



web (), Webpack ┬л/app┬╗, . , electron-builder ┬л┬╗ () .asar resources. tar- , . Electron .


Electron API: Node API, Node.js Web API, Chromium. API asar:


  • Node API: Electron Node API, , fs.readFile require asar , тАФ .
  • Web API: - file:. Node API, asar , :
    let response = await this.$http.get('file:///path/to/example.asar/file.txt', parms);

┬л.asar┬╗ , , , original-fs, fs asar:


const originalFs = require('original-fs');
originalFs.readFileSync('/path/to/example.asar');


┬л┬╗ Web , , - , . тАУ Electron (Chromium). (50 ; 180 тАУ ),



Electron , ( Skype). , ( (IDE) тАФ Visual Studio Code).


.


┬л┬╗ , , , , .


, Ctrl+F .


, - , Electron . тАж ┬л┬╗ , . .


, , . , , C++ C++ QT. web , , , C++ , Web , , GET POST . , , , .


рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢реЛрдзрди рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдЬреЛ Google рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реА рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд░реЗрдВрдбрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреА, рдЬрд┐рд╕рд╕реЗ рд░реИрдо рдФрд░ рд░реИрдо рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рд╕реНрд╡рдпрдВ рд╣реЛрдирд╛, рдЬрд┐рд╕рдореЗрдВ рдЕрдм рдкреВрд░реНрдг рдХреНрд░реЛрдорд┐рдпрдо рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


рдЧрд┐рдЯрд╣рдм рдкрд░рд┐рдпреЛрдЬрдирд╛:
https://github.com/gewisser/SText




рд╢рдмреНрджрдХреЛрд╖
тДЦ /
1(IDE).
2
3, , , , .
4()
5(Framework), ; , .
6, .
7.
8
9, .
10, .
11.
12-, HTTP- , -, HTTP-, , HTML-, , , - .
13-, тАФ (, ), , (, ).
14, . , .
15, . , , , .
16IPC ( inter-process communication).
17, .
18, , .
19( ),
20, , , .
21WebpackWebpack .
22WebpackWebpack .
23, html- html-
24, (, )
25╠Б, , ,
26, . , , , , .
27JSONJavaScript Object Notation тАФ , , . JavaScript, ECMA-262 3rd Edition тАФ December 1999.
28(hooks), .
29Vue .
30webWeb , .
31APIApplication Programming Interface тАФ , .
32, .


All Articles