Coder Social home page Coder Social logo

wx-minapp / minapp-vscode Goto Github PK

View Code? Open in Web Editor NEW
256.0 8.0 40.0 1.24 MB

WXML Language Support

Home Page: https://marketplace.visualstudio.com/items?itemName=qiu8310.minapp-vscode

License: MIT License

TypeScript 28.53% JavaScript 71.47%
wxml wechat miniprogram wxss wxs minapp vscode-extension

minapp-vscode's Introduction

wxml language features logo

WXML - Language Service

CI Status Deploy Status Visual Studio Marketplace Marketplace Downloads Marketplace Installs Marketplace Rating

最近更新 【CHANGELOG.md

@iChenLei 已接手维护本插件,欢迎大家在钉钉群或者 Github issues 提意见。

用户交流钉钉群

用户1群 用户2群 用户3群
暂无

请使用阿里巴巴旗下 钉钉(Dingtalk) APP 扫码进入交流群,反馈 Bug /给插件维护者提需求,相比 Github issues 更加接地气地与插件维护者交流。加一个群即可,1 群满了试试加 2 群。如果遇到二维码过期或者群都满了的问题请提 issue 给插件维护者。

主要功能

所有自动补全的模板数据都来自于官方文档,通过脚本自动获取的

一键创建小程序组件

  • 右键可以看到 New Miniprogram Component 选项,输入组件名即可一键创建 .wxml/.js/.wxss/.json 以及组件文件夹
  • 创建成功后自动打开 js 文件

示例图片

  • 创建组件支持配置 css/wxml/js 后缀,比如项目使用 less/vue/ts

示例图片

{
  "minapp-vscode.cssExtname": "less", // 默认 wxss,支持 styl sass scss less css
  "minapp-vscode.wxmlExtname": "vue", // 默认 wxml,支持 vue wpy
  "minapp-vscode.jsExtname": "ts" // 默认 js,支持 ts coffee
}

标签名与属性名自动补全

  • wxml 中需要输入 < 才会触发标签补全,而 pug 语言只需要写标签开头即能触发标签补全
  • 输入空格会触发对应标签的属性补全

示例图片

根据组件已有的属性,自动筛选出对应支持的属性集合

  • 当 picker 的 mode="selector" 时,有 rangerange-key 的属性
  • 当 picker 的 mode="time" 时,有 startend 的属性

示例图片

属性值自动补全(有可选值的情况下才会触发补全)

  • 在属性值中输入空格可以触发,补全后自动会将空格覆盖

示例图片

点击模板文件中的函数或属性跳转到 js/ts 定义的地方(纯 wxml 或 pug 文件才支持,vue 文件不完全支持)

功能还不完善,只会查找和当前模板同名的脚本文件,所以有可能会找不到 JS 中的定义

示例图片

样式名自动补全(纯 wxml 或 pug 文件才支持,vue 文件不完全支持)

系统会自动获取和当前模板同名的样式文件中的所有样式名,同时还能获取样式名上的 /** */ 中的文档;如果有全局的样式,需要通过配置项 minapp-vscode.globalStyleFiles 来指定。

  • 默认会获取和当前模板同名的样式文件中的名称

    注意:如果样式文件是 @import 了另一个样式文件,则程序不会去获取这个引入的文件中的样式名

  • 另外可以使用 minapp-vscode.globalStyleFiles 来指定一些全局的样式文件,这样在输入 class="" 后就也会出现这些文件中的样式名

    小程序的 app.wxss 一般是全局的样式,所以需要你手动通过此配置来指定,如配置 minapp-vscode.globalStyleFiles: ["src/app.wxss"]

  • 另外也可以使用 minapp-vscode.styleExtensions 来指定系统使用的样式文件的后缀

    建议配置此项,系统默认会查找各种后缀的样式文件,为避免不必要的性能损耗,最好配置成项目中使用的后缀!

注意:不支持 sass 这种缩进排版的样式文件

示例图片

在 vue 模板文件中也能自动补全,同时支持 pug 语言

