首页 > 其他分享 >vue编译器

vue编译器

时间:2024-04-11 13:22:18浏览次数:27  
标签:code const ast 编译器 vue result template import

ast - 编译成代码

import * as path from 'path'
import type { Plugin, ResolvedConfig } from 'vite'
import { NodePath } from '@babel/traverse';
import { JSXElement } from '@babel/types';
import {compile, generate, transform, parse} from "@vue/compiler-dom";


export default function fullImportPlugin () {
  let config: ResolvedConfig
  return <Plugin>{
    name: 'autoCompleteCid',
    transform (code, id) {
      if (!id.endsWith(".vue")) {
        return code;
      }
      const ast = parse(code);
      const template = ast.children.find(item => item["tag"] == "template");
      if (template) {
        const result = compile(template.loc.source, {
          mode: "module",
        });
        console.log("...........");
        // console.log(result.ast)
        transform(result.ast as any, {
          // @ts-ignore
          preTransformNode: (node) => {
            console.log(node);
          }
        });
        const res = generate(result.ast as any, {
          mode: "module",
          filename: path.basename(id),
          prefixIdentifiers: true,
        });
      }

      return code
    }
  }
}

标签:code,const,ast,编译器,vue,result,template,import
From: https://www.cnblogs.com/zhuxiang1633/p/18128887

相关文章

  • Vue2和Vue3的区别
    ①双向数据绑定的原理发生变化Vue2利用defineproperty为每个对象的属性添加监听器,当属性发生变化的时候,自动更新对应的DOM元素  Vue3使用proxy代理技术,代替之前的define方式,代理对象data的所有修改工作Proxy的优势①defineProperty只能监听某个属性,不能对全对象监听②......
  • 基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统(附论文)
    演示视频基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统(附论文),用......
  • 千万不要将centos中python 默认2.7的编译器改为3.x的,会出现File “ usr bin yum“, li
    千万不要将centos中python默认2.7的编译器改为3.x的,在使用yum时,会报各种错,1、File"/usr/bin/yum",line30  exceptKeyboardInterrupt,e:原因是yum按python3.6解析2.7的语法出错了修改/usr/bin/yum文件中的第一行为#!/usr/bin/python2.72、 File"/usr/libexec/url......
  • ssm基于spring和vue开发的web新闻流媒体平台论文
    摘要如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法,必须采用计算机来处理这些信息,因为传统方法对应计算机处......
  • vue 插件 | 自动滚动 vueSeamlessScroll
    1.下载安装npminstallvue-seamless-scroll--save2.引入importvueSeamlessScrollfrom"vue-seamless-scroll";3.注册使用组件<vueSeamlessScroll:class-option='defaultOption':data="activeData"style="height:194px;">......
  • Vue相关原理
    1、VUE2和VUE3对比响应式区别vue2的响应式原理是利⽤es5的⼀个API,Object.defineProperty()对数据进⾏劫持结合发布订阅模式的⽅式来实现的。vue3中使⽤了es6的proxyAPI对数据代理,通过reactive()函数给每⼀个对象都包⼀层Proxy,通过Proxy监听属性的变化,从⽽实现......
  • vue2和vue3的js格式
    vue2<script>//exportdefault的作用是开放里定义的数据和方法exportdefault{name:'App',//和标签中绑定数据放在data(){}里data(){return{name:'张三',age:18,tel:'13888888888'}},......
  • VUE实现 上滑加载更多
    实现HTML5页面上滑加载更多功能的方案:1.页面结构<divid="content-container"><divclass="item"v-for="(item,index)initems":key="index"><!--在这里渲染单个数据项的内容--></div></div><!--加载提示区域--......
  • Vuex和Pinia
    一、区别     pinia它没有mutation,他只有state,getters,action【同步、异步】使用他来修改state数据。pinia默认也是存入内存中,如果需要使用本地存储,配置上比vuex麻烦一点。pinia语法比vuex更容易理解和使用,灵活。pinia没有modules配置,没一个独立的仓库,都是definSto......
  • VUE - 使用h函数创建虚拟节点
    VUE-使用h函数创建虚拟节点 1. 如在 antd 的 notification 组件中使用 参考文档:https://1x.antdv.com/components/notification-cn/leth=this.$createElement;that.$notification.error({message:'上传提示',descrip......