• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yulanggong
V2EX  ›  程序员

关于小程序的两个猜测: 1. 性能体验和 H5 几乎持平, 2.不能做出流畅的游戏。

  •  3
     
  •   yulanggong ·
    yulanggong · Jan 11, 2017 · 13916 views
    This topic created in 3587 days ago, the information mentioned may be changed or developed.
    1. 之所以性能和 H5 持平是因为他本身就是 H5 + JSBridge , 而不是 React Native 或 Weex 的 JS + Native 的方式。
    2. 因为微信没能开发出足够流畅的游戏引擎,就假借各种公众号之口说苹果不让做游戏。(前期还有宣传苹果不让小程序做直播,如今疼讯家直播就上了小程序。)
    Supplement 1  ·  Jan 11, 2017

    引自官方说明

    三端的脚本执行环境聚以及用于渲染非原生组件的环境是各不相同的:

    • 在 iOS 上,小程序的 javascript 代码是运行在 JavaScriptCore 中,是由 WKWebView 来渲染的,环境有 iOS8、iOS9、iOS10
    • 在 Android 上,小程序的 javascript 代码是通过 X5 JSCore来解析,是由 X5 基于 Mobile Chrome 37 内核来渲染的
    • 在 开发工具上, 小程序的 javascript 代码是运行在 nwjs 中,是由 Chrome Webview 来渲染的
    74 replies  •  2021-01-14 17:24:05 +08:00
    Ariagle
    Ariagle
    Jan 11, 2017 via iPhone
    1
    游戏收入才是苹果商店大头。
    murmur
    murmur
    Jan 11, 2017
    2
    即便是 2017 ,你可以回想下你在手机上玩到的 h5 游戏最好的是哪个,对于我来说,当然是 flappy fog ,其余的无一例外 native
    murmur
    murmur
    Jan 11, 2017
    3
    更正一下,是众筹的小鸟
    em70
    em70
    Jan 11, 2017 via Android
    4
    小程序不是 HTML5
    yulanggong
    yulanggong
    OP
    Jan 11, 2017
    5
    @murmur 所以猜测不是苹果不让,是微信为了遮羞。
    2zH
    2zH
    Jan 11, 2017❤️2
    6
    小程序的性能在大范围动画上还不行,很卡
    murmur
    murmur
    Jan 11, 2017
    7
    @em70 那你用 react native 开发一个游戏咯,小程序不就是 reacT naTive 么
    arron
    arron
    Jan 11, 2017❤️1
    8
    @em70 我昨天在 iOS8 上看了一下,小程序是启动了一个 WKWebView 来运行的。能执行 alert ,可以确定小程序是运行在 webView 容器里的, 也就是用的 HTML 。
    loading
    loading
    Jan 11, 2017
    9
    忽略主题
    lynnX
    lynnX
    Jan 11, 2017
    10
    苹果和微信有协议 不允许上游戏
    sodatea
    sodatea
    Jan 11, 2017
    11
    @murmur 谁告诉你小程序是 React Native 的?想当然可不好。
    murmur
    murmur
    Jan 11, 2017
    12
    @sodatea 看我的拼写 为什么 T 是大写的呢
    murmur
    murmur
    Jan 11, 2017
    13
    @arron 那就有意思了,如果他的容器真是 WebView 那性能还不如 Weex 呢
    不过最终还是要用安卓或者 IOS 源生的调试工具看最后渲染出来的是组件还是 html dom 元素
    能执行 alert 不代表就是混合应用啊
    hasbug
    hasbug
    Jan 11, 2017
    14
    貌似有人提到动画的局限性,所以,我认为楼主说的在理
    leafleave
    leafleave
    Jan 11, 2017 via Android
    15
    即使能做出来游戏,费的流量也不会比直接下载少,不值。
    mooncakejs
    mooncakejs
    Jan 11, 2017
    16
    @arron
    @sodatea
    小程序比单纯的 HTML5 好的地方是可以“渐进增强”,即使现在是 webview 做的,完全可以升级到 native 。
    ivmm
    ivmm
    Jan 11, 2017
    17
    其实我觉得,不会是因为协议问题吧。
    ivmm
    ivmm
    Jan 11, 2017
    18
    @ivmm

    如果 iOS 平台没有微信、 QQ ,卧槽,那估计也是废了。

    应该不是协议的问题,是性能不足,动画一多就跪
    yulanggong
    yulanggong
    OP
    Jan 11, 2017
    19
    @mooncakejs 渐进增强并不容易,现在小程序 native 的部分包括 tabbar , toast , alert 等脱离页面内容的东西,页面内并不能渐进增强。要么彻底换掉,要么用 webview 。
    Bown
    Bown
    Jan 11, 2017
    20
    Android 上打开开发者模式的显示布局边界可以看出某些控件(地图视频 Tab )是原生的,而且小程序规范语法有审核,普通 HTML5 加载到微信的 WebView 少不了各种检查预处理什么的,性能应该会好点吧
    arron
    arron
    Jan 11, 2017
    21
    @murmur 意思是用 cycript 可以把那个 WebView 容器选出来执行 HTML 相关的 js 代码, alert 能跑,那么其他 dom 自然没问题,虽然没细究,但是可以肯定。因为如果用 cocoa UI 去渲染,那么只需要用 JavaScriptCore 就可以了,根本不需要 WKWebView 。小程序这一套用 WebView 来渲染比用原生去做要好处理得多,别的不说,就 canvas 那一套规则就不容易搞。至于性能怎么样,就看使用场景了。
    xjp
    xjp
    Jan 11, 2017 via iPhone
    22
    小程序是 native+html 结合的控件
    spark
    spark
    Jan 11, 2017
    23
    游戏可以做,有 Canvas 。
    体验嘛,见仁见智。
    Vanessa
    Vanessa
    Jan 11, 2017
    24
    所以小程序应该降温了么? 但我还是做了一个, https://hacpai.com/tag/book_share ,需要体验的可前往 https://hacpai.com/register?r=Vanessa 进行注册
    yulanggong
    yulanggong
    OP
    Jan 11, 2017
    25
    morethansean
    morethansean
    Jan 11, 2017
    26
    @murmur
    @arron

    问了内部的人,是 native 的。大概就是 native + html 结合吧,像楼主 append 里列的 非原生组件 的渲染。
    em70
    em70
    Jan 11, 2017 via Android
    27
    @yulanggong

    @murmur

    @arron

    跑在浏览器里的不一定就是 HTML,小程序的渲染是微信自己用 js 开发的一套渲染引擎,没有用 HTML 渲染,效率比 HTML 高得多
    phoneli
    phoneli
    Jan 11, 2017
    28
    @em70 对的。
    arron
    arron
    Jan 11, 2017
    29
    @morethansean
    跟安卓一样, native 那是顶部 navigation , alert , actionSheet 之类的。内容部分就是 HTML 。你那内部人估计也没搞清楚。
    @em70 你猜的?

    证据:

    [choose(WKWebView)[0] evaluateJavaScript:"document.getElementsByClassName('desc')[0].innerHTML='Im webView'" completionHandler: nil];



    arron
    arron
    Jan 11, 2017
    30
    @em70 你不要告诉我小程序在 webView 容器里面基于 HTML 开发出了一套不需要 HTML 渲染,效率比 HTML 高得多的 UI 引擎!
    em70
    em70
    Jan 11, 2017 via Android
    31
    @arron 只是用了 webview 里的 js 引擎,用纯 js 绘制一个视觉控件,不行吗?
    em70
    em70
    Jan 11, 2017 via Android
    32
    @arron
    就像页游,用 flash 渲染的,也没有用 HTML
    sujin190
    sujin190
    Jan 11, 2017
    33
    奇怪,早期的文档中确实写了是使用类似 reactnative 的方式渲染的,现在怎么没有了,不过真说起来这性能真的是不行,用 webview 渲染还真有可能。。
    arron
    arron
    Jan 11, 2017
    34
    @em70 楼主补充了。 https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/details.html?t=201715
    iOS WKWebView , Android Mobile Chrome 。在 WebView 里面你不论是写 HTML 还是用 js createElement 那是一样的。谈不上性能差。况且小程序就是写的 HTML ,那个 wx-view 跟 div 是一个效果。
    funCoder
    funCoder
    Jan 11, 2017
    35
    试试用 Chrome 去调试 WebView 看看; https://geminiwen.xyz/2017/01/10/mini-program/
    em70
    em70
    Jan 11, 2017 via Android
    36
    @arron 你对 js 理解太局限了, js 并不是非要依赖 HTML 的,和其他语言一样,也是具备图形绘制能力的,完全可以自己绘制一个自己的界面。
    jhdxr
    jhdxr
    Jan 11, 2017
    37
    @em70 js 的确并不依赖 html ,执行的时候也只需要 JavaScriptCore ( iOS 平台)即可,但小程序『是由 WKWebView 来渲染的』,那很明显是(部分)转成了 html ,最终由 webview 来渲染的。

    之所以我加了个部分,是因为有些组件(例如上面有人提到的地图)就是 native 的


    @sujin190 我也记得我以前看到过是全部以 native 渲染的,估计在实现上踩坑了,然后又得赶着上线,只能先这么用了
    em70
    em70
    Jan 11, 2017 via Android
    38
    @jhdxr WebKit 才是 HTML 渲染引擎, webview 只是一个集成多种引擎的容器。小程序如果是 HTML 的,应该可用 window 和 document 对象,但并不支持,所以也不能用 jQuery
    rogerchen
    rogerchen
    Jan 11, 2017
    39
    @jhdxr
    想要全 native 渲染基本就靠企鹅无限制的堆人力去做 binding ,而且 iOS 一放 beta 就开始全组加班的画面是不是太美了。。。
    不过大厂有的是钱,说不定就这么搞 2333333
    morethansean
    morethansean
    Jan 11, 2017 via Android
    40
    @arron 再次确认了一下,是 native
    d553296416
    d553296416
    Jan 11, 2017❤️2
    41
    楼上一群人连 jscore 和 x5 是什么都不知道。。。所以想当然的说是 html 。。因为他们只知道 html ,,他们觉得 webview==html , 无知是可怕的,可怕的是无知还要说出来
    arron
    arron
    Jan 11, 2017❤️1
    42
    @em70 你想多了,在 WKWebView 里面只有一个渲染视图引擎,就是 WebKit 。你举出第二个来?小程序不能用 window , document 是小程序屏蔽了,不让你用。我前面那两张图就是测试了,就是在微信的那个 webView 实例里面,用 document 去修改视图。你要是还是觉得不是 HTML ,你可以说一下小程序的实现原理。

    @morethansean 官方文档里写了, https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/details.html?t=201715 iOS 是由 WKWebView 来渲染的。

    @d553296416 你以为的 jscore 和 x5 是什么? X5 基于 Mobile Chrome , Mobile Chrome 是什么?浏览器啊,你现在告诉我浏览器跑的不是 HTML ?你来解释一下小程序的实现原理。
    greatghoul
    greatghoul
    Jan 11, 2017
    43
    小程序其它是用易语言做的。
    serve99
    serve99
    Jan 11, 2017
    44
    @d553296416 人外有人,山外有山,你说话的语气,真让人受不了
    zhchyu999
    zhchyu999
    Jan 11, 2017
    45
    不让用 window 或者 document 可能是因为用原生的方式不太稳定,先用 webview 用着,但是保持以后 reactnative 语法的兼容性.
    echohanyu
    echohanyu
    Jan 11, 2017
    46
    有直播类的小程序?我正在做这个产品规划。
    nashxk
    nashxk
    Jan 11, 2017
    47
    就流畅度, Android 上的小程序比 H5 好太多了。。。
    ic3z
    ic3z
    Jan 11, 2017 via Android
    48
    大 web 一统天下指日可待。
    jhdxr
    jhdxr
    Jan 11, 2017
    49
    @d553296416 好大的口气,没看见 LZ 的 append 吗?『是由 WKWebView 来渲染的』『是由 X5 基于 Mobile Chrome 37 内核来渲染』,我们讨论说是 html 是基于这一点来判断的。既然你那么厉害,那你来告诉我, webview 除了渲染 html ,还能渲染神马?别告诉我是 css 和 js 。装逼是要给出干货的,不然你就是傻逼了
    alexapollo
    alexapollo
    Jan 11, 2017
    50
    不管如何,小程序的体验确实比一般的 HTML5 应用好非常多
    HLT
    HLT
    Jan 11, 2017
    51
    就是 native 加 html
    sujin190
    sujin190
    Jan 11, 2017
    52
    @jhdxr 这个解释非常合理
    xuboying
    xuboying
    Jan 11, 2017 via Android
    53
    初代苹果不允许三方 app 。微信完成了这个轮回。
    xlvecle
    xlvecle
    Jan 11, 2017
    54
    @arron 好歹上了个 cycript 的运行时分析,支持方都是靠脑补
    garyalen
    garyalen
    Jan 12, 2017 via Android
    55
    感觉就是 super webview
    d553296416
    d553296416
    Jan 12, 2017
    56
    @jhdxr 还真的是 js 。。。
    d553296416
    d553296416
    Jan 12, 2017
    57
    本身就是下发 js 代码 通过 x5 或 jscore 解释器 最终调用的原生组件啊。。。
    jhdxr
    jhdxr
    Jan 12, 2017
    58
    @d553296416 你想说的是像 react native 那样吗?那的确和 html 没关系,人家也没用的 webview ,就只是 jscore 解释运行而已。但是你看清楚了小程序说的是『运行在 JavaScriptCore 中』『由 WKWebView 来渲染』,换句话说,最终调用的还是 webview ,那自然很合理的就能推测是翻译成了 html 。而且 29 楼 @arron 也给了例子,你要是调用的是(除了 webview 以外的)原生组件,哪来的 document 给你改?
    tenca
    tenca
    Jan 12, 2017
    59
    小程序的产品定位就不是为了做游戏
    leefly
    leefly
    Jan 12, 2017
    60
    @arron 这个是怎么看的 😳
    jiongxiaobu
    jiongxiaobu
    Jan 12, 2017 via iPhone
    61
    大概主要运算单独一个 js 线程了吧, ui 就不会被 block 了
    Mbin
    Mbin
    Jan 12, 2017
    62
    哪来那么多争论的,就现在使用体验来看,不管是 ios 还是 Android , H5 都比小程序差了一大截-_-
    arron
    arron
    Jan 12, 2017
    63
    ibufu
    ibufu
    Jan 12, 2017
    65
    小程序是一个产品,不是什么技术解决方案,它的目的是建立一个属于腾讯的庞大生态圈,技术什么的都是次要的。
    之所以小程序的开发语言高度抽象,就是为了将来可以无缝切换升级底层技术。
    yatessss
    yatessss
    Jan 12, 2017
    66
    不是微信实现了一套 jsbridge 嘛 难道我想错啦。。。。
    faywanghq
    faywanghq
    Jan 12, 2017
    67
    @arron 正解,我早上起来写了一篇博客——[纠正对微信小程序的一个认知]( http://faywong.github.io/2017/01/12/weixin_xiaochengxu_01/),观点就是目前的小程序主要就是 native 。
    faywanghq
    faywanghq
    Jan 12, 2017
    68
    @faywong8888 手抖,敲错了,是:[纠正对微信小程序的一个认知]( http://faywong.github.io/2017/01/12/weixin_xiaochengxu_01/)
    damngood
    damngood
    Jan 12, 2017❤️1
    69
    我的一些猜测:

    应该就是普通的 Web 技术来实现的, 比普通的 web app 体验要好的原因是小程序他有自己的一套框架, 如果框架既定的话,微信就比较容易来实现一些性能优化.
    而常规的 web app 体验的好坏和开发者的水平有直接的关系.
    我相信能力强的开发者做出来的 web app 体验未必会比小程序差多少.

    还有一个重要的原因在于 native 环境可以对 web 的一些关键步骤做增强

    比如我现在负责实现公司的 native-to-web bridge, 在启用 bridge 后体验确实会好不少.
    而且还有很多优化的余地, 比如把资源放在本地,然后采用某种策略来动态更新本地资源而不依靠 browser 来更新资源, 效果应该还会好不少. 这一步是我现在正在尝试的方向

    还有一句话想说: NO Magic !不必要过分迷信和臆想, 都是可以通过自己分析出来的嘛....
    zheqi
    zheqi
    Jan 12, 2017
    70
    产品考虑业务,总裁考虑战略,我们程序员才考虑性能。
    d553296416
    d553296416
    Jan 17, 2017
    71
    @jhdxr rn 就是用了 webkit 渲染的啊。。 wk 就是 webkit 里面的啊,但 rn 不是 html5 啊。。。。。大哥你是得有多菜。。。。
    xu33
    xu33
    Jan 22, 2017
    72
    @d553296416 看到这里可以确认你是无脑喷了
    CDuXZMAPgHp1q9ew
    CDuXZMAPgHp1q9ew
    Jan 2, 2018
    73
    挖坟
    towry
    towry
    Jan 14, 2021
    74
    再挖
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   847 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 23:40 · PVG 07:40 · LAX 15:40 · JFK 18:40
    ♥ Do have faith in what you're doing.