qsh-webview-sdk 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,204 +1,227 @@
1
- # UniApp WebView SDK
2
-
3
- 一个重构后的 UniApp WebView SDK,支持微信小程序和 APP 端的 WebView 与原生端通信。
4
-
5
- ## 特性
6
-
7
- - ✅ 支持微信小程序 WebView
8
- - ✅ 支持 APP 端 (Plus/NVUE/UVUE)
9
- - ✅ 模块化架构,易于维护
10
- - ✅ TypeScript 类型支持
11
- - ✅ UMD 和 ESM 双格式输出
12
- - ✅ 自动环境检测
13
-
14
- ## 安装
15
-
16
- ### NPM 安装
17
-
18
- ```bash
19
- npm install @qsh/uni-webview-sdk
20
- ```
21
-
22
- ### CDN 引入
23
-
24
- ```html
25
- <script src="path/to/uni-webview.umd.js"></script>
26
- ```
27
-
28
- ## 使用方法
29
-
30
- ### 在 HTML 中引入
31
-
32
- ```html
33
- <!-- 微信小程序环境(可选)-->
34
- <script type="text/javascript">
35
- if (/miniProgram/i.test(navigator.userAgent) && /micromessenger/i.test(navigator.userAgent)) {
36
- document.write('<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');
37
- }
38
- </script>
39
-
40
- <!-- 引入 UniApp WebView SDK -->
41
- <script type="text/javascript" src="path/to/uni-webview.umd.js"></script>
42
- ```
43
-
44
- ### 基础使用
45
-
46
- ```javascript
47
- // 等待 SDK 准备就绪
48
- document.addEventListener('UniAppJSBridgeReady', function() {
49
- console.log('SDK 已准备就绪');
50
- });
51
-
52
- // 或使用 Promise
53
- uni.ready().then(() => {
54
- console.log('SDK 已准备就绪');
55
- });
56
- ```
57
-
58
- ### 导航功能
59
-
60
- ```javascript
61
- // 跳转到新页面
62
- uni.navigateTo({
63
- url: '/pages/detail/detail?id=1'
64
- });
65
-
66
- // 返回上一页
67
- uni.navigateBack({
68
- delta: 1
69
- });
70
-
71
- // 切换 Tab
72
- uni.switchTab({
73
- url: '/pages/home/home'
74
- });
75
-
76
- // 重启应用
77
- uni.reLaunch({
78
- url: '/pages/index/index'
79
- });
80
-
81
- // 重定向
82
- uni.redirectTo({
83
- url: '/pages/login/login'
84
- });
85
- ```
86
-
87
- ### 消息通信
88
-
89
- ```javascript
90
- // 发送消息到原生端
91
- uni.postMessage({
92
- data: {
93
- action: 'share',
94
- title: '分享标题',
95
- content: '分享内容'
96
- }
97
- });
98
-
99
- // 获取环境信息
100
- uni.getEnv(function(result) {
101
- console.log('环境信息:', result);
102
- // result: { miniprogram: true, weixin: true }
103
- // 或 { app: true, plus: true }
104
- });
105
- ```
106
-
107
- ### 环境检测
108
-
109
- ```javascript
110
- // 获取当前环境信息
111
- const env = uni.environment;
112
-
113
- console.log('环境类型:', env.type); // 'weixin' | 'plus' | 'nvue' | 'uvue' | 'h5'
114
- console.log('是否微信小程序:', env.isWeixinMiniProgram);
115
- console.log('是否 APP:', env.isAppPlus);
116
- ```
117
-
118
- ## API 文档
119
-
120
- ### 导航 API
121
-
122
- | 方法 | 说明 | 参数 |
123
- |------|------|------|
124
- | `navigateTo` | 保留当前页面,跳转到应用内的某个页面 | `{ url: string }` |
125
- | `navigateBack` | 关闭当前页面,返回上一页面或多级页面 | `{ delta?: number }` |
126
- | `switchTab` | 跳转到 tabBar 页面 | `{ url: string }` |
127
- | `reLaunch` | 关闭所有页面,打开到应用内的某个页面 | `{ url: string }` |
128
- | `redirectTo` | 关闭当前页面,跳转到应用内的某个页面 | `{ url: string }` |
129
-
130
- ### 消息 API
131
-
132
- | 方法 | 说明 | 参数 |
133
- |------|------|------|
134
- | `postMessage` | 向原生端发送消息 | `{ data?: any }` |
135
- | `getEnv` | 获取当前环境信息 | `callback: Function` |
136
-
137
- ### 环境属性
138
-
139
- | 属性 | 类型 | 说明 |
140
- |------|------|------|
141
- | `environment.type` | `string` | 环境类型 |
142
- | `environment.isWeixinMiniProgram` | `boolean` | 是否微信小程序 |
143
- | `environment.isAppPlus` | `boolean` | 是否 APP Plus |
144
- | `environment.isNvue` | `boolean` | 是否 NVUE |
145
- | `environment.isUvue` | `boolean` | 是否 UVUE |
146
- | `environment.isUniApp` | `boolean` | 是否 UniApp |
147
-
148
- ## 开发
149
-
150
- ### 安装依赖
151
-
152
- ```bash
153
- npm install
154
- ```
155
-
156
- ### 开发模式
157
-
158
- ```bash
159
- npm run dev
160
- ```
161
-
162
- ### 构建
163
-
164
- ```bash
165
- npm run build
166
- ```
167
-
168
- ## 示例文件
169
-
170
- 项目包含以下示例文件:
171
-
172
- - `example/test.html` - 完整的测试页面,包含所有功能演示
173
- - `example/simple.html` - 简单示例,展示基础用法
174
- - `test.html` - 快速测试页面
175
-
176
- ## 项目结构
177
-
178
- ```
179
- src/
180
- ├── core/ # 核心模块
181
- │ ├── environment.js # 环境检测
182
- │ ├── messenger.js # 消息通信
183
- │ └── bridge.js # 桥接初始化
184
- ├── platforms/ # 平台适配
185
- │ ├── weixin.js # 微信小程序
186
- │ └── app.js # APP 端
187
- ├── api/ # API 接口
188
- │ ├── navigation.js # 导航 API
189
- │ └── message.js # 消息 API
190
- ├── index.js # 主入口
191
- └── index.d.ts # 类型定义
192
- ```
193
-
194
- ## 兼容性
195
-
196
- - 微信小程序 WebView
197
- - UniApp APP 端 (Android/iOS)
198
- - H5+ 环境
199
- - NVUE 页面
200
- - UVUE 页面 (UniApp X)
201
-
202
- ## License
203
-
204
- MIT
1
+ # UniApp WebView SDK
2
+
3
+ 一个重构后的 UniApp WebView SDK,支持微信小程序和 APP 端的 WebView 与原生端通信。
4
+
5
+ ## 特性
6
+
7
+ - ✅ 支持微信小程序 WebView
8
+ - ✅ 支持 APP 端 (Plus/NVUE/UVUE)
9
+ - ✅ 模块化架构,易于维护
10
+ - ✅ TypeScript 类型支持
11
+ - ✅ UMD 和 ESM 双格式输出
12
+ - ✅ 自动环境检测
13
+
14
+ ## 安装
15
+
16
+ ### NPM 安装
17
+
18
+ ```bash
19
+ npm install qsh-webview-sdk
20
+ ```
21
+
22
+ ### CDN 引入
23
+
24
+ ```html
25
+ <script src="path/to/uni-webview.umd.js"></script>
26
+ ```
27
+
28
+ ## 使用方法
29
+
30
+ ### 在 HTML 中引入
31
+
32
+ ```html
33
+ <!-- 微信小程序环境(可选)-->
34
+ <script type="text/javascript">
35
+ if (/miniProgram/i.test(navigator.userAgent) && /micromessenger/i.test(navigator.userAgent)) {
36
+ document.write('<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');
37
+ }
38
+ </script>
39
+
40
+ <!-- 引入 UniApp WebView SDK -->
41
+ <script type="text/javascript" src="path/to/uni-webview.umd.js"></script>
42
+ ```
43
+
44
+ ### 基础使用
45
+
46
+ ```javascript
47
+ // 等待 SDK 准备就绪
48
+ document.addEventListener('UniAppJSBridgeReady', function() {
49
+ console.log('SDK 已准备就绪');
50
+ });
51
+
52
+ // 或使用 Promise
53
+ qsh.ready().then(() => {
54
+ console.log('SDK 已准备就绪');
55
+ });
56
+ ```
57
+
58
+ ### 导航功能
59
+
60
+ ```javascript
61
+ // 跳转到新页面
62
+ qsh.navigateTo({
63
+ url: '/pages/detail/detail?id=1'
64
+ });
65
+
66
+ // 返回上一页
67
+ qsh.navigateBack({
68
+ delta: 1
69
+ });
70
+
71
+ // 切换 Tab
72
+ qsh.switchTab({
73
+ url: '/pages/home/home'
74
+ });
75
+
76
+ // 重启应用
77
+ qsh.reLaunch({
78
+ url: '/pages/index/index'
79
+ });
80
+
81
+ // 重定向
82
+ qsh.redirectTo({
83
+ url: '/pages/login/login'
84
+ });
85
+ ```
86
+
87
+ ### 消息通信
88
+
89
+ ```javascript
90
+ // 发送消息到原生端
91
+ qsh.postMessage({
92
+ data: {
93
+ action: 'share',
94
+ title: '分享标题',
95
+ content: '分享内容'
96
+ }
97
+ });
98
+
99
+ // 获取环境信息
100
+ qsh.getEnv(function(result) {
101
+ console.log('环境信息:', result);
102
+ // result: { miniprogram: true, weixin: true }
103
+ // 或 { app: true, plus: true } 或 { h5: true }
104
+ });
105
+ ```
106
+
107
+ ### 环境检测
108
+
109
+ ```javascript
110
+ // 获取当前环境信息
111
+ const env = qsh.environment;
112
+
113
+ console.log('环境类型:', env.type); // 'weixin' | 'plus' | 'nvue' | 'uvue' | 'h5'
114
+ console.log('是否微信小程序:', env.isWeixinMiniProgram);
115
+ console.log('是否 APP:', env.isAppPlus);
116
+ ```
117
+
118
+ ## API 文档
119
+
120
+ ### 导航 API
121
+
122
+ | 方法 | 说明 | 参数 |
123
+ |------|------|------|
124
+ | `navigateTo` | 保留当前页面,跳转到应用内的某个页面 | `{ url: string }` |
125
+ | `navigateBack` | 关闭当前页面,返回上一页面或多级页面 | `{ delta?: number }` |
126
+ | `switchTab` | 跳转到 tabBar 页面 | `{ url: string }` |
127
+ | `reLaunch` | 关闭所有页面,打开到应用内的某个页面 | `{ url: string }` |
128
+ | `redirectTo` | 关闭当前页面,跳转到应用内的某个页面 | `{ url: string }` |
129
+
130
+ ### 消息 API
131
+
132
+ | 方法 | 说明 | 参数 |
133
+ |------|------|------|
134
+ | `postMessage` | 向原生端发送消息 | `{ data?: any }` |
135
+ | `getEnv` | 获取当前环境信息 | `callback: Function` |
136
+
137
+ ### 环境属性
138
+
139
+ | 属性 | 类型 | 说明 |
140
+ |------|------|------|
141
+ | `environment.type` | `string` | 环境类型 |
142
+ | `environment.isWeixinMiniProgram` | `boolean` | 是否微信小程序 |
143
+ | `environment.isAppPlus` | `boolean` | 是否 APP Plus |
144
+ | `environment.isNvue` | `boolean` | 是否 NVUE |
145
+ | `environment.isUvue` | `boolean` | 是否 UVUE |
146
+ | `environment.isUniApp` | `boolean` | 是否 UniApp |
147
+
148
+ ## 开发
149
+
150
+ ### 安装依赖
151
+
152
+ ```bash
153
+ npm install
154
+ ```
155
+
156
+ ### 开发模式
157
+
158
+ ```bash
159
+ npm run dev
160
+ ```
161
+
162
+ ### 构建
163
+
164
+ ```bash
165
+ npm run build
166
+ ```
167
+
168
+ ## 示例文件
169
+
170
+ 项目包含以下示例文件:
171
+
172
+ - `example/test.html` - 完整的测试页面,包含所有功能演示
173
+ - `example/simple.html` - 简单示例,展示基础用法
174
+ - `test.html` - 快速测试页面
175
+
176
+ ## 项目结构
177
+
178
+ ```
179
+ src/
180
+ ├── core/ # 核心模块
181
+ │ ├── environment.js # 环境检测
182
+ │ ├── messenger.js # 消息通信
183
+ │ └── bridge.js # 桥接初始化
184
+ ├── platforms/ # 平台适配
185
+ │ ├── weixin.js # 微信小程序
186
+ │ └── app.js # APP 端
187
+ ├── api/ # API 接口
188
+ │ ├── navigation.js # 导航 API
189
+ │ └── message.js # 消息 API
190
+ ├── index.js # 主入口
191
+ └── index.d.ts # 类型定义
192
+ ```
193
+
194
+ ## 兼容性
195
+
196
+ - 微信小程序 WebView
197
+ - UniApp APP 端 (Android/iOS)
198
+ - H5+ 环境
199
+ - NVUE 页面
200
+ - UVUE 页面 (UniApp X)
201
+
202
+ ## License
203
+
204
+ MIT
205
+
206
+ ### NPM/ES Module 使用
207
+
208
+ ```javascript
209
+ // 安装
210
+ npm install qsh-webview-sdk
211
+
212
+ // 在项目中导入
213
+ import qsh from 'qsh-webview-sdk';
214
+
215
+ // 等待初始化完成
216
+ qsh.ready().then(() => {
217
+ // 使用 SDK
218
+ qsh.navigateTo({
219
+ url: '/pages/test/test'
220
+ });
221
+ });
222
+
223
+ // 或者手动初始化(如果需要控制初始化时机)
224
+ import qsh from 'qsh-webview-sdk';
225
+ qsh.init(); // 手动初始化
226
+ ```
227
+ ```
package/dist/index.d.ts CHANGED
@@ -1,116 +1,117 @@
1
- /**
2
- * UniApp WebView SDK 类型定义
3
- */
4
-
5
- declare namespace UniWebView {
6
- /**
7
- * 导航选项
8
- */
9
- interface NavigateOptions {
10
- /** 目标页面路径 */
11
- url: string;
12
- }
13
-
14
- /**
15
- * 返回选项
16
- */
17
- interface NavigateBackOptions {
18
- /** 返回的页面数,默认1 */
19
- delta?: number;
20
- }
21
-
22
- /**
23
- * 消息选项
24
- */
25
- interface PostMessageOptions {
26
- /** 要发送的数据 */
27
- data?: any;
28
- }
29
-
30
- /**
31
- * 环境信息
32
- */
33
- interface EnvironmentInfo {
34
- /** 是否微信小程序环境 */
35
- miniprogram?: boolean;
36
- /** 是否微信环境 */
37
- weixin?: boolean;
38
- /** 是否 APP 环境 */
39
- app?: boolean;
40
- /** 是否 Plus 环境 */
41
- plus?: boolean;
42
- /** 是否 NVUE 环境 */
43
- nvue?: boolean;
44
- /** 是否 UVUE 环境 */
45
- uvue?: boolean;
46
- /** 是否 H5 环境 */
47
- h5?: boolean;
48
- }
49
-
50
- /**
51
- * 环境对象
52
- */
53
- interface Environment {
54
- /** 是否微信小程序环境 */
55
- isWeixinMiniProgram: boolean;
56
- /** 是否 APP Plus 环境 */
57
- isAppPlus: boolean;
58
- /** 是否 NVUE 环境 */
59
- isNvue: boolean;
60
- /** 是否 UVUE 环境 */
61
- isUvue: boolean;
62
- /** 是否 UniApp 环境 */
63
- isUniApp: boolean;
64
- /** 是否 Html5Plus 环境 */
65
- isHtml5Plus: boolean;
66
- /** 环境类型 */
67
- type: 'weixin' | 'plus' | 'nvue' | 'uvue' | 'h5';
68
- }
69
-
70
- /**
71
- * WebView 对象接口
72
- */
73
- interface WebView {
74
- navigateTo(options: NavigateOptions): void;
75
- navigateBack(options?: NavigateBackOptions): void;
76
- switchTab(options: NavigateOptions): void;
77
- reLaunch(options: NavigateOptions): void;
78
- redirectTo(options: NavigateOptions): void;
79
- postMessage(options?: PostMessageOptions): void;
80
- getEnv(callback: (info: EnvironmentInfo) => void): void;
81
- }
82
-
83
- /**
84
- * Uni 对象接口
85
- */
86
- interface Uni extends WebView {
87
- /** 环境信息 */
88
- environment: Environment;
89
- /** 等待桥接准备就绪 */
90
- ready(): Promise<void>;
91
- /** WebView 对象(兼容旧版本) */
92
- webView: WebView | null;
93
- }
94
- }
95
-
96
- /**
97
- * 全局 uni 对象
98
- */
99
- declare const uni: UniWebView.Uni;
100
-
101
- /**
102
- * 模块导出
103
- */
104
- export default uni;
105
-
106
- /**
107
- * 全局声明
108
- */
109
- declare global {
110
- interface Window {
111
- uni: UniWebView.Uni;
112
- UniAppJSBridge?: boolean;
113
- }
114
- }
115
-
116
- export as namespace uni;
1
+ /**
2
+ * UniApp WebView SDK 类型定义
3
+ */
4
+
5
+ declare namespace UniWebView {
6
+ /**
7
+ * 导航选项
8
+ */
9
+ interface NavigateOptions {
10
+ /** 目标页面路径 */
11
+ url: string;
12
+ }
13
+
14
+ /**
15
+ * 返回选项
16
+ */
17
+ interface NavigateBackOptions {
18
+ /** 返回的页面数,默认1 */
19
+ delta?: number;
20
+ }
21
+
22
+ /**
23
+ * 消息选项
24
+ */
25
+ interface PostMessageOptions {
26
+ /** 要发送的数据 */
27
+ data?: any;
28
+ }
29
+
30
+ /**
31
+ * 环境信息
32
+ */
33
+ interface EnvironmentInfo {
34
+ /** 是否微信小程序环境 */
35
+ miniprogram?: boolean;
36
+ /** 是否微信环境 */
37
+ weixin?: boolean;
38
+ /** 是否 APP 环境 */
39
+ app?: boolean;
40
+ /** 是否 Plus 环境 */
41
+ plus?: boolean;
42
+ /** 是否 NVUE 环境 */
43
+ nvue?: boolean;
44
+ /** 是否 UVUE 环境 */
45
+ uvue?: boolean;
46
+ /** 是否 H5 环境 */
47
+ h5?: boolean;
48
+ }
49
+
50
+ /**
51
+ * 环境对象
52
+ */
53
+ interface Environment {
54
+ /** 是否微信小程序环境 */
55
+ isWeixinMiniProgram: boolean;
56
+ /** 是否 APP Plus 环境 */
57
+ isAppPlus: boolean;
58
+ /** 是否 NVUE 环境 */
59
+ isNvue: boolean;
60
+ /** 是否 UVUE 环境 */
61
+ isUvue: boolean;
62
+ /** 是否 UniApp 环境 */
63
+ isUniApp: boolean;
64
+ /** 是否 Html5Plus 环境 */
65
+ isHtml5Plus: boolean;
66
+ /** 环境类型 */
67
+ type: 'weixin' | 'plus' | 'nvue' | 'uvue' | 'h5';
68
+ }
69
+
70
+ /**
71
+ * WebView 对象接口
72
+ */
73
+ interface WebView {
74
+ navigateTo(options: NavigateOptions): void;
75
+ navigateBack(options?: NavigateBackOptions): void;
76
+ switchTab(options: NavigateOptions): void;
77
+ reLaunch(options: NavigateOptions): void;
78
+ redirectTo(options: NavigateOptions): void;
79
+ postMessage(options?: PostMessageOptions): void;
80
+ getEnv(callback: (info: EnvironmentInfo) => void): void;
81
+ }
82
+
83
+ /**
84
+ * Uni 对象接口
85
+ */
86
+ interface Uni extends WebView {
87
+ /** 环境信息 */
88
+ environment: Environment;
89
+ /** 等待桥接准备就绪 */
90
+ ready(): Promise<void>;
91
+ /** WebView 对象(兼容旧版本) */
92
+ webView: WebView | null;
93
+ }
94
+ }
95
+
96
+ /**
97
+ * 全局 qsh/uni 对象(默认导出为模块默认值)
98
+ */
99
+ declare const qsh: UniWebView.Uni;
100
+ declare const uni: UniWebView.Uni;
101
+
102
+ /**
103
+ * 模块导出
104
+ */
105
+ export default qsh;
106
+
107
+ /**
108
+ * 全局声明
109
+ */
110
+ declare global {
111
+ interface Window {
112
+ qsh: UniWebView.Uni;
113
+ UniAppJSBridge?: boolean;
114
+ }
115
+ }
116
+
117
+ export as namespace qsh;