新萄京娱乐场.2959.com 7

的性能优化【新萄京娱乐场.2959.com】,快速入门

Excel 的列调换

  • Excel 的列供给用『字母』表示,但无法大约地经过
    String.fromCharCode()
    完结,因为当不只有 26 列 时就能生出难点(如:第 27
    列,String.fromCharCode(65+26) 得到的是 [,而不是
    AA)。因而,那亟需通过『十进制和 26 进制调换』算法来促成。

JavaScript

// 将盛传的当然数转换为26进制表示。映射关系:[0-25] -> [A-Z]。
function getCharCol(n) { let temCol = ”, s = ”, m = 0 while (n >=
0) { m = n % 26 + 1 s = String.fromCharCode(m + 64) + s n = (n – m) / 26
} return s }

1
2
3
4
5
6
7
8
9
10
11
12
13
// 将传入的自然数转换为26进制表示。映射关系:[0-25] -> [A-Z]。
function getCharCol(n) {
  let temCol = ”,
    s = ”,
    m = 0
  while (n >= 0) {
    m = n % 26 + 1
    s = String.fromCharCode(m + 64) + s
    n = (n – m) / 26
  }
  return s
}
 

JavaScript

// 将盛传的26进制调换为自然数。映射关系:[A-Z] ->[0-25]。
function getNumCol(s) { if (!s) return 0 let n = 0 for (let i = s.length

  • 1, j = 1; i >= 0; i–, j *= 26) { let c = s[i].toUpperCase() if
    (c < ‘A’ || c > ‘Z’) return 0 n += (c.charCodeAt() – 64) * j }
    return n – 1 }
1
2
3
4
5
6
7
8
9
10
11
12
// 将传入的26进制转换为自然数。映射关系:[A-Z] -&gt;[0-25]。
function getNumCol(s) {
  if (!s) return 0
  let n = 0
  for (let i = s.length – 1, j = 1; i &gt;= 0; i–, j *= 26) {
    let c = s[i].toUpperCase()
    if (c &lt; ‘A’ || c &gt; ‘Z’) return 0
    n += (c.charCodeAt() – 64) * j
  }
  return n – 1
}
 

主进度与渲染进度的界别

主进度使用 BrowserWindow 实例创制页面。每种 BrowserWindow
实例都在友好的渲染进度里运转页面。当四个 BrowserWindow
实例被灭绝后,相应的渲染进程也会被终止。

主进度管理全部页面和与之对应的渲染进程。每一种渲染进度都以相互独立的,并且只关切他们友善的页面。

是因为在页面里保管原生 GUI
能源是不行危急而且便于造成财富走漏,所以在页面调用 GUI 相关的 APIs
是不被允许的。借令你想在网页里使用 GUI
操作,其对应的渲染进程必须与主进度举行报导,央求主进程张开连锁的 GUI
操作。

在 Electron,大家提供三种办法用于主进度和渲染进度之间的通信。像
ipcRenderer
ipcMain
模块用于发送音讯, remote
模块用于 RPC 格局通信。这么些剧情都能够在三个 FAQ 中查阅 how to share
data between web
pages。

连串背景

用户切磋的定量钻探和轻量级数据管理中,均需对数码举办冲洗管理,以剔除极度数据,保障数据结果的信度和效度。方今因应用商量数据和轻量级数据的多变性,对轻量级数据洗濯往往选取人工洗刷,缺少统一、规范的洗刷流程,但对于实验研究和轻量级的数据往往是亟需保险数据稳定性的,由此,在对数码进行清洗时可是有标准化的保洁情势。

Windows

$ .\electron\electron.exe your-app\

高亮 table 的列

Excel 单元格采纳 table 标签呈现。在 Excel
中,被选中的单元格会高亮相应的『行』和『列』,以提示用户。在该行使中也可能有做相应的管理,横向高亮选择
tr:hover 完成,而纵向呢?这里所运用的贰个本事是:

万一 HTML 结构如下:

JavaScript

div.container table tr td

1
2
3
4
5
div.container
  table
    tr
      td
 

CSS 代码如下:

JavaScript

.container { overflow:hidden; } td { position: relative; }
td:hover::after { position: absolute; left: 0; right: 0; top: -1个亿px;
// 小指标达成,不过是负的😭 bottom: -1个亿px; z-index: -1; //
防止遮住本身和同列 td 的内容、border 等 }

1
2
3
4
5
6
7
8
9
10
11
.container { overflow:hidden; }
td { position: relative; }
td:hover::after {
  position: absolute;
  left: 0;
  right: 0;
  top: -1个亿px; // 小目标达成,不过是负的&#x1f62d;
  bottom: -1个亿px;
  z-index: -1; // 避免遮住自身和同列 td 的内容、border 等
}
 

electron-prebuilt

electron
是一个 npm 模块,包涵所利用的 Electron 预编写翻译版本。
一旦您曾经用 npm 全局安装了它,你只供给坚守如下格局平昔运转你的运用:

electron .

若是您是一些安装,那运维:

交互通信

由于主进度和渲染进度各自肩负差异的职责,而对此急需一同实现的职分,它们供给相互通信。IPC就为此而生,它提供了经过间的报道。但它不得不在主进度与渲染进程之间传递音信(即渲染进程之间无法举办直接通信)。

  • IPC:主进度和渲染进度各自有着三个 IPC 模块。

新萄京娱乐场.2959.com 1

制造你首先个 Electron 应用

大致上,一个 Electron 应用的目录结构如下:

your-app/
├── package.json
├── main.js
└── index.html

package.json 的格式和 Node 的完全一致,并且极其被 main
字段申明的剧本文件是你的施用的起步脚本,它运转在主进度上。你选拔里的
package.json 看起来应当像:

{
  "name"    : "your-app",
  "version" : "0.1.0",
  "main"    : "main.js"
}

注意:如果 main 字段未有在 package.json 注明,Electron会优先加载
index.js

main.js 应该用于成立窗口和拍卖系统事件,四个规范的事举例下:

const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')

// 保持一个对于 window 对象的全局引用,如果你不这样做,
// 当 JavaScript 对象被垃圾回收, window 会被自动地关闭
let win

function createWindow () {
  // 创建浏览器窗口。
  win = new BrowserWindow({width: 800, height: 600})

  // 加载应用的 index.html。
  win.loadURL(url.format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }))

  // 打开开发者工具。
  win.webContents.openDevTools()

  // 当 window 被关闭,这个事件会被触发。
  win.on('closed', () => {
    // 取消引用 window 对象,如果你的应用支持多窗口的话,
    // 通常会把多个 window 对象存放在一个数组里面,
    // 与此同时,你应该删除相应的元素。
    win = null
  })
}

