<commit_before>历史上只能用C++/Vc/Delphi／.net开发PC桌面应用，如今用HTML/CSS/JS也以，因为随着技术的发展，技术的易用性的重要性的比硬件性能的重要性更加凸显了。目前主流的都是实用Node-webkit和atom shell。看看还有哪些技术解决方案

1,heX 项目介绍

heX 提供了一种全新的构建桌面应用的方式，可以使用 web 技术快速构建跨平台的桌面应用。heX 基于 CEF 并且融合了 Chromium 与 Node.js，所以我们可以在 web 页面中使用各种 Node.js 原生模块及第三方扩展，同时在这些模块及扩展中还可以访问到 HTML 中的 DOM 元素。此外，heX 甚至可以以一种 web 容器的方式嵌入到桌面应用的工程中。 

heX 首页：http://hex.youdao.com

源代码：https://github.com/netease-youdao/hex

邮件组：https://groups.google.com/group/youdao_hex

Blog：http://hex.youdao.com/blog

Wiki：https://github.com/netease-youdao/hex/wiki

问题：https://github.com/netease-youdao/hex/issues

2.APPJS

Using AppJS you don't need to be worry about coding cross-platform or learning new languages and tools. You are already familiar with HTML, CSS and Javascript. What is better than this stack for application development? Beside, AppJS uses Chromium at the core so you get latest HTML 5 APIs working. So relax and focus on the task your application should do.

The below packages include everything needed to get started with AppJS, including Node.js, all dependencies, binaries, and a launcher ready to go out of the box. 1.) Extract to a folder. 2.) Double click on launch. 3.) Hello World.

AppJS 0.0.20 Distributables:

Windows

Linux 32 bit / 64 bit

Mac OS X

For Node.js users, AppJS can be also be installed via npm.

>npm install appjs

AppJS requires 32bit Node on OS X. It works on 64bit OS X but Node must be 32bit. We're working on solving this, but it's a limitation of Chrome itself so it's a work in progress. Help us gain traction by starring this chromium issue.


     // load appjs
       var appjs = require('appjs'); 
   
     // serve static files from a directory  
       appjs.serveFilesFrom(__dirname + '/content'); 
    
       // handle requests from the browser appjs.router.post('/',
        function(request, response, next){
         response.send('Hey! How are you'+request.post('firstname')); 
       })   
  
         // create a window 
         var window = appjs.createWindow({ 
                    width: 640,
                    height: 460, 
                    alpha: false, 
         });
         
          // prepare the window when first created   
          window.on('create', function(){ 
                console.log("Window Created"); 
                // window.frame controls the desktop window 
                window.frame.show().center();
            }); 
        
          // the window is ready when the DOM is loaded  
           window.on('ready', function(){ 
               console.log("Window Ready"); 
            // directly interact with the DOM
             window.process = process;
             window.module = module; 
           
             window.addEventListener('keydown', function(e){
             // show chrome devtools on f12 or commmand+option+j 
                 if (e.keyIdentifier === 'F12' || e.keyCode === 74 && 
                e.metaKey && e.altKey) { 
                    window.frame.openDevTools(); 
                } 
                });
           });

         // cleanup code when window is closed
         window.on('close', function(){ 
                console.log("Window Closed"); 
          });

        <!doctype html>
        <html> 
            <head> 
                <title>Hello World!</title>
             </head> 
            <body> 
                <form action="/" method="POST"> 
                <input name="firstname" type="text" placeholder="Firstname"/> 
                <input name="lastname" type="text" placeholder="Lastname"/> <input type="submit"/>
                 </form> 
            </body>
         </html><commit_msg>Updates 2016-10/桌面应用解决方案集锦.md<commit_after>历史上只能用C++/Vc/Delphi／.net开发PC桌面应用，如今用HTML/CSS/JS也以，因为随着技术的发展，技术的易用性的重要性的比硬件性能的重要性更加凸显了。目前主流的都是实用Node-webkit和atom shell。看看还有哪些技术解决方案

1,heX 项目介绍

