From 10223783afc060dda30dd258731147a317342750 Mon Sep 17 00:00:00 2001 From: Amorcy Date: Fri, 13 Oct 2023 16:25:09 +0800 Subject: [PATCH 01/35] =?UTF-8?q?chore:=20=E9=87=8D=E6=9E=84mpx-video?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/runtime/components/web/mpx-video.vue | 522 +++++++++--------- 1 file changed, 265 insertions(+), 257 deletions(-) diff --git a/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue b/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue index c9bf40d34b..1c6fc8fac5 100755 --- a/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue +++ b/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue @@ -1,259 +1,267 @@ - - - - + ref="_mpx_video_ref" + class="video-js" + > + + + + + \ No newline at end of file From 641eec2f1a2da30d1ec392c758ac63935507ec05 Mon Sep 17 00:00:00 2001 From: Amorcy Date: Wed, 18 Oct 2023 19:43:18 +0800 Subject: [PATCH 02/35] =?UTF-8?q?chore:=20mpx-video=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/runtime/components/web/mpx-video.vue | 505 +++++++++--------- packages/webpack-plugin/package.json | 3 +- 2 files changed, 266 insertions(+), 242 deletions(-) diff --git a/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue b/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue index 1c6fc8fac5..78493a7df9 100755 --- a/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue +++ b/packages/webpack-plugin/lib/runtime/components/web/mpx-video.vue @@ -1,267 +1,290 @@ - + - \ No newline at end of file diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index c913a9bcea..063b5768d4 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -54,7 +54,8 @@ "postcss-modules-values": "^4.0.0", "postcss-selector-parser": "^6.0.8", "postcss-value-parser": "^4.0.2", - "source-list-map": "^2.0.0" + "source-list-map": "^2.0.0", + "video.js": "^8.6.0" }, "peerDependencies": { "webpack": "^5.48.0" From e5c62693d0dc5547921a6e9c189064bc1ff33556 Mon Sep 17 00:00:00 2001 From: xiaolei Date: Thu, 19 Oct 2023 11:28:40 +0800 Subject: [PATCH 03/35] [docs]update docs --- docs-vuepress/guide/advance/i18n.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-vuepress/guide/advance/i18n.md b/docs-vuepress/guide/advance/i18n.md index e240a4a99d..e2e27cf20d 100644 --- a/docs-vuepress/guide/advance/i18n.md +++ b/docs-vuepress/guide/advance/i18n.md @@ -313,7 +313,7 @@ import mpx, { createComponent } from '@mpxjs/core' createComponent({ ready () { // 修改全局 locale - mpx.i18n.global.locale = 'en-US' + mpx.i18n.global.locale.value = 'en-US' } }) ``` From 11c23581775df72999188d80b812979771a307be Mon Sep 17 00:00:00 2001 From: wangxiaokou Date: Fri, 20 Oct 2023 12:06:09 +0800 Subject: [PATCH 04/35] =?UTF-8?q?=E8=A1=A5=E5=85=85readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/webview-bridge/README.md | 82 ++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/packages/webview-bridge/README.md b/packages/webview-bridge/README.md index 325de5153e..ad8a68ddbb 100644 --- a/packages/webview-bridge/README.md +++ b/packages/webview-bridge/README.md @@ -1,3 +1,83 @@ # @mpxjs/webview-bridge -为跨小程序平台提供通用的webview-bridge +> 为跨小程序平台提供通用的webview-bridge + +## Usage + +抹平了各端JSSDK方法调用逻辑,统一挂载在webviewBridge对象上提供调用 + +```js +import webviewBridge from '@mpxjs/webview-bridge' +const { navigateBack, postMessage } = webviewBridge +postMessage({ + data: 'test', + success (res) { + console.log('postmessage成功回调, 结果:', res) + } +}) +navigateBack() +``` + +### 各端支持情况说明 +- **微信小程序:** + + 提供可调用方法参考微信web-view组件 JSSDK提供能力 + + [jssdk接口1](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) 提供的方法直接调用即可(参考Usage示例) + + [jssdk接口2](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) 提供的方法需要传入config配置后再调用,webview-bridge提供了对应的config方法,该方法只在微信小程序环境下生效,使用示例如下 + ```js + import webviewBridge from '@mpxjs/webview-bridge' + // 具体传入配置参考微信说明 + webviewBridge.config({ + debug: true, + appId: '', + timestamp: '', + nonceStr: '', + signature: '', + jsApiList: [] + }) + // 在微信小程序下调用wx.ready方法中调用接口2能力 + wx.ready(function () { + webviewBridge.updateAppMessageShareData({ + title: '', + desc: '', + link: '', + imgUrl: '', + success: function () { + } + }) + }) + ``` +- **支付宝、百度、QQ、抖音小程序:** + + 支持各小程序web-view组件 JSSDK提供的方法,直接调用webviewBridge上挂载的对应方法即可(参考Usage示例) + + ::: warning + 各小程序接口1以外的方法提供的不尽相同,在支持多小程序运行的h5调用中,建议调用非通用的方法时,增加判空的容错处理 + ::: + + - **webapp:** + + 微信[jssdk接口1](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) 提供的方法可以直接调用webviewBridge上挂载的对应方法(参考Usage示例) + + 微信[jssdk接口2](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) 提供的方法目前只支持getLocation方法的调用 + + - **getLocation方法使用介绍:** + + 小程序转webapp的项目本身没有getLocation的能力,需要在webapp属主中增加getLocaiton的方法挂载,挂载示例如下: + + ```js + // webapp app.web.js + ... + mpx.config.webviewConfig = { + // 必须在webapp进行挂载否则h5中调用不到getLocation的返回 + apiImplementations: { + getLocation () { + // 提供一个异步的方法 + } + } + } + ... + ``` + From 81f8f475fd0b97affb975a0cd66a68bbc10db564 Mon Sep 17 00:00:00 2001 From: wangxiaokou Date: Fri, 20 Oct 2023 12:51:53 +0800 Subject: [PATCH 05/35] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=87=E6=A1=88?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/webview-bridge/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview-bridge/README.md b/packages/webview-bridge/README.md index ad8a68ddbb..28d65c5b65 100644 --- a/packages/webview-bridge/README.md +++ b/packages/webview-bridge/README.md @@ -65,7 +65,7 @@ navigateBack() - **getLocation方法使用介绍:** - 小程序转webapp的项目本身没有getLocation的能力,需要在webapp属主中增加getLocaiton的方法挂载,挂载示例如下: + 小程序转webapp的项目本身没有getLocation的能力,需要在webapp属主中增加getLocation的方法挂载,挂载示例如下: ```js // webapp app.web.js From 5585009a6d898a995147b6b02011069e78434337 Mon Sep 17 00:00:00 2001 From: xuegan Date: Fri, 20 Oct 2023 12:59:12 +0800 Subject: [PATCH 06/35] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=BE=93?= =?UTF-8?q?=E5=87=BAali/web=20root-view=20srcMode=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs-vuepress/api/compile.md | 76 +++++++++---------- .../lib/template-compiler/compiler.js | 2 +- 2 files changed, 37 insertions(+), 41 deletions(-) diff --git a/docs-vuepress/api/compile.md b/docs-vuepress/api/compile.md index 82a6ccc22a..2ef97433a5 100644 --- a/docs-vuepress/api/compile.md +++ b/docs-vuepress/api/compile.md @@ -1565,50 +1565,13 @@ module.exports = defineConfig({ }) ``` -## MpxWebpackPlugin static methods - -`MpxWebpackPlugin` 通过静态方法暴露了以下五个内置 loader,详情如下: - -### MpxWebpackPlugin.loader - -`MpxWebpackPlugin` 所提供的最主要 loader,用于处理 `.mpx` 文件,根据不同的[目标平台](#mode)将 `.mpx` 文件输出为不同的结果。 - -> 在微信环境下 `todo.mpx` 被loader处理后的文件为:`todo.wxml`、`todo.wxss`、`todo.js`、`todo.json` - -```js -module.exports = { - module: { - rules: [ - { - test: /\.mpx$/, - use: MpxWebpackPlugin.loader() - } - ] - } -}; -``` - -::: tip -在 `@mpxjs/cli 3.x`版本已经内置了对于 `pug` 的支持,只需要安装 `pug` 依赖相关即可: - -```javascript -npm install -D pug pug-plain-loader -``` -::: - -##### Options.excludedPreLoaders `{RegExp}` - -在构建过程中忽略特定 `pre-loader` 对文件的处理,仅支持正则表达式,默认值为 `/eslint-loader/`。 - ### proxyComponentEventsRules - **类型**:`Array | Object` - `option.include` 同webpack的include规则 - `option.exclude` 同webpack的exclude规则 - `option.events` 需要在支付宝环境代理的事件,数组形式的支付宝事件名,例如['onTap', 'onTouchMove'] - -- **详细**: - + 在微信小程序中,自定义组件本身的那个节点是一个“普通”的节点,使用时可以在这个节点上设置 class style、事件、 flex 布局等,就如同普通的 view 组件节点一样。 在支付宝平台下,自定义组件节点默认是虚拟节点,会展示自定义组件内部的第一层节点,自定义组件节点本身设置的 class style 等不会生效。 @@ -1619,8 +1582,6 @@ style、class、绑定事件等 copy 至包裹节点,对于事件来说,由 跨端输出Web时,为了和微信小程序保持一致,在非virtualHost的自定义组件节点上,默认也会插入一个包裹节点,同理对于事件的代理也需要用户进行配置告诉框架来对哪些自定义组件的哪些事件进行代理。 -- **示例**: - 当我们在小程序开发时存在以下代码时 ```html @@ -1651,6 +1612,41 @@ new MpxWebpackPlugin({ 请注意,在跨端输出 Web 时,只支持配置 tap 、longtap、longpress 这三个事件代理,且最好不要同时配置了两个事件,不然有可能会导致同一个事件触发两次。 +## MpxWebpackPlugin static methods + +`MpxWebpackPlugin` 通过静态方法暴露了以下五个内置 loader,详情如下: + +### MpxWebpackPlugin.loader + +`MpxWebpackPlugin` 所提供的最主要 loader,用于处理 `.mpx` 文件,根据不同的[目标平台](#mode)将 `.mpx` 文件输出为不同的结果。 + +> 在微信环境下 `todo.mpx` 被loader处理后的文件为:`todo.wxml`、`todo.wxss`、`todo.js`、`todo.json` + +```js +module.exports = { + module: { + rules: [ + { + test: /\.mpx$/, + use: MpxWebpackPlugin.loader() + } + ] + } +}; +``` + +::: tip +在 `@mpxjs/cli 3.x`版本已经内置了对于 `pug` 的支持,只需要安装 `pug` 依赖相关即可: + +```javascript +npm install -D pug pug-plain-loader +``` +::: + +##### Options.excludedPreLoaders `{RegExp}` + +在构建过程中忽略特定 `pre-loader` 对文件的处理,仅支持正则表达式,默认值为 `/eslint-loader/`。 + ### MpxWebpackPlugin.pluginLoader :::warning diff --git a/packages/webpack-plugin/lib/template-compiler/compiler.js b/packages/webpack-plugin/lib/template-compiler/compiler.js index ba2462cfe3..c539615824 100644 --- a/packages/webpack-plugin/lib/template-compiler/compiler.js +++ b/packages/webpack-plugin/lib/template-compiler/compiler.js @@ -1795,7 +1795,7 @@ function processRootViewStyleClassHack (el, options, root) { // 有virtualHost情况wx组件注入virtualHost。无virtualHost阿里组件注入root-view。其他跳过。 function getVirtualHostRoot (options, meta) { - if (options.isComponent) { + if (srcMode === 'wx' && options.isComponent) { // 处理组件时 if (mode === 'wx' && options.hasVirtualHost) { // wx组件注入virtualHost配置 From 5643a44f5f1e47403b5ae0d066dfbae9a03892f1 Mon Sep 17 00:00:00 2001 From: hiyuki <674883329@qq.com> Date: Fri, 20 Oct 2023 14:29:28 +0800 Subject: [PATCH 07/35] fix getCurrentInstance in web --- packages/core/src/platform/export/index.web.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/core/src/platform/export/index.web.js b/packages/core/src/platform/export/index.web.js index 048f06d82d..efb503d500 100644 --- a/packages/core/src/platform/export/index.web.js +++ b/packages/core/src/platform/export/index.web.js @@ -1,6 +1,7 @@ import { effectScope as vueEffectScope, - getCurrentScope as getCurrentVueScope, + getCurrentScope as vueGetCurrentScope, + getCurrentInstance as vueGetCurrentInstance, onScopeDispose } from 'vue' @@ -27,9 +28,7 @@ export { shallowRef, triggerRef, // computed - computed, - // instance - getCurrentInstance + computed } from 'vue' const noop = () => { @@ -42,7 +41,13 @@ const fixEffectScope = (scope) => { } const effectScope = (detached) => fixEffectScope(vueEffectScope(detached)) -const getCurrentScope = () => fixEffectScope(getCurrentVueScope()) +const getCurrentScope = () => fixEffectScope(vueGetCurrentScope()) +const getCurrentInstance = () => vueGetCurrentInstance()?.proxy + +export { + // instance + getCurrentInstance +} export { // effectScope From 70ae471d721b11710d309b9efeaac96e4eccb51a Mon Sep 17 00:00:00 2001 From: xuegan Date: Fri, 20 Oct 2023 15:13:56 +0800 Subject: [PATCH 08/35] =?UTF-8?q?fix:=20=E5=88=A0=E9=99=A4=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/webpack-plugin/lib/template-compiler/compiler.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/webpack-plugin/lib/template-compiler/compiler.js b/packages/webpack-plugin/lib/template-compiler/compiler.js index c539615824..ae00c3bda3 100644 --- a/packages/webpack-plugin/lib/template-compiler/compiler.js +++ b/packages/webpack-plugin/lib/template-compiler/compiler.js @@ -1810,7 +1810,6 @@ function getVirtualHostRoot (options, meta) { value: `${MPX_ROOT_VIEW} host-${options.moduleId}` } ]) - // 添加时间处理 processElement(rootView, rootView, options, meta) return rootView } From 03a8dad3199ea2969f46ccaeef327baf3fedc782 Mon Sep 17 00:00:00 2001 From: hiyuki <674883329@qq.com> Date: Fri, 20 Oct 2023 17:03:06 +0800 Subject: [PATCH 09/35] fix getCurrentInstance again --- packages/core/src/core/proxy.js | 4 +++- packages/core/src/platform/export/index.web.js | 13 ++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/core/src/core/proxy.js b/packages/core/src/core/proxy.js index 81754b2c03..27129d02ba 100644 --- a/packages/core/src/core/proxy.js +++ b/packages/core/src/core/proxy.js @@ -607,7 +607,9 @@ export default class MpxProxy { export let currentInstance = null -export const getCurrentInstance = () => currentInstance?.target +export const getCurrentInstance = () => { + return currentInstance && { proxy: currentInstance?.target } +} export const setCurrentInstance = (instance) => { currentInstance = instance diff --git a/packages/core/src/platform/export/index.web.js b/packages/core/src/platform/export/index.web.js index efb503d500..b51ef5672d 100644 --- a/packages/core/src/platform/export/index.web.js +++ b/packages/core/src/platform/export/index.web.js @@ -1,7 +1,6 @@ import { effectScope as vueEffectScope, - getCurrentScope as vueGetCurrentScope, - getCurrentInstance as vueGetCurrentInstance, + getCurrentScope as vueGetCurrentScope onScopeDispose } from 'vue' @@ -28,7 +27,9 @@ export { shallowRef, triggerRef, // computed - computed + computed, + // instance + getCurrentInstance } from 'vue' const noop = () => { @@ -42,12 +43,6 @@ const fixEffectScope = (scope) => { const effectScope = (detached) => fixEffectScope(vueEffectScope(detached)) const getCurrentScope = () => fixEffectScope(vueGetCurrentScope()) -const getCurrentInstance = () => vueGetCurrentInstance()?.proxy - -export { - // instance - getCurrentInstance -} export { // effectScope From e39ad9b35cdb336f271f424dbfae9cf7688c8d0d Mon Sep 17 00:00:00 2001 From: hiyuki <674883329@qq.com> Date: Fri, 20 Oct 2023 17:15:55 +0800 Subject: [PATCH 10/35] v2.8.54 --- lerna.json | 2 +- packages/core/package.json | 2 +- packages/webpack-plugin/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lerna.json b/lerna.json index e02345c260..4eb1f1c1d6 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "packages": [ "packages/*" ], - "version": "2.8.53" + "version": "2.8.54" } diff --git a/packages/core/package.json b/packages/core/package.json index ef26ebdb2a..967ee8f6c2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@mpxjs/core", - "version": "2.8.53", + "version": "2.8.54", "description": "mpx runtime core", "keywords": [ "miniprogram", diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 4ab4ce4c54..fa7f6231b1 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@mpxjs/webpack-plugin", - "version": "2.8.53", + "version": "2.8.54", "description": "mpx compile core", "keywords": [ "mpx" From b0a60aaaccf87545b52658eff4db26395c1a205c Mon Sep 17 00:00:00 2001 From: hiyuki <674883329@qq.com> Date: Fri, 20 Oct 2023 17:25:25 +0800 Subject: [PATCH 11/35] fix lint --- packages/core/src/platform/export/index.web.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/platform/export/index.web.js b/packages/core/src/platform/export/index.web.js index b51ef5672d..e0c3c4cd82 100644 --- a/packages/core/src/platform/export/index.web.js +++ b/packages/core/src/platform/export/index.web.js @@ -1,6 +1,6 @@ import { effectScope as vueEffectScope, - getCurrentScope as vueGetCurrentScope + getCurrentScope as vueGetCurrentScope, onScopeDispose } from 'vue' From 8418ed27ec3cfa6307d8e0930a169cd7d09a1014 Mon Sep 17 00:00:00 2001 From: hiyuki <674883329@qq.com> Date: Fri, 20 Oct 2023 17:25:50 +0800 Subject: [PATCH 12/35] v2.8.55 --- lerna.json | 2 +- packages/core/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lerna.json b/lerna.json index 4eb1f1c1d6..2ae753791c 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "packages": [ "packages/*" ], - "version": "2.8.54" + "version": "2.8.55" } diff --git a/packages/core/package.json b/packages/core/package.json index 967ee8f6c2..dfb8c0c3a9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@mpxjs/core", - "version": "2.8.54", + "version": "2.8.55", "description": "mpx runtime core", "keywords": [ "miniprogram", From 0d8fcb449823122ee6a6222e65754059c20987d7 Mon Sep 17 00:00:00 2001 From: wangxiaokou Date: Fri, 20 Oct 2023 19:31:02 +0800 Subject: [PATCH 13/35] =?UTF-8?q?fix=20web-view=E7=BB=84=E4=BB=B6=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BB=A5=E5=8F=8Awebviewbridge=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/@types/index.d.ts | 5 +- .../runtime/components/web/mpx-web-view.vue | 56 +++++++++++-------- packages/webview-bridge/README.md | 20 +++---- packages/webview-bridge/src/index.js | 48 +++++++++------- 4 files changed, 74 insertions(+), 55 deletions(-) diff --git a/packages/core/@types/index.d.ts b/packages/core/@types/index.d.ts index f688652d79..03ad8dd923 100644 --- a/packages/core/@types/index.d.ts +++ b/packages/core/@types/index.d.ts @@ -86,7 +86,7 @@ type PropValueType = Def extends { : Def extends FullPropType ? T : Def extends PropType - ? T + ? T : any; type GetPropsType = { @@ -259,7 +259,8 @@ interface MpxConfig { proxyEventHandler: (e: Event) => any | null setDataHandler: (data: object, target: ComponentIns<{}, {}, {}, {}, []>) => any | null forceFlushSync: boolean, - webRouteConfig: object + webRouteConfig: object, + webviewConfig: object } type SupportedMode = 'wx' | 'ali' | 'qq' | 'swan' | 'tt' | 'web' | 'qa' diff --git a/packages/webpack-plugin/lib/runtime/components/web/mpx-web-view.vue b/packages/webpack-plugin/lib/runtime/components/web/mpx-web-view.vue index fca2f2d549..8f2a518dd5 100644 --- a/packages/webpack-plugin/lib/runtime/components/web/mpx-web-view.vue +++ b/packages/webpack-plugin/lib/runtime/components/web/mpx-web-view.vue @@ -1,5 +1,5 @@