we-script

微信小程序加载远程 JavaScript 脚本
授权协议 MIT
开发语言 JavaScript TypeScript
所属分类 手机/移动开发、 微信小程序
软件类型 开源软件
地区 国产
投 递 者 乌翰学
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

让微信小程序支持加载远程 JavaScript 脚本并执行组件,支持 ES5 语法。

使用

小程序如何使用 npm 包,官方文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html

npm install --save we-script

step1 安装完成后,点击开发者工具中的菜单栏:工具 --> 构建 npm

step2 安装完成后,点击开发者工具中的菜单栏:工具 --> 项目详情 --> 本地设置 --> [勾选] 使用 npm 模块

在需要用的页面或组件的json文件添加声明,示例:

index.json

{
  "usingComponents": {
    "we-script": "we-script"
  }
}

index.wxml

<we-script src="url">
  <view>hello we-script<view>
</we-script>

:多个we-script会并行加载及无序执行,无法保证执行顺序。如:

// 并行加载及无序执行
<we-script src="url1" />
<we-script src="url2" />
<we-script src="url3" />

如需要确保执行顺序,应该使用数组,例如:

数组方式

<we-script src="{{[url1,url2,url3]}}">
  <view>hello we-script<view>
</we-script>

we-script也支持嵌套,如:

<we-script  src="url1">
  <we-script src="url2">
    <view>hello we-script<view>
  </we-script>
</we-script>

注意: 在嵌套的情况下we-script加载和执行也是并行且无序的,因为小程序生命周期触发机制(BUG?)导致,如果想在嵌套模式下保证顺序,需要自己手动控制,示例:

<we-script bind:onLoad="loadScript" src="url1">
  <we-script wx:if="url1_load_success" src="url2">
    <view>hello we-script<view>
  </we-script>
</we-script>

重要: 远程加载执行的代码所生成的函数,变量等数据存储在we-script默认的上下文中,可通过onLoad事件获取默认上下文,或通过onInit事件自定义上下文

示例:

we-script 属性

  • src

    类型:string | string[]

    要加载的远程脚本

  • text

    类型:string | string[]

    需要执行的 JavaScript 脚本字符串,text 优先级高于 src (互斥)

  • timeout

    类型:number
    默认值:60000 毫秒

    设置每个远程脚本加载超时时间

  • cache

    类型:boolean

    默认值:true

    是否启用加载缓存,缓存策略是以当前请求地址作为key,缓存周期为当前用户在使用期间的生命周期。

  • once

    类型:boolean

    默认值:true

    相同上下文及相同地址的脚本只执行一次。

we-script 事件

  • onInit

    类型:(e) => void

    interface OnInitDetail {
    	getContext: () => {};
    	setContext: (context: {}) => void;
    }
    

    初始事件,监听该事件可获取当前执行上下文或自定义执行上下文。

    示例:

    // index.js
    {
      onInit(e){
        // 自定义执行上下文
        e.detail.setContext({
          value: 100
        })
      }
    }
    // index.wxml
    <we-script src="url" bind:onInit="onInit" />
    
  • onLoad

    类型:(e) => void

    interface onLoadDetail {
    	context: {};
    }
    

    加载并执行成功后触发

  • onError

    类型:(e) => void

    interface onErrorDetail {
    	error: any;
    }
    

    加载失败或执行错误后触发

其他

  • 该组件使用eval5来解析JavaScript语法,支持 ES5

  • 上生产环境前别忘记给需要加载的地址配置合法域名

  • we-script 内置类型及方法:

NaN;
Infinity;
undefined;
null;
Object;
Array;
String;
Boolean;
Number;
Date;
RegExp;
Error;
URIError;
TypeError;
RangeError;
SyntaxError;
ReferenceError;
Math;
parseInt;
parseFloat;
isNaN;
isFinite;
decodeURI;
decodeURIComponent;
encodeURI;
encodeURIComponent;
escape;
unescape;
eval;
Function;
console;
setTimeout;
clearTimeout;
setInterval;
clearInterval;
wx;