heX 提供了一种全新的构建桌面应用的方式，可以使用 web 技术快速构建跨平台的桌面应用。heX 基于 CEF 并且融合了 Chromium 与 Node.js，所以我们可以在 web 页面中使用各种 Node.js 原生模块及第三方扩展，同时在这些模块及扩展中还可以访问到 HTML 中的 DOM 元素。此外，heX 甚至可以以一种 web 容器的方式嵌入到桌面应用的工程中。 

heX 首页：http://hex.youdao.com

源代码：https://github.com/netease-youdao/hex

邮件组：https://groups.google.com/group/youdao_hex

Blog：http://hex.youdao.com/blog

Wiki：https://github.com/netease-youdao/hex/wiki

问题：https://github.com/netease-youdao/hex/issues

2.APPJS

Using AppJS you don't need to be worry about coding cross-platform or learning new languages and tools. You are already familiar with HTML, CSS and Javascript. What is better than this stack for application development? Beside, AppJS uses Chromium at the core so you get latest HTML 5 APIs working. So relax and focus on the task your application should do.

The below packages include everything needed to get started with AppJS, including Node.js, all dependencies, binaries, and a launcher ready to go out of the box. 1.) Extract to a folder. 2.) Double click on launch. 3.) Hello World.

AppJS 0.0.20 Distributables:

Windows

Linux 32 bit / 64 bit

Mac OS X

For Node.js users, AppJS can be also be installed via npm.

>npm install appjs

AppJS requires 32bit Node on OS X. It works on 64bit OS X but Node must be 32bit. We're working on solving this, but it's a limitation of Chrome itself so it's a work in progress. Help us gain traction by starring this chromium issue.


     // load appjs
       var appjs = require('appjs'); 
   
     // serve static files from a directory  
       appjs.serveFilesFrom(__dirname + '/content'); 
    
       // handle requests from the browser appjs.router.post('/',
        function(request, response, next){
         response.send('Hey! How are you'+request.post('firstname')); 
       })   
  
         // create a window 
         var window = appjs.createWindow({ 
                    width: 640,
                    height: 460, 
                    alpha: false, 
         });
         
          // prepare the window when first created   
          window.on('create', function(){ 
                console.log("Window Created"); 
                // window.frame controls the desktop window 
                window.frame.show().center();
            }); 
        
          // the window is ready when the DOM is loaded  
           window.on('ready', function(){ 
               console.log("Window Ready"); 
            // directly interact with the DOM
             window.process = process;
             window.module = module; 
           
             window.addEventListener('keydown', function(e){
             // show chrome devtools on f12 or commmand+option+j 
                 if (e.keyIdentifier === 'F12' || e.keyCode === 74 && 
                e.metaKey && e.altKey) { 
                    window.frame.openDevTools(); 
                } 
                });
           });

         // cleanup code when window is closed
         window.on('close', function(){ 
                console.log("Window Closed"); 
          });

        <!doctype html>
        <html> 
            <head> 
                <title>Hello World!</title>
             </head> 
            <body> 
                <form action="/" method="POST"> 
                <input name="firstname" type="text" placeholder="Firstname"/> 
                <input name="lastname" type="text" placeholder="Lastname"/> <input type="submit"/>
                 </form> 
            </body>
         </html>
3,CEF

CEF(Chromium Embedded Framework) 是什么？

CEF 的官网介绍的很简洁：A simple framework for embedding chromium browser windows in other applications. 具体地说就是一个可以将浏览器功能（页面渲染，JS 执行）嵌入到其他应用程序的框架。

CEF 的应用场景
CEF 作为嵌入式浏览器框架最适合的应用场景应该是 HTML 页面渲染，所以很多程序都基于 CEF 来为应用程序提供 HTML 页面渲染的功能，如有道笔记，Evernote，GitHub Window Client，Q+，Adobe Brackets 等。此外还有一些基于 Web 的桌面应用也使用了 CEF，更多的应用你可以 Google 一下。

4.Crosswalk

{'fraction_non_alphanumeric': 0.09679512131828208, 'fraction_numerical': 0.009342156481121059, 'mean_word_length': 2.139714867617108, 'pattern_counts': {'":': 0, '<': 31, '<?xml version=': 0, '>': 33, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1547574', 'n_tokens_mistral': 2697, 'n_tokens_neox': 2609, 'n_words': 701}