// Electron 会在初始化后并准备
// 创建浏览器窗口时,调用这个函数。
// 部分 API 在 ready 事件触发后才能使用。
app.on('ready', createWindow)

// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
  // 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
  // 否则绝大部分应用及其菜单栏会保持激活。
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  // 在这文件,你可以续写应用剩下主进程代码。
  // 也可以拆分成几个文件,然后用 require 导入。
  if (win === null) {
    createWindow()
  }
})

// 在这文件,你可以续写应用剩下主进程代码。
// 也可以拆分成几个文件,然后用 require 导入。

末段,你想体现的 index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using node <script>document.write(process.versions.node)</script>,
    Chrome <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
  </body>
</html>

为 DOM 的 File 对象增添了 path 属性

Electron 为 File 对象额外增了 path
属性,该属性可获取文件在文件系统上的诚实路线。由此,你能够应用 Node
任性妄为。应用场景有:拖拽文件后,通过 Node 提供的 File API
读取文件等。

macOS

$ ./Electron.app/Contents/MacOS/Electron your-app/

Electron.app 里面是 Electron 发布包,你能够在
这里
下载到。

Vue 全家桶

该工具使用了 Vue、Vuex、Vuex-router。在工具基本定型阶段,由 1.x 晋级到了
2.x。

主进程

在 Electron 里,运行 package.jsonmain
脚本的进程被称作主进程。在主进度运营的本子能够以成立 web
页面包车型客车款式浮现 GUI。

主进程

主过程,经常是贰个命名称为 main.js 的文书,该公文是种种 Electron
应用的进口。它决定了使用的生命周期(从展开到关门)。它不只能调用原生成分,也能成立新的(五个)渲染进度。其它,Node
API 是停放个中的。

  • 调用原生成分:展开 diglog
    和其他操作系统的竞相均是能源密集型操作(注:出于安全思索,渲染进度是不能够间接待上访问本地能源的),因而都亟需在主进程达成。

新萄京娱乐场.2959.com 2

