Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mpvue支持 #444

Closed
wangwei123 opened this issue Aug 21, 2018 · 31 comments
Closed

mpvue支持 #444

wangwei123 opened this issue Aug 21, 2018 · 31 comments
Labels

Comments

@wangwei123
Copy link

  1. 能否支持mpvue呢,看起来mpvue会成为主流
  2. 有个叫touchUI的,组件很丰富,能否参考借鉴一下呢
@zhaohuwei
Copy link

mpvue已经能支持小程序自定义组件,换言之也就支持了vant-weapp。
目前还有少数兼容性问题,其实可以自己解决一下。

@GodStream
Copy link

直接npm安装引入,组件并没有生效

@ruixiu
Copy link

ruixiu commented Aug 24, 2018

touchUI和https://meili.github.io/min/index.html可像,不知道谁抄的谁

@vopdoo
Copy link
Contributor

vopdoo commented Aug 27, 2018

环境

node v8.11.1

npm v6.4.0

重现步骤
  1. 初始化项目

    vue init mpvue/mpvue-quickstart vantweappnotify

    image-20180828112215743

  2. 直接通过 git 下载 Vant Weapp 源代码,并将dist目录拷贝到项目中的static下并重命名为vant

    git clone https://github.com/youzan/vant-weapp.git
  3. 在页面中的main.json 引入组件并在页面中

    {
      "usingComponents": {
        "van-button": "../../static/vant/button/index",
        "van-notify": "../../static/vant/notify/index"
      }
    }
    
    <template>
        <div class="container">
            <van-button type="default" @click="showNotify">测试Notify</van-button>
        </div>
    </template>
    
    <script>
        // import Notify from '../../../static/vant/notify/index';
        export default {
            data() {
                return {}
            },
            methods: {
                showNotify() {
                    console.info('showNotify');
                    // console.info(Notify);
                    // Notify('测试文案...');
                },
            },
            created() {
            }
        }
    </script>
    
    <style scoped>
    
    </style>
    
    
  4. 运行

    npm install
    npm run dev 
    

    微信开发者工具 增加小程序项目 勾选ES6 转 ES5 可以正常运行

    image-20180828114318328

  5. 页面中import notify 之后 命令行报错

    <template>
        <div class="container">
            <van-button type="default" @click="showNotify">测试Notify</van-button>
        </div>
    </template>
    
    <script>
    	// import 之后 编译报错
        import Notify from '../../../static/vant/notify/index';
        export default {
            data() {
                return {}
            },
            methods: {
                showNotify() {
                    console.info('showNotify');
                    // console.info(Notify);
                    // Notify('测试文案...');
                },
            },
            created() {
            }
        }
    </script>
    
    <style scoped>
    
    </style>
    

    image-20180828114630876

    这个错误也不知道怎么解决,请教各位这个错误的具体原因

  6. 修改 static/vant/notify/notify.js 的代码 编译报错消失,但小程序增加报错 Page 注册错误

    const defaultOptions = {
        selector: '#van-notify',
        duration: 3000
    };
    
    export default function Notify(options = {}) {
        const pages = getCurrentPages();
        const ctx = pages[pages.length - 1];
    
        options = Object.assign({}, defaultOptions, parseParam(options));
    
        const el = ctx.selectComponent(options.selector);
        delete options.selector;
    
        if (el) {
            // el.setData({
            //   ...options
            // });
            // 修改成这样 编译报错消失
            el.setData(options);
            el.show();
        }
    }
    
    function parseParam(params = '') {
        return typeof params === 'object' ? params : {text: params};
    }
    
    

    Page 注册错误 Please do not register multiple Pages in pages/index/main.js

    image-20180828115248986

  7. 后面还有问题 到这里就走不下去了

在这里向大家请教一下这个问题,希望能得到产生问题的原因和解决思路

这里有一个git项目地址

https://github.com/vopdoo/mpvuevantweppnotifys

@ldybecklee
Copy link

我写了个wepy版本的vant weapp例子,有兴趣的可以了解下
https://github.com/ldybecklee/wepy-vant-demo

@zhaohuwei
Copy link

@vopdoo 那个是展开对象的语法不支持,写成兼容的语法或者引入loader转换掉。

@vopdoo
Copy link
Contributor

vopdoo commented Aug 28, 2018

@zhaohuwei
我更新了问题的描述,并把(...) 语法修改了,会出现后续的错误

@chenjiahan 可否指导一下这个问题呢

@zhaohuwei
Copy link

@vopdoo 然后这样引入 import Notify from '../../../static/vant/notify/notify';
(这要多谢@chenjiahan 在新版分开写了)

@vopdoo
Copy link
Contributor

vopdoo commented Aug 28, 2018

@zhaohuwei
import Notify from '../../../static/vant/notify/notify'; 就可以了分开了
非常感谢你 我的这个问题 已经解决

@chenjiahan

可以更新一下文档上的说明,可以减少使用者一些弯路

@Rychou
Copy link

Rychou commented Sep 1, 2018

mpvue-vant 在mpvue中无缝接入vant weapp组件库,做的总结。

@maxiangsai
Copy link

动态给vant组件绑定数据不行啊

@rex-zsd
Copy link
Collaborator

rex-zsd commented Sep 28, 2018

@maxiangsai 具体是哪个组件?

@maxiangsai
Copy link

@maxiangsai 具体是哪个组件?

field的value之类的动态绑定失效

@zhaohuwei
Copy link

@maxiangsai 具体是哪个组件?

field的value之类的动态绑定失效

原生是可以动态绑定的,如果用了mpvue,需要自己做change事件处理,赋值给变量。

@nan1010082085
Copy link

