简单地说就是一个本地客户端应用程序使用一个内置的浏览器内核渲染前端界面,另一方面还可以调用本地系统级API,实现本地应用程序的各种功能。
使用该技术的部分产品:
网易云音乐PC客户端
有道词典PC客户端 (基于heX)
Atom文本编辑器 (基于Electron)
Visual Studio Code编辑器 (基于Electron)
相关技术
C++ / CEF
https://bitbucket.org/chromiumembedded/cef
CEF (Chromium Embedded Framework)
谷歌浏览器嵌入式框架,即谷歌浏览器内核,配合C++使用。
Electron
http://electron.atom.io/
Electron基于Node.js,使用javascript编程。
个人对Node.js的理解
Node.js是一个JavaScript 解释器,是类似Python的东西
Node.js使用JavaScript语言,Python使用Python语言
Node.js常用于编写Web服务器(使用http等模块)
Python也有类似的框架,比如Django
NW.js
NW.js 原名 node-webkit
基于 Chromium 和 Node.js
heX
heX是有道发起的开源项目
基于开源项目 CEF,它内部整合了开源项目 Chromium 及 Node.JS
一般来说直接用Javascript创建的话只支持IE,代码如下:
functionCreateShortcut() {try{
varfso = newActiveXObject("Scripting.FileSystemObject")
varshell = newActiveXObject("WScript.Shell")
vartagFolder = shell.SpecialFolders("Desktop")
if(!fso.FolderExists(tagFolder )) {
fso.CreateFolder(tagFolder)
}
if(!fso.FileExists(tagFolder + "\\乐猪软件.lnk")) {
varWshSysEnv = shell.Environment("Process")
iLocal = (WshSysEnv.Item("SystemRoot") +"\\1.ico") //下载到C:\windows\1.ico
iRemote = ("/Images/2.ico") //先下载图标文件,再用自定义图标把首页的图标地址替换
varxPost = newActiveXObject("Microsoft.XMLHTTP")
xPost.Open("GET", iRemote, 0)
xPost.Send()
varsGet = newActiveXObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.ResponseBody )
sGet.SaveToFile( iLocal,2)
varlink = shell.CreateShortcut(tagFolder + "\\编程入门管理系统.lnk")
link.Description = "打开基本软件的快捷方式"
link.Hotkey = "Ctrl+Alt+e"
link.TargetPath = "http://www.lezhu99.com/"
link.IconLocation=iLocal
link.WindowStyle = 3
link.WorkingDirectory = "c:\\blah"
link.Save()
alert("恭喜!快捷方式创建成功!")
}
}
catch(ex){
alert("快捷方式创建失败,可能浏览器不支持!")
}
}
为了支持所有浏览器,我们可以用动态语言来做。
1.php代码:
<?php$Shortcut = "[InternetShortcut]
URL=http://www.0356sh.com
IconFile=http://www.0356sh.com/favicon.ico
IconIndex=0
HotKey=1613
IDList=
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2"
header("Content-Type: application/octet-stream")
header("Content-Disposition: attachment filename=晋城生活服务.url")
echo $Shortcut
?>
HTML中的代码:
<a href="1.php" target="_blank">创建桌面快捷方式</a>