登时入门

Electron 可以令你使用纯 JavaScript 调用丰硕的原生 APIs
来创设桌面应用。你能够把它作为二个留神于桌面应用的 Node.js
的变体,而不是 Web 服务器。

那不意味着 Electron 是绑定了 GUI 库的 JavaScript。相反,Electron 使用
web 页面作为它的 GUI,所以你能把它看成成八个被 JavaScript
调控的,精简版的 Chromium 浏览器。

记得关闭 Vuex 的从严方式

其它,由于本人学艺不精和马虎,忘记在生产蒙受关闭 Vuex
的『严酷情势』。

Vuex 的从严情势要在生育条件中关闭,不然会对 state 树举办八个深观望(deep
watch),产生不要求的性质损耗。只怕在数据量少时,不会专注到那些难题。

还原当时的现象:导入 Excel 数据后,再张开互动(涉及 Vuex
的读写操作),必要等几秒才会响应,而直接通过纯 DOM
监听的风云则无此主题素材。由此,判别出是 Vuex 难点。

JavaScript

const store = new Vuex.Store({ // … strict: process.env.NODE_ENV !==
‘production’ })

1
2
3
4
5
const store = new Vuex.Store({
  // …
  strict: process.env.NODE_ENV !== ‘production’
})
 

Linux

$ ./electron/electron your-app/

自动更新

一经 Electron
应用尚未提供自动更新效率,那么就意味着用户想感受新开垦的效果与利益或用上修复
Bug
后的新本子,只可以靠用户本身主动地去官方网址下载,这的确是不好的感受。Electron
提供的 autoUpdater
模块可达成自动更新作用,该模块提供了第三方框架
Squirrel 的接口,但 Electron 最近只内置了
Squirrel.Mac,且它与
Squirrel.Windows(要求非常引入)的管理方式也不一致样(在客户端与劳务器端两地点)。因而借使对该模块不熟稔,管理起来会相对比较麻烦。具体能够参照他事他说加以考察小编的另一篇译文《Electron
自动更新的欧洲经济共同体教程(Windows 和
OSX)》。

现阶段 Electron 的 autoUpdater 模块不辅助 Linux 系统。

除此以外,XCel 近来并从未选择 autoUpdater 模块实现自动更新功效,而是选拔Electron 的
DownloadItem
模块完成,而服务器端则应用了 Nuts。

运作你的施用

只要你创设了最初的 main.jsindex.htmlpackage.json
那多少个公文,你可能会想尝试在本地运营并测量试验,看看是或不是和期望的那么正常运维。

多进程!!!

日前说道,JavaScript
天生单线程,尽管再快,对于数据量比较大时,也会冒出拒绝响应的主题材料。由此须要Web Worker 或类似的方案去化解。

在那边小编不采纳 Web worker 的原故有如下几点:

  1. 有别的越来越好的代替方案:二个主进度能创造八个渲染进度,通过 IPC
    就可以进展多少交互;
  2. Electron 不匡助 Web
    Worker!(当然,大概会在新本子帮助,最新音信请关切官方)

Electron 小编在 二〇一五.11.7 在《state of web worker support?》 issue
中平复了以下这一段:

Node integration doesn’t work in web workers, and there is no plan to
do. Workers in Chromium are implemented by starting a new thread, and
Node is not thread safe. Back in past we had tried to add node
integration to web workers in Atom, but it crashed too easily so we
gave up on it.

于是,大家最终利用了创办二个新的渲染进度 background process
举行管理数据。由 Electron 章节可见,各样 Electron
渲染进程是独自的,因而它们不会相互影响。但那也拉动了三个标题:它们不可能互相通信?

错!上边有 3 种办法展开广播发表:

  1. Storage
    API:对有些标签页的
    localStorage/sessionStorage 对象进行增加和删除改时,其余标签页能经过
    window.storage 事件监听到。
  2. IndexedDB:IndexedDB
    是三个为了能够在客户端存款和储蓄可观数额的结构化数据,并且在这个数据上利用索引举行高品质检索的
    API。
  3. 透过主进度作为中间转播站:设主分界面包车型客车渲染进度是 A,background process
    是 B,那么 A 先将 Excel 数据传递到主进程,然后主进度再转车到 B。B
    管理完后再原路重回,具体如下图。当然,也得以将数据存款和储蓄在主进度中,然后在三个渲染进度中选用remote 模块来拜访它。

