angular 中混用vue解决方案

1 篇文章 0 订阅
1 篇文章 0 订阅

使用vue2

关键技术点:

web component

vue component

参考文档

https://blog.enginaar.com/vue-angular-together-in-one-app/

使用vue3

注意:

  • 现行vue3版本不支持 web component (vue3 2.x)
  • vue的相关特性如事件、双向绑定等特性无法使用vue组件时直接用,需要相关处理放在vue组件内部完成
直接引入文件方式
  1. 在angular 项目中找到 index.html 文件,将需要引入的vue 组件的js和css 引入
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <!-- import style -->
  <link
    rel="stylesheet"
    href="https://fastly.jsdelivr.net/npm/vant@3/lib/index.css"
  />

  <!-- import script -->
  <script src="//unpkg.com/vue@next"></script>
  <script src="https://fastly.jsdelivr.net/npm/vant@3/lib/vant.min.js"></script>
</head>
<body >
  <app-root ></app-root>
</body>
</html>

  1. 在angular 项目中 @NgModule 制定 schemas: [CUSTOM_ELEMENTS_SCHEMA]
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

@NgModule({
  schemas:[CUSTOM_ELEMENTS_SCHEMA],
 declarations:[]
 })
 

3、使用vue 组件

html 文件

<div class="homeImgDiv" >
  <img src="../../../assets/default/progress.png">
  <div id="defaultCp">
    <van-button type="primary">Primary</van-button>
    <van-password-input style="width: 250px" v-bind:value="value"
                        v-bind:show="showKeyboard"
                        v-bind:focused="showKeyboard"
                        v-on:focus="onblur"></van-password-input>
    <van-number-keyboard
      v-bind:value="value"
      v-bind:show="showKeyboard"
    ></van-number-keyboard>
  </div>

</div>

ts文件


// 添加 Vue 的声明
declare var Vue: any;

export class DefaultComponent implements OnInit {

  constructor() {
  }

  ngOnInit(): void {
    
    // 关键代码
    Vue.createApp({
    }).use(vueComponent) // 注册 vue 组件
      .mount('#defaultCp')

  }

}

npm 方式
  1. 将vue 组件打包成umd 格式的包
  2. 在webpack配置中通过 resolver 引入
  3. 在 angular 的ngModule 中添加 CUSTOM_ELEMENTS_SCHEMA
  4. 通过require 或 import 使用
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值