在vue里面使用eval_vue 远程加载sfc组件思路__Vue.js

本文介绍了在Vue项目中如何通过远程加载SFC组件以解决多业务线共同开发的问题。首先,服务端使用vue-template-compiler解析.vue文件,然后客户端通过fetch获取组件配置并渲染。文章详细阐述了服务端解析组件和客户端渲染的过程,包括样式处理和JavaScript执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

在我们的 vue 项目中(特别是后台系统),总会出现一些需要多业务线共同开发同一个项目的场景,如果各业务团队向项目中提供一些公共业务组件,但是这些组件并不能和项目一起打包,因为项目中不能因为某个私有模块的频繁变更而重复构建发布。

^_^不建议在生产环境使用,代码包含eval

思路

在这种场景下我们需要将公共的业务组件部署到服务端,由客户端请求并渲染组件。

服务端解析.vue文件

使用vue-template-compiler 模板解析器,解析SFC(单文件组件)

const compile = require('vue-template-compiler')

// 获取sfc组件的源码

const str = fs.readFileSync(path.resolve(__dirname, `../components/sfc.vue`), 'utf-8')

// vue-loader内置,现在用来解析SFC(单文件组件)

let sfc = compile.parseComponent(str)

// 获取sfc组件配置

let sfcOptions = getComponentOption(sfc)getComponentOption 获取sfc组件配置

import { uuid } from 'utilscore'

import stylus from 'stylus'

import sass from 'sass'

import less from 'less'

const getComponentOption = sfc => {

// 生成data-u-id

const componentId = uuid(8, 16).toLocaleLowerCase()

// 标签添加data-u-id属性

const template = sfc.template ? tagToUuid(sfc.template.content, componentId) : ''

// 转化style(less、sass、stylus)

let styles = []

sfc.styles.forEach(sty => {

switch (sty.lang) {

cas

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值