该工具采纳了第二种格局的率先种情状:
新萄京娱乐场.2959.com 3

1、主页面渲染进程 A 的代码如下:

JavaScript

//① ipcRenderer.send(‘filter-start’, { filterTagList:
this.filterTagList, filterWay: this.filterWay, curActiveSheetName:
this.activeSheet.name }) // ⑥ 在某处接收 filter-response 事件
ipcRenderer.on(“filter-response”, (arg) => { // 得随地理数据 })

1
2
3
4
5
6
7
8
9
10
11
12
//①
ipcRenderer.send(‘filter-start’, {
    filterTagList: this.filterTagList,
    filterWay: this.filterWay,
    curActiveSheetName: this.activeSheet.name
})
 
// ⑥ 在某处接收 filter-response 事件
ipcRenderer.on("filter-response", (arg) =&gt; {
    // 得到处理数据
})
 

2、作为中间转播站的主进度的代码如下:

JavaScript

//② ipcMain.on(“filter-start”, (event, arg) => { // webContents
用于渲染和操纵 web page
backgroundWindow.webContents.send(“filter-start”, arg) }) // ⑤
用于吸收接纳重临事件 ipcMain.on(“filter-response”, (event, arg) => {
mainWindow.webContents.send(“filter-response”, arg) })

1
2
3
4
5
6
7
8
9
10
11
//②
ipcMain.on("filter-start", (event, arg) =&gt; {
    // webContents 用于渲染和控制 web page
    backgroundWindow.webContents.send("filter-start", arg)
})
 
// ⑤ 用于接收返回事件
ipcMain.on("filter-response", (event, arg) =&gt; {
    mainWindow.webContents.send("filter-response", arg)
})
 

3、管理繁重数据的 background process 渲染进度 B 的代码如下:

JavaScript

// ③ ipcRenderer.on(‘filter-start’, (event, arg) => { // 进行演算 …
// ④ 运算达成后,再通过 IPC 原路重返。主进程和渲染进度 A
也要创建相应的监听事件 ipcRenderer.send(‘filter-response’, { filRow:
tempFilRow }) })

1
2
3
4
5
6
7
8
9
10
11
// ③
ipcRenderer.on(‘filter-start’, (event, arg) =&gt; {
    // 进行运算
    …
 
    // ④ 运算完毕后,再通过 IPC 原路返回。主进程和渲染进程 A 也要建立相应的监听事件
    ipcRenderer.send(‘filter-response’, {
        filRow: tempFilRow
    })
})
 

到现在,大家将『读取文件』、『过滤数据』和『导出文件』三大耗费时间的数码操作均转移到了
background process 中处理。

此地,大家只开创了一个
background process,假如想要做得更极致,我们得以新建『CPU 线程数- 1 』
个的 background process
同期对数码举行拍卖,然后在主进度对处理后数据开始展览拼接,最终再将拼接后的数目重临到主页面包车型地铁渲染进度。那样就足以丰裕榨干
CPU 了。当然,在此小编不会开始展览那几个优化。

并非为了优化而优化,否则贪小失大。 —— 某网民

macOS / Linux

$ ./node_modules/.bin/electron .

有关小编:刘健超-J.c

新萄京娱乐场.2959.com 4

前端,在路上…
个人主页 ·
笔者的稿子 ·
19 ·
    

新萄京娱乐场.2959.com 5

手工业下载 Electron 二进制文件

假设您手工业下载了 Electron
的二进制文件,你也得以直接动用个中的二进制文件一贯运转你的利用。

把它们想象成那样

Chrome(或其余浏览器)的各类标签页(tab)及其页面,就好比 Electron
中的二个单身渲染进程。纵然关闭全数标签页,Chrome 仍旧存在。那好比
Electron 的主进程,能张开新的窗口或关闭这么些利用。

注:在 Chrome
浏览器中,贰个标签页(tab)中的页面(即除去浏览器本身部分,如找寻框、工具栏等)正是二个渲染进程。

新萄京娱乐场.2959.com 6

渲染进度

是因为 Electron 使用 Chromium 来突显页面,所以 Chromium
的多进程协会也被充足利用。各个 Electron
的页面都在运作着协调的长河,那样的长河大家称为渲染进度

在一般浏览器中,网页经常会在沙盒蒙受下运转,并且不允许访问原生产资料源。但是,Electron
用户全部在网页中调用 Node.js 的 APIs
的技术,能够与底层操作系统直接互动。

