V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
taowen
V2EX  ›  微信

在微信小程序中使用 javascript eval

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

    因为众所周知的原因,微信小程序禁用了 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   ·   我们的愿景   ·   实用小工具   ·   5881 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:28 · PVG 10:28 · LAX 19:28 · JFK 22:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.