vue 中的 template 板支持两个属性:

  1. lang 可以设置为 "wxml""pug",表示使用的语言(在类 vue 框架中指定 lang 属性可能会导致编译报错,你可以使用 xlang 替代,但这样会同时出现 vue 和 minapp 的补全
  2. minapp 可以设置为 "native", "wepy""mpx""mpvue",表示使用的框架,默认为 "mpvue"

如:

  • <template lang="wxml" minapp="native"> 表示使用 wxml 语言,不使用任何框架
  • <template lang="pug" minapp="mpvue"> 表示使用 pug 语言,并使用 mpvue 框架

注意,mpvue 中指定 lang="wxml" 会报错,需要等待作者修复!不过 你可以临时使用 xlang="wxml",但这样同时也会触发 vue 的自动补全

指定为不同的 minapp 值会触发对应框架的自动补全,由于本人没有使用 wepy 和 mpvue 开发过,所以这些自动补全是根据官方文档说明而加上的,如果有错误,欢迎 PR(只需要修改文件 src/plugin/lib/language.ts)

示例图片

支持 link(纯 wxml 或 pug 文件才支持,vue 文件不支持)

  • 默认只会 link src 标签,并且文件需要存在,不存在不会加 link
  • 可以配置 minapp-vscode.linkAttributeNames 来扩展额外的支持 link 的标签,将此值配置成空数组,可以禁用 link 功能
  • 可以配置 minapp-vscode.resolveRoots 来使用相对目录解析图片路径

示例图片

自定义组件自动补全(纯 wxml 文件才支持,vue 或 pug 文件不支持)

  • 自动获取对应 json 文件中的组件信息
  • 优先提示自定义组件
  • 自动获取组件中属性的描述

示例图片

模板文件中 js 变量高亮(纯 wxml 或 pug 文件才支持,vue 文件不支持)

  • 默认关闭高亮,可以配置 minapp-vscode.disableDecoratetrue 来开启高亮
  • 默认高亮颜色使用紫色,可以配置 minapp-vscode.decorateType 来使用你喜欢的颜色,如 {"color": "red"}
  • 默认会将 "{{" 与 "}}" 之间的所有字符都高亮,可以配置 minapp-vscode.decorateComplexInterpolationfalse,这样只有变量(如:foo, foo.prop, foo[1])会高亮,而表达式(如:foo + bar, foo < 3)不会高亮,而使用原本的颜色

示例图片

为了加快解析速度,颜色高亮使用的是正则表达式匹配,所以可能会出现匹配错误的情况;如果不满意,可以配置 minapp-vscode.disableDecorate 来禁用颜色高亮功能

已知问题:

  • pug 语言中注释中的变量也会高亮 (pug 是基于缩进的,正则不太好处理)

内置 snippets

  • 自带 swiper/icon/button/picker time/picker date/picker region/checkbox-group/radio-group,见文件
  • 可以通过配置项 minapp-vscode.snippets 来定义你自己的 snippets

和官方的 Snippets 的区别时,这里的 Snippets 只需要指定 key 和 body 即可,组件描述自动会根据 key 来获取(另外后期可以让配置和内置的数据结合起来)

示例图片

支持 emmet 写法

示例图片

emmet cheat sheet

wxml 格式

支持prettyHtml, js-beautifyprettier(部分内容需要采用兼容html的方式书写)

  • 默认 wxml
"minapp-vscode.wxmlFormatter": "wxml", // 指定格式化工具
"minapp-vscode.wxmlFormatter": "jsBeautifyHtml", // 指定格式化工具
// 使用 vscode settings.json 中的 `html.format.[配置字段]` 配置字段, 详见下方 tips.4
"minapp-vscode.jsBeautifyHtml": "useCodeBuiltInHTML",
// 使用自定义配置
"minapp-vscode.jsBeautifyHtml": { // jsBeautify 默认配置
    "content_unformatted": "text",
    "wrap_attributes": "force",
    "indent_size": 2,
    "wrap_attributes_indent_size": 2,
    "void_elements": "image,input,video",
    "indent_scripts": "keep"
}
"minapp-vscode.wxmlFormatter": "prettyHtml", // 指定格式化工具
"minapp-vscode.prettyHtml": { // prettyHtml 默认配置
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 100,
  "singleQuote": false,
  "usePrettier": true,
  "wrapAttributes": false, // 设置成 true 强制属性换行
  "sortAttributes": false
}
"minapp-vscode.wxmlFormatter": "prettier", // 指定格式化工具
"minapp-vscode.prettier": { // prettier 更多参考 https://prettier.io/docs/en/options.html
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 100,
  "singleQuote": false
}
  • tips:
    1. 针对prettyHtmlprettier 方式,会自动读取项目下的配置文件,Prettier configuration file .editorconfig
    2. 切换格式化工具需重启 VSCode
    3. 针对 prettyHtml ,和 prettier 采用 HTML5 的语法和 wxml 不完全一致,写法要注意兼容
    4. 针对 jsBeautifyHtml , 当值为 "useCodeBuiltInHTML"时, 配置信息将从 vscode 配置中的 html.format.* 配置字段doc 读取, 转换为 js-beautify 的配置

常见问题

安装插件后没有出现自动补全

  1. 确保安装后有重启过 VSCode
  2. 确保当前文件的格式是 wxml 或 wxml-pug 或 vue (不能看文件后缀名,因为可能在配置文件中把它们关联的其它文件格式;需要看 vscode 右下角显示的文件类型)

在非小程序项目,pug 文件不想要小程序的自动补全

minapp 插件会自动将 .pug 文件关联到 wxml-pug 文件类型。所以你只需要在具体的项目中配置一下文件关联就行了。

  • 非小程序项目中,将 .pug 后缀的文件关联到 pug 文件类型
  • 小程序项目中,将 .pug 后缀的文件关联到 wxml-pug 文件类型

minapp-vscode's People

Contributors

alsotang avatar dependabot[bot] avatar ichenlei avatar newfuture avatar nicong622 avatar qiu8310 avatar sky-admin avatar xdlrt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minapp-vscode's Issues

关联一下html

有场景需要和html的工具一起使用,设置成html格式,插件就会失效(只能设置wxml插件才能有效)

格式化问题闹心几天呀,作者能帮忙解决么

直接上图吧
格式化问题
我的VSCode的setting.json设置如下图
格式化问题2
格式化问题3
安装的插件有minapp、ESLint、prettier、Vetur等相关的小程序开发的插件,现在遇到的问题是,我格式化图1的wxml文件,vscode出现下面的问题
格式化问题4
右键格式化选择格式化方法操作如下
格式化问题5
格式化问题6

在wxml中格式化的时候出现换行符变成auto的情况是怎么回事?

直接上图

default

似乎是更新到vscode的最新版本之后发生的这种情况,更新之前是没有的,但是不知道该如何解决。

VSCode版本
版本: 1.29.0 (user setup)
提交: 5f24c93878bd4bc645a4a17c620e2487b11005f9
日期: 2018-11-12T07:47:15.448Z
Electron: 2.0.12
Chrome: 61.0.3163.100
Node.js: 8.9.3
V8: 6.1.534.41
架构: x64

其他文件没有此问题,禁用掉minapp拓展也没有问题,应该是新版本更新的内容起冲突了吗?

关于image标签导致不能格式化的问题

prettyHtml format error: Void elements do not have end tags "image"

这样提示 有什么办法能解决吗?

配置是这样的

   { 
"minapp-vscode.wxmlFormatter":"prettyHtml",
    "minapp-vscode.prettyHtml":{
        "printwidth": 100,
        "singLeQuote": false,
        "usePrettier": true,
        "wrapAttributes": true,
        "sortAttributes": true
    }
}

wx的 API没有提示

我安装好插件后 在JS文件用wx的api ,没有提示,需要怎么配置?

wxml代码高亮异常

场景:
含有自闭合的_wxs_标签 <wxs src="xxx" module="yyy" />

异常:
会导致从wxs标签开始之后的代码高亮全部错乱。

复现:
100%复现。

=================

补充:
非自闭合时,<wxs src="xxx" module="yyy" ></wxs>,高亮正常。

wxml 文件高亮问题 以及 自定义组件提示问题

wxml 文件高亮问题

image

wxml 中使用 template 传递参数时 如果中间使用了逗号会导致后面的内容高亮出问题

自定义组件提示问题

定义在 app.json 文件中的组件无提示
定义在页面对应 json 文件中的组件有提示但是没有属性的提示

1

image

wxml 保留属性换行

如何配置格式化 wxml 时保留属性换行

<view
  wx:if="{{true}}"
  bindtap="_tapMe"
/>

vue文件自动加分号

我在开发vue项目时,会自动添加分号,代码格式化配置如下:

"minapp-vscode.disableAutoConfig": true,
    "minapp-vscode.wxmlFormatter": "prettyHtml", //指定格式化工具
    "minapp-vscode.prettyHtml": { //prettyHtml 默认配置
        "useTabs": false,
        "tabWidth": 2,
        "printWidth": 100,
        "singleQuote": false,
        "usePrettier": true,
        "wrapAttributes": false, //设置成 true 强制属性换行
        "sortAttributes": false
    },

我在prettyHtml 中没有找到关闭加分号的选项,是否可以关闭自动加分号

emmet写法无效

image
也无法弹出组件的智能补全,不知道二者是否有关联

版本: 1.13.3
vscode版本:1.34.0 macOS

自定义组件的属性无法补全

只能补全自定义组件的标签,但无法补全自定义组件的属性。代码如下:

<!--index.wxml-->
<view class="container">
  <coms></coms> // 无法提示自定义组件属性❌
</view>

index.json

{
  "usingComponents": {
    "coms": "../../coms"
  }
}
// coms.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    counter: {
      type: String,
      value: 'aaa'
    },
  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})