特点一览

  • 听说 Electron 研究开发并打包成为原生应用,用户体验突出;
  • 可视化操作 Excel 数据,协理文件的导入导出;
  • 持有单列运算逻辑、多列运算逻辑和双列范围逻辑两种筛选方式,并且可通过“且”、“或”和“编组”的艺术随机组合。

Windows

$ .\node_modules\.bin\electron .

Electron 是什么?

Electron 是八个能够用 JavaScript、HTML 和 CSS
创设桌面应用程序的。这几个应用程序能打包到 Mac、Windows 和 Linux
系统上运维,也能上架到 Mac 和 Windows 的 App Store。

  • JavaScript、HTML 和 CSS 都以 Web
    语言,它们是组成网址的一有的,浏览器(如
    Chrome)了解怎么着将这一个代码转为可视化图像。
  • Electron 是三个库:Electron
    对底层代码举行抽象和包装,让开垦者能在此之上营造项目。

参谋上边例子

复制并且运维那些库
electron/electron-quick-start

注意:运维时须要你的系统已经安装了
Git 和
Node.js(包含
npm)。

# 克隆这仓库
$ git clone https://github.com/electron/electron-quick-start
# 进入仓库
$ cd electron-quick-start
# 安装依赖库并运行应用
$ npm install && npm start

越来越多 apps 例子,查看 electron 社区创设的 list of
boilerplates。

支撑广大的编辑撰写效率,如粘贴和复制

Electron 应用在 MacOS
中暗许不补助『复制』『粘贴』等大规模编辑成效,由此供给为 MacOS
显式地安装复制粘贴等编写制定作用的菜单栏,并为此设置相应的急迅键。

JavaScript

// darwin 就是 MacOS if (process.platform === ‘darwin’) { var template =
[{ label: ‘FromScratch’, submenu: [{ label: ‘Quit’, accelerator:
‘CmdOrCtrl+Q’, click: function() { app.quit(); } }] }, { label: ‘Edit’,
submenu: [{ label: ‘Undo’, accelerator: ‘CmdOrCtrl+Z’, selector:
‘undo:’ }, { label: ‘Redo’, accelerator: ‘Shift+CmdOrCtrl+Z’, selector:
‘redo:’ }, { type: ‘separator’ }, { label: ‘Cut’, accelerator:
‘CmdOrCtrl+X’, selector: ‘cut:’ }, { label: ‘Copy’, accelerator:
‘CmdOrCtrl+C’, selector: ‘copy:’ }, { label: ‘Paste’, accelerator:
‘CmdOrCtrl+V’, selector: ‘paste:’ }, { label: ‘Select All’, accelerator:
‘CmdOrCtrl+A’, selector: ‘selectAll:’ }] }]; var osxMenu =
menu.buildFromTemplate(template); menu.setApplicationMenu(osxMenu); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// darwin 就是 MacOS
if (process.platform === ‘darwin’) {
    var template = [{
      label: ‘FromScratch’,
      submenu: [{
        label: ‘Quit’,
        accelerator: ‘CmdOrCtrl+Q’,
        click: function() { app.quit(); }
      }]
    }, {
      label: ‘Edit’,
      submenu: [{
        label: ‘Undo’,
        accelerator: ‘CmdOrCtrl+Z’,
        selector: ‘undo:’
      }, {
        label: ‘Redo’,
        accelerator: ‘Shift+CmdOrCtrl+Z’,
        selector: ‘redo:’
      }, {
        type: ‘separator’
      }, {
        label: ‘Cut’,
        accelerator: ‘CmdOrCtrl+X’,
        selector: ‘cut:’
      }, {
        label: ‘Copy’,
        accelerator: ‘CmdOrCtrl+C’,
        selector: ‘copy:’
      }, {
        label: ‘Paste’,
        accelerator: ‘CmdOrCtrl+V’,
        selector: ‘paste:’
      }, {
        label: ‘Select All’,
        accelerator: ‘CmdOrCtrl+A’,
        selector: ‘selectAll:’
      }]
    }];
    var osxMenu = menu.buildFromTemplate(template);
    menu.setApplicationMenu(osxMenu);
}
 

以批发版本运转

在你成功了您的选取后,你能够依照
应用安插
指点发布二个本子,并且以已经打包好的款型运维应用。

