EPWA ,  是  Easy PWA  的 意思,

PWA 取自于 Google 的 PWA,

EPWA   是一个用   C#  Cef  Html  js  css   开发 桌面程序 的 架构 和 示例 。

可以参考 《我发起了一个 ILBC 的 子项目 ILBC Studio》   https://www.cnblogs.com/KSongKing/p/10465609.html   ,

以及  《用 EPWA 写一个 图片播放器 PicturePlayer》    https://www.cnblogs.com/KSongKing/p/10779523.html   ,

ILBC Studio 就是用 EPWA 的 架构 写的 。

ILBC Studio 中 使用的 js 库 是 jWebForm ,  见 《我发起并创立了一个 Javascript 前端库 开源项目 jWebForm》 https://www.cnblogs.com/KSongKing/p/10326119.html  。

ILBC Studio 项目地址 :      https://github.com/kelin-xycs/ILBC

Bin 下载地址 :        http://ilbc.kgeking.kooboo.site/ILBCStudio_Debug.zip

EPWA  可以将  Html Js  Css  编译为 程序集资源,  通过  “localapp/Htmls/Main.html”   格式 的 Url 访问,  “localapp” 作为 host 表示 从 程序集资源 中 读取 Url 资源,

对 安全 有 比较严格 要求 的 场合, 可以给 程序集 加上 强名称, 这样 程序集(包含 资源)  就可以 加密 了 。

还可以 通过  “localfile\C\Project\Htmls\Main.html”   的 Url 格式 访问 本地文件,  这样可以直接 打开 Html 文件 测试调试, 可以不用编译, 很方便 。

之所以采用  “localfile”  的 方式  而不是 直接的 文件路径,  是因为 Chrome 默认不允许 本地文件 跨 frame 访问, 用 “localfile” 方式 可以避免这个问题 。

jWebForm 里 对于 多窗口(MDI) 模块化 开发 是 以 iframe 作为 模块,  不允许 跨 frame 访问 就 会有问题 。

“localapp” 和 “localfile”  的 实现原理 是 在 Cef 里 自定义 了 一个 RequestHandler 和 ResourceHandler,

ResourceHandler 里判断 Url 的 host 是否 是 “localapp” 或 “localfile” ,  如果是 则 从 程序集资源 或 本地文件 中 读取 。

RequestHandler 和 ResourceHandler  都在  CefGlue.WindowsForms 项目 的   RequestHandler.cs   文件 里 。

如果还想做出 “360风格” 窗口,  或者 对 窗口 的 标题栏 边框 自己定制,  那么还可以 结合 WinFormEx,

有关  WinFormEx ,  见  《WinFormEx》       https://www.cnblogs.com/KSongKing/p/9455273.html      。

记录 Cef 的 一些 Issue:

1    Cef 现在有个 Bug ,就是超链接的 target = "_blank" 的话,点击链接弹出窗口打开网页后,再关闭网页窗口, 然后整个程序就再也打不开各种窗口了,包括 Dev Tools, 点击“保存”菜单时弹出的 FileDialog, 对话框(MessageBox.Show())。 本来到 GitLab 上去提个 Issue,又注册不了账号,说是“There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.”, 当然如果是在 浏览器 而不是 Cef 里查看这个网页的话,就没有这个问题,但是上面提到为了避免 Chrome 默认不允许 本地文件 跨 frame 访问的问题, 有一种方法是把这个网页放到 EPWA(Cef)里查看,所以把这个问题记录下来。另外就是这个问题是一个 Issue ,先记录在这里,等之后再到 GitLab 上提, 这个问题不解决,影响 Cef 正常使用。

2    遗留进程 的 问题,或者说 进程不能完全退出的问题, 比如, 打开了 Dev Tools, 在不关闭 Dev Tools 的 情况 下, 直接关闭 主窗口, 会导致有 2 个 后台进程 遗留 而 不退出 。 另外, 如果有 MessageBox.Show() 弹出了对话框 的 话, 好像也会产生这种问题 。

