在微信小程序中使用 Javascript eval - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
taowen
V2EX    微信

在微信小程序中使用 Javascript eval

  •  
  •   taowen 2022-03-14 11:55:35 +08:00 2412 次点击
    这是一个创建于 1306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为众所周知的原因,微信小程序禁用了 Javascript eval

    https://github.com/taowen/define-function 把 quick.js 编译为 WebAssembly (尺寸小于 200kb ),从而动态解释执行代码

    在微信小程序中使用步骤如下 https://juejin.cn/post/7074510173661823012

    8 条回复    2022-03-14 15:44:38 +08:00
    3dwelcome
        1
    3dwelcome  
       2022-03-14 13:58:26 +08:00
    单纯不能操作 DOM 的 JS 完全没什么用啊。

    楼主可以学一下官方,把 quickjs 的 DOM 接口和小程序的 View 自定义组件对接一下,这样就可以动态执行 JS ,并生成动态 HTML 了。

    不能拼接 HTML 的 JS ,不是好 JS 。
    taowen
        2
    taowen  
    OP
       2022-03-14 14:14:31 +08:00
    @3dwelcome 现在的 taro 和 kbone 的用户,自己对接一下应该不难。包括 view 部分的话,就很难移植现有的代码了。保持库本身的精简,也方便用来做 plugin 的基础设施,例如像 figma 这样 https://www.figma.com/blog/an-update-on-plugin-security/
    3dwelcome
        3
    3dwelcome  
       2022-03-14 14:28:57 +08:00
    @taowen 我们用 JS 操作的都是业务代码,都是需要操作 DOM 属性的。

    纯 JS 的计算,小程序本身就支持,也不需要用额外插件。

    辛辛苦苦写出的库,总要让别人用起来吧。
    taowen
        4
    taowen  
    OP
       2022-03-14 14:39:44 +08:00
    taro 和 kbone 已经是很好的动态拼接 HTML 更新 View 的解决方案了。这两个都是 wxml 的动态化的方案。从原理上也没法做到更好,想要完整不缩水的 DOM 那平台不支持也没办法。
    3dwelcome
        5
    3dwelcome  
       2022-03-14 15:15:26 +08:00
    @taowen 你没理解我的意思。

    你既然有能力能从底层重构 Javascript ,自己控制运行期,那你自己就是一个完整的 runtime 平台。

    可以类似 nodejs ,注入嵌入一些 document 元素,比如 getelementbyid ,比如支持一下 jquery 语法。

    kbone 这种都是 VUE 组件和小程序组件之类的转换,没办法脱离 MVVM 写代码。你这个 WASM 的潜力,要比这几个框架大太多了。可以直接把 UI 和 Javascript 函数对接。
    taowen
        6
    taowen  
    OP
       2022-03-14 15:25:35 +08:00
    kbone 有相对完整的 DOM 模拟,支持 getElementById 这些。微信小程序的展示层只支持 wxml ,你有 wasm 也没有用。最终东西要往页面上渲染,就只能和 taro kbone 一样,难不成你要用 canvas api 直接 draw 么? wxml 动态化都长这个样子 https://github.com/taowen/vue-fusion/blob/main/packages/vue-fusion-weapp/pages/Fragment.wxml
    3dwelcome
        7
    3dwelcome  
       2022-03-14 15:40:06 +08:00


    我指的是这种,可能和你的 fusion 库概念类似吧。

    既然能支持 custom dom ,那就把 custom 元素能力最大化。小程序架构太像 VUE 了,以至于传统的 JS 字符串拼接代码,更新界面完全没发挥余地。
    taowen
        8
    taowen  
    OP
       2022-03-14 15:44:38 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6085 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:17 PVG 11:17 LAX 20:17 JFK 23:17
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86