js-xlsx

该库扶助各样钟表格格式的剖判与变化。它由 JavaScript 达成,适用于前面二个和
Node。详情>>

如今支撑读入的格式有(不断更新):

  • Excel 2007+ XML Formats (XLSX/XLSM)
  • Excel 2007+ Binary Format (XLSB)
  • Excel 2003-2004 XML Format (XML “SpreadsheetML”)
  • Excel 97-2004 (XLS BIFF8)
  • Excel 5.0/95 (XLS BIFF5)
  • OpenDocument Spreadsheet (ODS)

支持写出的格式有:

  • XLSX
  • CSV (and general DSV)
  • JSON and JS objects (various styles)

现阶段该库提供的 sheet_to_json 方法能将读入的 Excel 数据转为 JSON
格式。而对此导出操作,我们须要为 js-xlsx 提供钦赐的 JSON 格式。

更加多关于 Excel 在 JavaScript
中管理的文化可查阅凹凸实验室的《Node读写Excel文件切磋实行》。但该文章存在两处难点(均在
js-xlsx 实战的导出表格部分):

  1. 变化尾部时,Excel 的列音信轻松地经过 String.fromCharCode(65+j)
    生成。当列大于 26 时会出现难点。这么些标题会在后头章节中付出化解方案;
  2. 转变到 worksheet
    须要的布局处,出现逻辑性错误,并且会导致严重的质量难题。逻辑难点在此不陈述,大家看看质量难点:
    随着 ECMAScript 的不断更新,JavaScript
    变得尤为强劲和易用。尽管如此,大家依然要产生『物尽所用』,而不要『骥伏盐车』,不然大概会获得“反效果”。这里导致性能难题的难为
    Object.assign()
    方法,该办法能够把自由四个源对象的可枚举属性拷贝至指标对象,并再次来到目的对象。由于该方式本人的达成机制,会在此案例中产生多量的冗余操作。在此案例中,单元格音讯是唯一的,所以直接通过
    forEach 为七个空对象赋值就可以。升高 N
    倍品质的还要,也把逻辑性错误消除了。

原来的:

JavaScript

var result = 某数组.reduce((prev, next) => Object.assign({}, prev,
{[next.position]: {v: next.v}}), {});

1
2
var result = 某数组.reduce((prev, next) =&gt; Object.assign({}, prev, {[next.position]: {v: next.v}}), {});
 

改为:

JavaScript

var result = 某数组.forEach((v, i) => data[v.position]= {v: v.v})

1
2
var result = 某数组.forEach((v, i) =&gt; data[v.position]= {v: v.v})
 

实践是验证真理的唯一标准

在知晓上述知识后,下边就商量在该项目实行中总括出来的技能、难题和主要性

有关手艺

假设对某项才干相比较熟识,则可略读/跳过。

为什么选择 Vue

对此作者来讲:

  • 大致易用,一般选择只需看官方文档。
  • 数量驱动视图,所以基本不用操作 DOM 了。
  • 框架的存在是为着帮忙大家应对复杂度。
  • 全家桶的实惠是:对于一般景象,大家就无需考虑用怎么着个库(插件)。

Vue 1.x -> Vue 2.0 的本子迁移用
vue-migration-helper
就能够分析出超越60%亟待更换的地点。

网桐月有一点数不尽有关 Vue 的科目,故在此不再赘言。至此,Vue 部分介绍完成。


它由哪些组成?

Electron 结合了 ChromiumNode.js 和用于调用操作系统本地作用的
API(如展开文件窗口、通告、图标等)。

  • Chromium:Google 创建的一个开源库,并用以 Google 的浏览器
    Chrome。
  • Node.js(Node):二个在服务器运转 JavaScript
    的周转时(runtime),它具有访问文件系统和网络权限(你的Computer也足以是一台服务器!)。

新萄京娱乐场.2959.com 7

为啥它如此首要?

平时来说,各种操作系统的桌面应用都由个别的原生语言实行编写制定,那意味着需要3 个团体分别为该使用编写相应版本。而 Electron 则允许你用 Web
语言编写一回就可以。

  • 原生(操作系统)语言:用于开拓主流操作系统应用的原生语言的对应关系(大多数情景下):Mac
    对应 Objective C、Linux 对应 C、Windows 对应 C++。

发表评论

电子邮件地址不会被公开。 必填项已用*标注