mpvue 最新版 不是说项目目录跟小程序一致吗?用的时候在main.json中引用

"usingComponents": {
        "van-row": "../../../static/vant/dist/row/index",
        "van-col": "../../../static/vant/dist/col/index",
        "van-tabbar": "../../../static/vant/dist/tabbar/index",
        "van-tabbar-item": "../../../static/vant/dist/tabbar-item/index",
        "van-icon": "../../../static/vant/dist/icon/index"
    }

@mynameismaosheng
Copy link

mynameismaosheng commented Oct 15, 2018

mpvue-loader 1.1.2
引用Notify
import Notify from '../../static/static/vant/notify/notify'
命令窗口报错
* ../../static/static/vant/notify/notify in ./node_modules/_babel-loader@7.1.5@babel-loader/lib!./node_modules/_mpvue-loader@1.1.4@mpvue-loader/lib/selector.js?type=script&index=0!./src/pages/hall/index.vue
求救
我现在 import 引什么都是这样报错

@rex-zsd
Copy link
Collaborator

rex-zsd commented Oct 16, 2018

尝试了一下mpvue中使用vant-weapp,目前发现几个mpvue的坑:

  1. vant-weapp必须放在static目录下,否则会报各种not defined的错。
  2. 使用vant-weapp组件的外部样式类时必须去掉vue组件style标签的scoped属性,否则外部样式无法起作用。
  3. vant-weapp组件抛出的事件中如果有-,mpvue中无法捕获,目前无解。
  4. vant-weapp表单组件内部有抛出input事件,但是mpvue不支持v-model双向绑定,需要手动监听input事件赋值。

@duxphp
Copy link

duxphp commented Oct 20, 2018

尝试了一下mpvue中使用vant-weapp,目前发现几个mpvue的坑:

  1. vant-weapp必须放在static目录下,否则会报各种not defined的错。
  2. 使用vant-weapp组件的外部样式类时必须去掉vue组件style标签的scoped属性,否则外部样式无法起作用。
  3. vant-weapp组件抛出的事件中如果有-,mpvue中无法捕获,目前无解。
  4. vant-weapp表单组件内部有抛出input事件,但是mpvue不支持v-model双向绑定,需要手动监听input事件赋值。

双向绑定这有有办法处理么?

@rex-zsd
Copy link
Collaborator

rex-zsd commented Oct 22, 2018

@duxphp mpvue现在不支持把v-model映射到原生组件抛出的input事件,所以没办法只能拆开写。

@wkl007
Copy link

wkl007 commented Nov 2, 2018

我这有个mpvue版本的vant weapp例子,有兴趣的可以了解下
https://github.com/wkl007/mpvue-vant-weapp

@1429880240
Copy link

@wkl007 你的config.js那个是什么

@wkl007
Copy link

wkl007 commented Nov 28, 2018

@1429880240 那个只是首页的数据而已

@luyangyanga
Copy link

@vopdoo 我也是这样做的 但是组件就是不生效 没有样式 也没有报错 请问大佬是什么原因啊

@nan1010082085
Copy link

左侧目录中vant-webappui放在static下
image
在每一个页组件中以下结构 man.json 使用
image
//使用
{
"navigationBarTitleText": "首页",
"usingComponents": {
"van-row": "../../../static/vant/dist/row/index",
"van-col": "../../../static/vant/dist/col/index",
"van-tabbar": "../../../static/vant/dist/tabbar/index",
"van-tabbar-item": "../../../static/vant/dist/tabbar-item/index",
"van-icon": "../../../static/vant/dist/icon/index"
}
}

唯一有点尴尬的是这 .json 并没有代码提示 写起来懵比 不是那么流畅

@rex-zsd rex-zsd pinned this issue Dec 26, 2018
@mynameismaosheng
Copy link

左侧目录中vant-webappui放在static下
image
在每一个页组件中以下结构 man.json 使用
image
//使用
{
"navigationBarTitleText": "首页",
"usingComponents": {
"van-row": "../../../static/vant/dist/row/index",
"van-col": "../../../static/vant/dist/col/index",
"van-tabbar": "../../../static/vant/dist/tabbar/index",
"van-tabbar-item": "../../../static/vant/dist/tabbar-item/index",
"van-icon": "../../../static/vant/dist/icon/index"
}
}

唯一有点尴尬的是这 .json 并没有代码提示 写起来懵比 不是那么流畅

json里可以用绝对地址 /static/vant/...
组件内部职能 ../../../static/...

@wangyang0210
Copy link

wangyang0210 commented Feb 28, 2019

mpvue——componets中引入vant组件
https://www.cnblogs.com/wangyang0210/p/10449915.html

mpvue——引入vant组件
https://www.cnblogs.com/wangyang0210/p/10418902.html

都是有效的方法

@hyx0217
Copy link

hyx0217 commented Mar 26, 2019

直接npm安装引入,组件并没有生效

建议使用git clone下来再复制dist到你的目录下。

@afishhhhh
Copy link

mpvue 的事件映射是 click->tap,如果一个 disabled 按钮 @click,还是能触发事件

@kid1412621
Copy link

Notify 组件内部用了小程序的 getCurrentPages 方法, 然而 mpvue 不支持

@wanganxp
Copy link

wanganxp commented Aug 3, 2019

建议改造为uni-app的无dom vue插件,这样就可以全端使用了。现在使用小程序用vant weapp,再编译到h5时,又得换vant ui,太麻烦了,只好弃vant了。

@TrevorYS
Copy link

TrevorYS commented Aug 6, 2019

请问mpvue里面vant怎么转换rpx

@rex-zsd rex-zsd unpinned this issue Jul 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests