Javascript交叉编译方案很多了,工业级品质的也不是没有,但前两年我从事html5 3d引擎开发时,做过一圈评估,没有可用的。

作为一个c#爱好者,我自然是很希望能最大限度的利用c#的生产力,之前经过评估,我们选择了typescript 作为开发工具,确实也产生了一些收效。

时过境迁,虽然很久不做h5方面的开发,但任然关注,偶然发现bridge.net的发展速度相当的不错,今日观之,社区已经相当成熟。就手痒,又评估了一把。

先上源码

https://github.com/lightszero/bridge.net.study

也直接有生成的页面

https://lightszero.github.io/bridge.net.study/webapp/webapp/index.html

先说结论

Bridge.net成熟度很高,我尝试了一些c#的语法,都可以正常工作。

也发现了一些小小的问题,懂一些js一对比很容易解决。

会带入一个bridge.js 1M多,压缩版800k

Bridge采取的方案是直接将c#代码编译为js,准确的说是IL代码。而且采用的方法比较暴力,对无法直接对应的一些c#常用功能,直接写了一套js底层类库来支撑。

这就是那1M的来历,好处是编译过程就会相对比较简单,越简单的机制越容易稳定。

对比typescript方案主要有3个优点

1. 有整数,在语法表达方面会更清晰

2. 有struct,这个我就不多言战术价值了

3. C#,这就仁者见仁了

主要有两个缺点

1. 多了1M的依赖库

2. 生成的代码多了一层包装,没有typescript生成的代码干净。

老有人拿untiy的webgl方案说事,我只说一条。

Unity的webgl方案是构筑在webassembly基础上的,微信小游戏不支持。

现在来说说bridge.net 怎么用

0. 首先你得是个Visual studio 用户,不是当我没说

1. 根本不用安装,因为他的原理就是一个c#dll 和 编译相关的dll,只需要dll和csproj的相关配置,这个工作nuget就可以完成。

你随便建立一个c#项目,然后nuget 安装 bridge.net 就行了

我是用一个asp.net项目做模板,然后nuget安装bridge.net,因为asp.net 项目 按F5 就可以直接启动页面呀,就这么简单。

2. 然后只要build项目的时候bridge.net就会自动给你生成js了,他会使用bridge.js来做一些配置选项

3. 关于功能

前面安装的briage.net 只是安装环境,首先要使用html5自己的接口,就是访问 window 呀这些,需要再nuget安装 bridge.html5.

我要开发个webgl接口来试试,就nuget安装bridge.webgl

4. 关于调试

浏览器调试,略。

因为html 有map文件标准,所以你浏览器调试也是可以看到c#的,而且可以下断电,观测值

你要确认的事情就是bridge.json打开了map的输出

不过bridge.net有一点不好,他提供的功能,对命名做了修改

就比如这个GetContext,在js里是getContext

因为这个修改,对调试造成了一些小小的麻烦,浏览器调试工具是针对js的,还要用原来的名字才能找到。因为浏览器的map文件只有js和源文件行数的映射,没有变量名函数名这些。

但问题不大,我们知道它主要就改了大小写而已,调试的时候多敲一下的问题

那么可不可以直接在vs里面下断点调试呢,也是可以的。因为bridge输出的map文件用的相对路径,只要把bridge.json的输出路径改一下,就行

然后打开vs的脚本调试功能

注意vs2017才有google chrome的调试功能(印象中),vs2015只能调试ie去

然后就可以直接在vs里面断点了,需注意因为他做了一个改名的动作,调试的时候对监视器产生了影响

用c# 开发html5的尝试,试用bridge.net的更多相关文章

  1. JS开发HTML5游戏《神奇的六边形》(三)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  2. JAVASCRIPT开发HTML5游戏--斗地主(网络对战PART4)

    继之前用游戏引擎(青瓷引擎)做了斗地主单机版游戏之后,这里分享下使用socket.io来实现网络对战,代码可已放到github上,在此谈谈自己整个的开发思路吧. 客户端代码 服务端代码 (点击图片进入 ...

  3. javascript开发HTML5游戏--斗地主(单机模式part3)

    最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...

  4. javascript开发HTML5游戏--斗地主(单机模式part2)

    最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...

  5. JS开发HTML5游戏《神奇的六边形》(一)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  6. JS开发HTML5游戏《神奇的六边形》(二)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  7. JS开发HTML5游戏《神奇的六边形》(四)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  8. 使用Visual Studio 2012 开发 Html5 应用

    Visual Studio 一直以来是开发微软旗下应用的利器,只要是开发微软相关的应用无论是Windows程序,WPF,Asp.Net,WinRT Surface,WindowsPhone 等微软旗下 ...

  9. 使用 video.js 开发 HTML5 视频页面

    时间 2015-05-13 17:11:58 The GIS Guy 原文  http://thegisguy.tk/html5-video-using-video-js/ 主题 Video.js H ...

随机推荐

  1. Window下Eclipse+Tomcat远程调试

    需求:       项目在开发环境跑得好好的,但是当发布到服务器上时,却出现了一些意外的问题.服务器上不可能给你装IDE调试工具啊,又没有很好的日志帮助下,这时候就用到了JVM的Java Platfo ...

  2. vue-cli3.0 gui(一)

    vue-cli3.0 gui 安装: npm i core-js -g:用于JavaScript的模块化标准库. npm i -g @vue/cli:vue的脚手架工具 运行: vue ui:运行vu ...

  3. 分布式监控系统开发【day38】:报警自动升级代码解析及测试(八)

    一.报警自动升级代码解析 发送邮件代码 def action_email(self,action_obj,action_operation_obj,host_id,trigger_data): ''' ...

  4. kubernetes云平台管理实战: 自动加载到负载均衡(七)

    一.如何实现外界能访问 外界访问不了 1.启动svc [root@k8s-master ~]# cat myweb-svc.yaml apiVersion: v1 kind: Service meta ...

  5. MapReduce 概述

    定义 Hadoop MapReduce 是一个分布式运算程序的编程框架,用于轻松编写分布式应用程序,以可靠,容错的方式在大型集群(数千个节点)上并行处理大量数据(TB级别),是用户开发 “基于 Had ...

  6. 查看weblogic版本号

    通过WebLogic配置文件config.xml,示例如下: # cat config.xml|grep version

  7. 第十三节:Lambda、linq、SQL的相爱相杀(2)

    一. Linq开篇 1.Where用法 linq中where的用法与SQL中where的用法基本一致. #region 01-where用法 { //1. where用法 //1.1 查询账号为adm ...

  8. [物理学与PDEs]第2章习题2 质量力有势时的能量方程

    试证明: 如果质量力有势, 即存在 $\phi$ 使 ${\bf F}=-\n \phi$, 那么理想流体的能量守恒方程的微分形式可写为 $$\bex \cfrac{\rd}{\rd t}\sex{e ...

  9. linux内存 free命令 buffer cache作用

    free命令用于查看linux内存使用情况 #free shared:用于进程之间相互共享数据. Used:已使用内存. total:内存总量. free:未使用的内存. available:开启一个 ...

  10. 【转】史上最详细的Composer安装tp5教程

    http://www.thinkphp.cn/topic/52362.html Composer安装tp5教程1.下载composer先介绍几个网站Composer官网https://getcompo ...