<!--coms.wxml-->
<text>coms.wxml{{counter}}</text>

coms.json

{
  "component": true,
  "usingComponents": {}
}

Json文件自动补全不受支持吗?

折腾了许久,json文件就是没有自动提示。仔细翻了翻文档好像确实没有介绍json自动补全的。是不支持吗?后续会支持json的补全吗?

wxml格式化

请问这个格式化是调用vscode本身的格式化,还是别的? 我想忽略text标签,一格式化,text全换行了,希望有个配置能设置

.wxml标签名与属性补全失效

刚下载时试了一下是好的,过了段时间,功能失效了,标签名与属性无法补全。期间安装了另一个插件vscode-wechat

支持语言自定义配置

存在一些情况,是通过jsx的方式来写wxml的。这个时候,我就预期在jsx/js文件里,也可以使用这个插件的自动补全功能,可是目前是不支持的。想问下是不是支持语言自定义配置?

wxml 格式化自动在首字符插入分号

VSC 信息

Version: 1.43.0
Commit: 78a4c91400152c0f27ba4d363eb56d2835f9903a
Date: 2020-03-09T19:34:44.548Z
Electron: 7.1.11
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 19.3.0

wxml 文件内容

<view class="comp__profile">
  <image class="img-profile" src="{{ profilePic }}" />
  <text class="text-name">{{ name }}</text>
  <view class="btn-edit" bind:tap="onEdit" wx:if="{{ isLogin }}">
    <text class="iconfont icon-Edit" />
    <text class="btn-text">编辑</text>
  </view>
</view>

Format 后,会在文件首第一行第一列插入 ;

名称要不要改成Miniapp?

我看这个插件是VS Code里小程序插件下载量最大的了,但是感觉叫Minapp怪怪的啊,要不要把名称改成Miniapp?

不知道什么原因导致的、总是没有效果啊

你好、非常感谢贡献这个插件啊哈、但是不知道为什么我安装了这个插件总是感觉没有效果啊、也重启过很多次了还是没有效果、难道是跟系统有关系吗、我用的macos系统

为什么我的wxml会被minapp插件格式化?

如下图这样,只要保存就会自动格式化,全部是tab符的缩进,可我从来没有在vscode或者哪个插件里配置过用tab符缩进,minapp里又没有看到格式化的参数配置,后来发现只要wxml文件的关联设置了就会出现这个问题。
image

支持qq小程序的qml吗?

qq小程序和微信小程序api大同小异。能否支持qq小程序?

或者先简单实现,给个配置项,支持qml后缀的文件

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.