Skip to content

Commit cd7a6b3

Browse files
authored
Merge branch 'master' into fix-process-plugin-generics-implementation
2 parents fd18e0f + ea9d461 commit cd7a6b3

File tree

35 files changed

+1015
-379
lines changed

35 files changed

+1015
-379
lines changed

docs-vitepress/.vitepress/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const sidebar = {
1818
{ text: "快速开始", link: "/guide/basic/start" },
1919
{ text: "介绍", link: "/guide/basic/intro" },
2020
{ text: "单文件开发", link: "/guide/basic/single-file" },
21-
{ text: "IDE 高亮配置", link: "/guide/basic/ide" },
21+
{ text: "IDE 支持", link: "/guide/basic/ide" },
2222
{ text: "模板语法", link: "/guide/basic/template" },
2323
{ text: "CSS 处理", link: "/guide/basic/css" },
2424
{ text: "数据响应", link: "/guide/basic/reactive" },

docs-vitepress/api/extend.md

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,24 @@ mpx-fetch提供了一个实例**xfetch** ,该实例包含以下api
1414

1515
config 可指定以下属性:
1616
- **url**
17-
17+
1818
`string`
19-
19+
2020
设置请求url
2121
- **method**
2222

2323
`string`
24-
24+
2525
设置请求方式,默认为GET
2626
- **data**
2727

2828
`object`
29-
29+
3030
设置请求参数
3131
- **params**
3232

3333
`object`
34-
34+
3535
设置请求参数,参数会以 Query String 的形式进行传递
3636
- **header**
3737

@@ -40,14 +40,14 @@ mpx-fetch提供了一个实例**xfetch** ,该实例包含以下api
4040
设置请求的 header,header 中不能设置 Referer。
4141
`content-type` 默认为 `application/json`
4242
- **timeout**
43-
43+
4444
`number`
45-
45+
4646
单位为毫秒。若不传,默认读取app.json文件中__networkTimeout属性。 对于超时的处理可在 catch 方法中进行
4747
- **emulateJSON**
4848

4949
`boolean`
50-
50+
5151
设置为 true 时,等价于 header = {'content-type': 'application/x-www-form-urlencoded'}
5252
- **usePre**
5353

@@ -565,6 +565,7 @@ useFetch().fetch({
565565
| onNetworkStatusChange |:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|
566566
| offNetworkStatusChange |:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|
567567
| createVideoContext |:white_check_mark:|:white_check_mark:|:white_check_mark:|:x:|
568+
| onLazyLoadError |:white_check_mark:|:white_check_mark:|:x:|:white_check_mark:|
568569
## webview-bridge
569570
Mpx 支持小程序跨平台后,多个平台的小程序里都提供了 webview 组件,webview 打开的 H5 页面可以通过小程序提供的 API 来与小程序通信以及调用一些小程序的能力,但是各家小程序对于 webview 提供的API是不一样的。
570571

@@ -694,20 +695,20 @@ Mpx框架项目包体积可以进行分组、分包、页面、冗余Npm包等
694695
`Array<object>`
695696

696697
配置体积计算分组,以输入分组为维度对体积进行分析,当没有该配置时结果中将不会包含分组体积信息
697-
698+
698699
- name
699-
700+
700701
`string`
701702

702703
分组名称
703704

704705
- threshold
705-
706+
706707
`string | object`
707708

708709
分组相关体积阈值,若不配置则该分组不校验体积阈值,同时也支持对分组中占各分包体积阈值
709710

710-
711+
711712
```html
712713
// 分组体积限额 500KB
713714
threshold: '500KB'
@@ -719,32 +720,32 @@ Mpx框架项目包体积可以进行分组、分包、页面、冗余Npm包等
719720
}
720721
}
721722
```
722-
723+
723724
- entryRules
724-
725+
725726
`object`
726-
727+
727728
配置分组 entry 匹配规则,小程序中所有的页面和组件都可被视为 entry
728-
729+
729730
- include: 包含符合条件的入口文件,默认为空数组,规则数组中支持函数、正则、字符串
730731
- exclude: 剔除符合条件的入口文件,默认为空数组,规则数组中支持函数、正则、字符串
731-
732-
732+
733+
733734
```html
734735
include: [/@someGroup\/some-npm-package/],
735736
exclude: [/@someGroup\/some-two-pack/]
736737
```
737-
738+
738739
- noEntryRules
739740

740741
`object`
741742

742743
配置计算分组中纯 js 入口引入的体积(不包含组件和页面)
743-
744+
744745
- include: 包含符合条件的 js 文件,默认为空数组,规则数组中支持函数、正则、字符串
745746
- exclude: 剔除符合条件的 js 文件,默认为空数组,规则数组中支持函数、正则、字符串
746-
747-
747+
748+
748749
```html
749750
include: [/@someGroup\/some-npm-package/],
750751
exclude: [/@someGroup\/some-two-pack/]
@@ -982,7 +983,7 @@ function t(key: string, choice?: number, values: Array | Object): TranslateResul
982983
}
983984
}
984985
}
985-
986+
986987
createComponent({
987988
setup(){
988989
const { t } = useI18n({
63.5 KB
Loading
80.5 KB
Loading

docs-vitepress/guide/advance/async-subpackage.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@
1010
* 支付宝小程序
1111
* 字节小程序
1212
* Web
13+
* RN
1314

1415
在非上述平台,异步分包代码会默认降级。
1516

1617
## 跨分包自定义组件引用
1718
>一个分包使用其他分包的自定义组件时,由于其他分包还未下载或注入,其他分包的组件处于不可用的状态。通过为其他分包的自定义组件设置 占位组件,
1819
我们可以先渲染占位组件作为替代,在分包下载完成后再进行替换。
19-
>
20+
>
2021
在 Mpx 中使用跨分包自定义组件引用通过?root声明组件所属异步分包即可使用,示例如下:
2122
```html
2223
<!--/packageA/pages/index.mpx-->
@@ -33,7 +34,7 @@
3334
}
3435
</script>
3536
```
36-
- 注意项:目前该能力已在微信、支付宝和Web环境下支持,其他环境下框架将进行自动降级。
37+
- 注意项:目前该能力已在微信、支付宝、Web和RN环境下支持,其他环境下框架将进行自动降级。
3738

3839
## 跨分包 JS 代码引用
3940
>一个分包中的代码引用其它分包的代码时,为了不让下载阻塞代码运行,我们需要异步获取引用的结果

docs-vitepress/guide/basic/ide.md

Lines changed: 18 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -1,161 +1,33 @@
1-
# IDE 高亮配置
1+
# IDE 支持
22

3-
- [IntelliJ](ide.md#intellij)
4-
- [vscode](ide.md#vscode)
3+
## VS Code
54

6-
## IntelliJ
7-
8-
如果使用 IntelliJ 系 IDE 开发,可将 `.mpx` 后缀文件关联到 `vue` 模板类型,按 `vue` 模板解析。
9-
10-
![关联文件类型](../../assets/images/start-tips2.png)
11-
12-
但会报一个 `warning` 提示有重复的 `script` 标签,关闭该警告即可。
13-
14-
![关闭警告](../../assets/images/start-tips1.png)
15-
16-
## vscode
17-
18-
### 语法高亮插件
19-
20-
#### 下载
21-
22-
- [下载地址](https://marketplace.visualstudio.com/items?itemName=pagnkelly.mpx)(也可直接在 vscode 扩展处搜索 mpx 即可下载)
23-
- [git 地址](https://github.com/mpx-ecology/vscode-mpx)(有任何 vscode 插件的问题和需求可在仓库中提 issue)
24-
25-
#### 功能介绍
26-
27-
- 语法高亮
28-
- emmet
29-
- 跳转定义
30-
- 自动补全
31-
- eslint
32-
- 格式化
33-
34-
[视频介绍](https://gift-static.hongyibo.com.cn/static/kfpub/3227/vscodes.mp4)
35-
36-
#### 高亮
37-
38-
&ensp;&ensp;与其他语言插件无异,提供相应代码的高亮,因为 Mpx 分为四个模块,所以每个模块都有相应的语法高亮,还包括注释快捷键,也区分了相应模块,比如`<template>`中使用的是 html 的高亮,且注释是`<!-- -->`,而`<script>`中就是`js`的高亮,注释是`//`
39-
40-
![image](https://gift-static.hongyibo.com.cn/static/kfpub/3547/codelight.jpeg)
41-
42-
#### emmet
43-
44-
&ensp;&ensp;早在使用 sublime 时就在使用 emmet 插件,以提高写 HTML 的效率。
45-
46-
&ensp;&ensp;比如键入多个`<view>`标签:`view*n`
47-
48-
&ensp;&ensp;比如一些标签的快速键入,配合`tab`或者`Enter`键快速键入
49-
50-
&ensp;&ensp;不仅仅是`<template>`模块,css,scss,less,stylus,sass 模块也有相应的快捷指令
51-
52-
![image](https://gift-static.hongyibo.com.cn/static/kfpub/6168/QQ20210728-200258.gif)
53-
![image](https://gift-static.hongyibo.com.cn/static/kfpub/6168/QQ20210728-200331.gif)
54-
55-
提示组件标签
56-
57-
我们可以像编写 html 一样,只要输入对应的单词就会出现对应的标签,比如输入的是 view ,然后按下 tab 键,即可输入 `<view></view>` 标签。
58-
59-
<img src="https://gift-static.hongyibo.com.cn/static/kfpub/3547/tishi1_v2.png" width="500" alt="图片名称" />
60-
61-
组件指令提示
62-
63-
指令的提示类似于 vue 文件一样,只要输入对应的指令前缀就会出现对应的完整指令,比如输入的是 wx ,然后按下 tab 键,就可以输入 wx:if="" 指令。
5+
推荐使用的 IDE 是 [VS Code](https://code.visualstudio.com),配合官方维护的新版本 [**Mpx (Official)**](https://marketplace.visualstudio.com/items?itemName=mpxjs.mpx-official) 插件。该插件提供了语法高亮、TypeScript 支持,以及模板内表达式与组件 props 的智能提示,提供更好的开发体验。
646

65-
<img src="https://gift-static.hongyibo.com.cn/static/kfpub/3547/tishi2_v2.png" width="500" alt="图片名称" />
7+
::: tip 注意
8+
Mpx (Official) 现在取代了我们过去提供的插件 [mpx](https://marketplace.visualstudio.com/items?itemName=pagnkelly.mpx)[mpx-template-features](https://marketplace.visualstudio.com/items?itemName=wangshun.mpx-template-features)。历史插件将不再维护逐步废弃,请大家及时切换到新版插件。更多历史背景及功能差异请参考[说明](https://github.com/mpx-ecology/language-tools?tab=readme-ov-file#why-new-extension)
9+
:::
6610

67-
组件属性提示
11+
Mpx (Official) 插件一大亮点功能是为 `<template>` 模板中的变量支持 TS 智能提示,包括类型提示、类型检查、自动补全、定义跳转等等功能。如下图所示:
6812

69-
微信小程序的每个组件都有一些属性选项,在编写组件的时候输入前缀就会出现完整的属性,并且包含了属性的说明和属性的类型。
13+
![模板类型提示演示1](../../assets/images/ide-mpx-official-demo-1.png)
7014

71-
<img src="https://gift-static.hongyibo.com.cn/static/kfpub/3547/tishi3_v2.png" width="500" alt="图片名称" />
15+
![模板类型检查演示2](../../assets/images/ide-mpx-official-demo-2.png)
7216

73-
组件事件提示
17+
有关更多插件详细功能介绍和使用说明,请参阅我们的[插件文档](https://github.com/mpx-ecology/language-tools/wiki)
7418

75-
给组件绑定事件,也是只需要输入事件的前缀,就会出现完整的事件列表,然后按下 tab 键,即可输入 bindtap="" 类似的事件。
19+
## Open VSX 插件生态 IDE
7620

77-
<img src="https://gift-static.hongyibo.com.cn/static/kfpub/3547/tishi4_v2.png" width="500" alt="图片名称" />
21+
[Open VSX](https://open-vsx.org/) 是 Visual Studio Marketplace(VS Code 官方插件市场)的开源替代方案,可以为兼容 VS Code 的 IDE 提供插件市场支持。[Mpx (Official)](https://open-vsx.org/extension/mpxjs/mpx-official) 插件支持在 Open VSX 同步发版。
7822

79-
#### 跳转定义
23+
目前主流的 AI IDE 比如 [Cursor](https://cursor.com/cn)[Trae](https://www.trae.cn)[windsurf](https://windsurf.com/) 等等,基于都是 fork VS Code 开发,内部插件市场一般由 Open VSX 提供支持。如果您使用此类 IDE 或者其他支持 Open VSX 插件源的 IDE,可直接搜索安装 Mpx (Official)。
8024

81-
&ensp;&ensp;command + 鼠标左键 查看定义位置,也可以在当前文件查看内容,决定是否跳转
82-
83-
![image](https://gift-static.hongyibo.com.cn/static/kfpub/6168/QQ20210728-200848.gif)
84-
85-
#### 自动补全
86-
87-
&ensp;&ensp;毕竟 Mpx 是个小程序的框架,对于微信和支付宝的 api 快速补全 snippets 没有怎么能行,可在`<script>`中通过键入部分文字插入相应的代码块
88-
89-
![image](https://gift-static.hongyibo.com.cn/static/kfpub/6168/QQ20210728-201858.gif)
90-
91-
#### eslint
92-
93-
&ensp;&ensp;eslint 这块要分两部分来讲,一部分是插件实现了按照模块区分的简单的 eslint,另一部分是要配合 eslint 的 vscode 插件,配置.eslintrc 高阶的 eslint 检测。
94-
95-
部分一可通过配置开关
96-
97-
`<template>`是通过我们自己实现的 eslint 插件`eslint-plugin-mpx`,通过调 eslint 提供的引擎 api,返回 eslint 校验的结果,我们再进行展示。
98-
99-
`<script>`中是通过调用 typescript 提供的检测 js 代码的 api 来进行检测,返回
100-
的校验结果也是不太符合语法的,基础的检测,不会过于苛刻
101-
102-
`<style>`中会根据 lang 的设定进行相应的检测,此检测是 vscode 官方提供的库
103-
`vscode-css-languageservice`
104-
105-
`<json>`模块同 tempalte,用到了一个 eslint 插件`eslint-plugin-jsonc`来检测 json 的部分
106-
107-
![image](https://gift-static.hongyibo.com.cn/static/kfpub/3547/vscodeseting.png)
108-
109-
部分二可参照此[链接](https://github.com/mpx-ecology/vscode-mpx/issues/35)配置
110-
111-
#### 代码格式化
112-
113-
支持代码格式化 JavaScript (ts)· JSON · CSS (less/scss/stylus) · WXML,通过鼠标右键选择代码格式化文档。
114-
115-
<img src="https://gift-static.hongyibo.com.cn/static/kfpub/3547/format_v2.png" width="500" alt="图片名称" />
116-
117-
默认每个区块都是调用 Prettier 这个库来完成格式化的,当然也可以在设置中切换成使用其他库。
118-
119-
<img src="https://gift-static.hongyibo.com.cn/static/kfpub/3547/format2_v3.png" width="500" alt="图片名称" />
120-
121-
如果切换成 none 将会禁用格式化。
122-
123-
Prettier 支持从项目根目录读取 .prettierrc 配置文件。配置选项可以参考 [官方](https://prettier.io/docs/en/configuration.html) 文档。.prettierrc 文件可以使用 JSON 语法编写,比如下面这样:
124-
125-
```
126-
{
127-
"tabWidth": 4,
128-
"semi": false,
129-
"singleQuote": true
130-
}
131-
```
132-
133-
注意:由于 Prettier 这个库不支持格式化 stylus 语法,所以 stylus 的格式化使用另外一个 stylus-supremacy 库,配置 stylus 格式化规则只能在编辑器的 settings 中配置。
134-
135-
```
136-
"mpx.format.defaultFormatterOptions": {
137-
"stylus-supremacy": {
138-
"insertColons": false, // 不使用括号
139-
"insertSemicolons": false, // 不使用冒号
140-
"insertBraces": false, // 不使用分号
141-
"insertNewLineAroundImports": true, // import之后插入空行
142-
"insertNewLineAroundBlocks": false // 每个块不添加空行
143-
}
144-
}
145-
```
146-
147-
总结一下,配置格式化有两种方式,一种是使用 .prettierrc 文件的形式配置,另一种是在编辑器的 settings 中自行配置,通过 mpx.format.defaultFormatterOptions 选项。
148-
149-
### 模版增强插件
25+
## IntelliJ
15026

151-
#### 下载
27+
如果使用 IntelliJ 系 IDE 开发,可将 `.mpx` 后缀文件关联到 `vue` 模板类型,按 `vue` 模板解析。
15228

153-
- [下载地址](https://marketplace.visualstudio.com/items?itemName=wangshun.mpx-template-features)(也可直接在 vscode 扩展处搜索 Mpx Template Features 即可下载)
29+
![关联文件类型](../../assets/images/start-tips2.png)
15430

155-
#### 功能介绍
31+
但会报一个 `warning` 提示有重复的 `script` 标签,关闭该警告即可。
15632

157-
- 支持模板中的变量定义跳转
158-
- class 类名 hover 展示对应的 style 样式
159-
- stylus 一键转换为原子类 Unocss,支持自定义转换规则
160-
- 模板中变量自动补全
161-
- 支持拆分 SFC 文件为多个编辑视图
33+
![关闭警告](../../assets/images/start-tips1.png)

0 commit comments

Comments
 (0)