我发起并创立了一个 EPWA 的 开源项目的更多相关文章

  1. 我发起并创立了一个 Javascript 前端库 开源项目 jWebForm

    在线演示地址: ( 在线演示 云平台 由 Kooboo 提供  https://www.kooboo.com/ ) 按钮:      http://iwebform.kgeking.kooboo.si ...

  2. 我发起了一个 用 javascript 写一个 Office 的 开源项目 JS Office

    用   js  写   Office,  说实在的,  把 现在已有的 各种 富文本编辑器 和 电子表格 js 库 收集起来 整合一下 就 差不多了 , 放到 前几天 那个 “  js 作为 一等公民 ...

  3. 我发起并创立了一个 C 语言编译器 开源项目 InnerC

    本文是 VMBC / D#  项目 的 系列文章, 有关 VMBC / D# ,  见 <我发起并创立了一个 VMBC 的 子项目 D#>(以下简称 <D#>)  https: ...

  4. 我发起并创立了一个 VMBC 的 子项目 D#

    大家好, 我发起并创立了一个 VMBC 的 子项目 D#  . 有关 VMBC ,  请参考 <我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC>     https ...

  5. 5 天 4000 star 的一个爆款开源项目

    今天早上起来浏览 GitHub 的时候,在周热门趋势排行榜上看到了这么一个开源项目,仅仅 5 天时间,爬到了周排行榜的第一名的位置.而在每天的排行榜上,今天一早也高高位居排行榜的第二位. 这个开源项目 ...

  6. 我发起并创立了一个 .Net 平台上的 Web 业务系统 基础库 开源项目 WebEasy

    我 强调一点, 程序员 应该对 程序 有 控制感 . 过多的 控制反转 使 程序员 丧失了 对 程序 的 控制感 . 过多的 依赖注入 束缚了 程序员 的 创造力 . 过度复杂的 架构设计 束缚了 程 ...

  7. 发现一个好的开源项目:lomoX(挑着看,每天看一点,看一年就ok了)——用Webkit开发桌面软件,炫

    http://www.oschina.net/p/lomox https://github.com/caidongyun/lomox 用Web技术做桌面客户端.虽然仍然免不了要分发客户端,但好处是,界 ...

  8. 利用git向github上远程提交一个自己的开源项目

    1.在电脑的系统变量中的path路径中配置git的环境变量: 找到git安装路径中bin的位置,如:X:\Git\bin 找到git安装路径中git-core的位置,如:X:\Git\libexec\ ...

  9. 我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager

    大家好,  我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager . ServerFulManager 的 目标 是 实现一个 支持 ServerFu ...

随机推荐

  1. for ,foreach ,map 循环的区别

    一.for循环 1.for - 循环代码块一定的次数 遍历数组最常用到的for循环,是最为熟知的一种方法 for (var i=0; i<5; i++) { x=x + "The nu ...

  2. 专业的“python爬虫工程师”需要学习哪些知识?

    学到哪种程度 暂且把目标定位初级爬虫工程师,简单列一下吧: (必要部分) 熟悉多线程编程.网络编程.HTTP协议相关 开发过完整爬虫项目(最好有全站爬虫经验,这个下面会说到) 反爬相关,cookie. ...

  3. 2018-2019-2 《网络对抗技术》Exp4 恶意代码分析 20165326

    恶意代码分析 实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systra ...

  4. L362 When to Bring up Salary During the Job Interview Process

    Money is an awkward topic of conversation for many professionals—even more so when you’re busy tryin ...

  5. n个骰子的点数之和

    题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 解题思路:动态规划 第一步,确定问题解的表达式.可将f(n, s) 表示n个骰子点数的和为s的排列 ...

  6. CentOS 6.5 简单编译安装Nginx

    一.准备工作 现在官网下载需要的nginx版本:http://nginx.org/en/download.html 从linux服务器上下载,或者本地电脑下载导入服务都行 这里我选择安装的是nginx ...

  7. 安装完成IIS后找不到IIS Admin Service

    系统版本: Windows Server 2008 R2 Enterprise 64-bit IIS版本:IIS 7.5 问题: 在系统运行里面输入"组件服务",依次点开组件服务- ...

  8. c++单链表冒泡排序(交换结点),链表增删改查,运算符重载

    #include <iostream> #include <stdlib.h> #include <time.h> #include <fstream> ...

  9. silverlight 基本信息学习随笔

    Silverlight还处于测试版本阶段 微软 silverlight 是一个跨浏览器.跨平台的插件.为网络带来下一代基于.NETFramework的媒体体验和丰富的交互式应用程序 他是一种新的web ...

  10. java2周来的一些心得和体会

    1.首先,在开发的一开始,可以将绝大多数rest可能提交过来字段先抽离出来,做成一个基础类. 然后再继承这个类,这样做的好处是业务就被分开了,谁也不会影响到谁. 2.在maven当中,需要修改自己的类 ...