内置类型和当前运行 JavaScript 环境相关,如环境本身不支持则不支持!

  • we-script 让微信小程序支持加载远程 JavaScript 脚本并执行组件,支持 ES5 语法 Github地址:https://github.com/bplok20010/we-script 使用 小程序如何使用 npm 包,官方文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html npm instal

  • we-script 背景:由于微信小程序限制,不支持动态执JavaScript,在小程序里无法使用类似 eva Function等功能。 让微信小程序支持加载远程 JavaScript 脚本,支持 ES5 语法 示例: 使用 npm install --save we-script step1 安装完成后,点击开发者工具中的菜单栏:工具 --> 构建 npm step2 安装完成后,点击开发者工具

  • 首先得讲明udhcp客户端设置IP的机制。 在udhcp中,客户端通过和主机的多次报文交互协商而获得可用的IP地址。在获得IP地址之后,客户端使用execle函数调用shell脚本完成客户端ip,netmak,dns,gateway等等参数的设定。而shell脚本的调用在script.h和script.c中实现。 以下为script.c源码中的主要实现函数: /* get a rough idea

  • 写在前面:     从前面一篇博文我们知道recovery下安装更新的主要内容就是去执行更新脚本程序update-binary,而update-binary的主要任务就是去解析执行updater-script,那update-binary是如何去解释执行updater-script的呢。我们下面一起来学习一下。   源码位于android目录下/bootable/recovery/updater/

  • -m from python -h, -m mod : run library module as a script (terminates option list). Python modules are just script files that are located in a place where Python can find them. As with all scripts, y

  • [AppleScript]  纯文本查看  复制代码 ? 1 2 3 4 5 6 id : wxml中对应canvas的 id width : 裁剪图片区域宽度 height : 裁剪图片区域高度 minScale : 最小缩放倍数 maxScale : 最大缩放倍数 src : 裁剪图片临时路径 项目地址:https://github.com/dlhandsome/we-cropper

  •        Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程 一、update_binary的执行过程分析        上一篇幅中的子进程所执行的程序binary实际上就是update.zip包中的update-binary。我们在上文中也说过,Recovery服务在做这一部分工作的时候是先将包中updat

  • 最新写app用uniapp坑死了,index.html中引入的script标签没有效果 后面试了试在App.vue生命周期内动态引入 onLaunch: function() { /* 动态引入script */ const script = document.createElement('script') script.src = 'src路径' document.head.append

 相关资料
  • @megalo/target 的 platform 设置成 wechat,mini-css-extract-plugin 提取文件后缀改成微信小程序的 wxss。 const createMegaloTarget = require( '@megalo/target' ) const compiler = require( '@megalo/template-compiler' ) const M

  • 1、第三方应用授权对接 ​ 之前对接小程序只提供了开发者授权的方式,这种方式的弊端是,如果客户同时对接了其他的系统,会产生access token冲突,导致消息发不过来。因此新增第三方平台授权的方式,客户可以在智齿后台直接扫二维码授权对接。流程如下: 1.1、选择授权方式,进入配置页 点击绑定小程序时选择授权方式,默认推荐第三方平台授权: 点击确定进入配置页: 1.2、扫描授权二维码 点击“微信公

  • 微信小程序配置 1.微信小程序使用流程 具体配置参考相关教程 uni-app编译版参考教程 uni-app编译版 uni-app开源版参考教程 uni-app开源版 2.微信小程序下载 打开后台-小程序-微信小程序-小程序源码下载,注:针对已购买小程序的客户,可选"编译版""开源版""更新包" 3.微信小程序装修 1.首页导航: (导航能够有效帮助粉丝跳转到各个关键页面,是整个店铺的“指南针”。)

  • 微信小程序 微信小程序扫码授权以后,用户在小程序点击客服按钮发送的消息会转发给机器人,机器人会自动回复消息给小程序用户,同一个微信小程序同时只能绑定一个机器人,如果绑定了新的机器人,之前绑定的机器人会解除绑定。 注:微信小程序渠道接入后,用户仅可以发送文字进行问答。 只需三步接入微信小程序,自动回答小程序上的用户问题: 1. 创建机器人 注册登录https://bot.4paradigm.com后

  • workerman可以作为微信小程序wss后端,参考 创建wss服务一节。

  • 标准版小程序 SDK WePY 小程序框架 SDK mpVue 小程序框架 SDK mpVue 插件版小程序框架 SDK