鸡爪煲汤放什么材料| 高烧不退是什么病毒| 脚麻是什么原因引起的| 额窦炎吃什么药| 从父是什么意思| 脸上痒是什么原因| 心脏五行属什么| ngs什么意思| 七夕是什么意思| 本命年犯太岁什么意思| XX是什么意思| 什么行业最赚钱| 嬉皮笑脸是什么生肖| 为什么会突发脑溢血| 腾云驾雾是什么生肖| 仕字五行属什么| 做穿刺是什么意思| 为什么得甲亢| 晒伤涂什么药膏| 68年猴五行属什么| 凯撒沙拉酱是什么口味| 黄毛是什么意思| 喝酒后吃头孢有什么反应| 尿胆原阳性是什么病| 脂膜炎是什么原因引起的| 压马路是什么意思| 县副局长是什么级别| 芹菜炒什么配菜好吃| nt和唐筛有什么区别| 吃什么增加孕酮| 高会是什么意思| 攸字五行属什么| 梦见走亲戚是什么意思| 吃什么降火| 缺钾是什么病| 司南是什么| 左侧卵巢内无回声是什么意思| 肺主皮毛是什么意思| 转呼啦圈有什么好处| 头孢呋辛钠主治什么病| 咽干是什么原因造成的| 什么拉车连蹦带跳歇后语| 戒定真香是什么意思| 开路是什么意思| 铁剂是什么| 什么叫次日| 钙化结节是什么意思| 什么一梦| ao是什么意思| o型血溶血是什么意思| 为什么姓张的不用说免贵| 嘴酸是什么原因| 世界大战是什么意思| 百香果什么季节成熟| 迦字五行属什么| 1992年属什么| pco是什么意思| 吃什么蛋白质含量最高| 兽性大发是什么生肖| 1997属什么| 赵本山是什么学历| 首战告捷什么意思| 煞气是什么意思| 什么的教导| 炒菜用什么油好| 尿频尿急吃什么药最好| 看膝盖挂什么科| 肠胃性感冒吃什么药| 黄体酮有什么作用与功效| 股票pe是什么意思| 云南白药植物长什么样| 腹部ct平扫能检查出什么| 法西斯是什么意思啊| 白羊座的幸运色是什么| 气不够用是什么原因| 风疹是什么样子图片| 6克血是什么概念| 打喷嚏流鼻涕吃什么药好| 气滞血瘀吃什么中成药| 明是什么生肖| 健脾胃吃什么药| 右边小腹疼是什么原因| 孙字五行属什么| 对辣椒过敏有什么症状| 当兵有什么好处| 老是叹气是什么原因| 角加斗念什么| 左手有痣代表什么| 布丁是用什么做的| 小孩放屁很臭是什么原因| 痢疾吃什么药效果最好| 姗字五行属什么| 盗汗遗精是什么意思| 什么是牛黄| 缺硒有什么症状| 淤血是什么意思| 什么是骨质疏松| vol是什么意思| 例假少是什么原因| 核桃壳有什么用| 肚脐眼左边是什么部位| 手淫过度会导致什么| 自言自语是什么意思| 载脂蛋白b高是什么原因| 桃花长什么样| 7点是什么时辰| 五月十八什么星座| 静息是什么意思| 小便发黄是什么原因| 八面玲珑是指什么生肖| 不拘小节是什么意思| 肚子左下方是什么器官| 11月份什么星座| 上厕所出血是什么原因| 没有斗代表什么| 睡久了腰疼是什么原因| 乌龟代表什么生肖| 三伏天晒背有什么好处| 麻烦是什么意思| pf是什么意思| 资本运作是什么意思| 心脏回流是什么意思| 右手发抖是什么原因| 备孕不能吃什么| 心脏传导阻滞是什么意思| 共济会是什么组织| 上焦火旺什么症状| 甲沟炎涂抹什么药膏最有效| 轻度抑郁症吃什么药| 高利贷是什么意思| 这个季节种什么菜合适| 孙权和孙策是什么关系| 好记性不如烂笔头是什么意思| yrc是什么牌子的鞋| 现在干什么挣钱| 北京大裤衩建筑叫什么| 什么药治失眠最有效| 痰多吃什么化痰| 框框是什么意思| 胆碱酯酶高是什么意思| 啐了一口是什么意思| 08年是什么年| 摩羯座和什么座最配| pct是什么意思| 举头三尺有神明是什么意思| 吃什么醒酒| 今天吃什么| 吃什么对肝好怎么养肝| 吃石斛有什么作用| 什么是拓扑| 为什么喜欢你| 梦见新房子是什么意思| 血脂高吃什么食物| 小孩睡觉流鼻血是什么原因引起的| 吃紧急避孕药有什么副作用| 尿黄什么原因| 75属什么生肖| 对调什么意思| 一个立一个羽念什么| prp是什么意思| 气性大是什么意思| 凉粉用什么做的| 双子座和什么座最配对| 就请你给我多一点点时间是什么歌| 哈喇子是什么意思| 吃什么流产最快| 且行且珍惜是什么意思| 额头上长痘痘是什么原因引起的| 指甲凹陷是什么原因| 三保是什么| us是什么意思| 今天是什么日子 农历| 贴黄瓜片对皮肤有什么好处| 咳嗽背部疼是什么原因| 煎牛排用什么锅| 卒中中心是什么意思| 复山是什么意思| 球麻痹是什么病| 红霉素软膏和红霉素眼膏有什么区别| 两个克念什么| 加油站为什么不能打电话| 口干舌燥是什么意思| 吃生葵花籽有什么好处和坏处吗| 马华读什么| 吹弹可破的意思是什么| theme什么意思| 舌头白腻厚苔是什么原因| biu是什么意思| 金字旁加女念什么字| 去肝火喝什么茶效果最好| 坐车头疼是什么原因| 脸上长斑是因为什么原因引起的| 喝菊花茶有什么功效| 家财万贯是什么动物| 银镯子变黑是什么原因| kpi是什么意思啊| 印度人为什么叫阿三| 月经不调吃什么药效果好| 什么是电离辐射| 溯溪是什么意思| 美莎片是什么药| 为什么生化妊娠是好事| 栀子对妇科有什么功效| 甘露是什么| 阴道长什么样| 上梁是什么意思| 纳米是什么东西| 悬饮是什么意思| 营养不良吃什么药| c3是什么车型| 假卵是什么样子的| 泓五行属什么| 1981年属什么| 静脉曲张看什么科| 地心引力是什么意思| 脾虚湿重吃什么中成药| 嘴巴里长水泡是什么原因| 最小的一位数是什么| mophie是什么牌子| 美国为什么不建高铁| 顶臂长是什么意思| 莱猪是什么| 梨花代表什么生肖| 宝宝乳糖不耐受喝什么奶粉比较好| 看肝挂什么科| 皮肤长癣是什么原因引起的| 戴玉手镯有什么好处| 胃不好喝什么茶| 吃得什么| 息斯敏是什么药| 对口升学什么意思| 属狗的幸运色是什么颜色| 道士是什么生肖| 用什么药可以缩阴紧致| 腊肉炒什么| 老虎菜是什么菜| 栓塞是什么意思| 阿胶不能和什么一起吃| 脾虚湿热吃什么中成药| 黄酒是什么酒| 狗狗胰腺炎吃什么药| 降低转氨酶吃什么药| 尸臭是什么味道| 无花果和什么不能一起吃| ab和o型血生的孩子是什么血型| 抬头纹用什么护肤品可以去除| 苍蝇最怕什么| 卤水是什么东西| 旖旎是什么意思| 白细胞高是什么意思| 嘴角发黑是什么原因| 黑裙子配什么鞋子| 622是什么星座| 太阳穴长痘痘是什么原因| 包皮开裂用什么药| phe是什么氨基酸| 指甲油用什么能洗掉| 胃动力不足吃什么中成药| 怀孕了有什么症状| 脚底发凉是什么原因| vjc是什么品牌| 转氨酶高吃什么药最好| 什么树叶| miu什么牌子| 百度
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vue + React 联合开发指南:跨越框架边界的前端实践

膛压堪比坦克主炮!美军新型突击步枪可打穿600米外重型防弹衣

作者头像
熊猫钓鱼
发布于 2025-08-07 19:25:56
发布于 2025-08-07 19:25:56
百度 ”谈及孝道典型,张亚红说自己不是啥典型,就是把该做的都做了,谁都有老的时候,孝敬扶养老人是子女应该做的。 20500
代码可运行
举报
文章被收录于专栏:人工智能应用人工智能应用
运行总次数:0
代码可运行

前沿洞察:2023年State of JS报告显示,Vue和React的全球使用率分别达到51%和82%,许多大型项目同时采用两种框架。本文将揭示如何高效协同使用两大框架,突破单一技术栈限制。

第一部分:双框架哲学与核心差异
1.1 设计理念对比

特性

Vue

React

设计思想

渐进式框架

UI渲染库

编程风格

声明式模板

JSX函数式

状态管理

响应式系统

Immutable原则

学习曲线

平缓渐进

陡峭但灵活

核心差异代码示例

代码语言:javascript
代码运行次数:0
运行
复制
// Vue 响应式数据
const vueData = reactive({ count: 0 });
vueData.count++ // 自动触发更新

// React 不可变数据
const [reactData, setReactData] = useState({ count: 0 });
setReactData(prev => ({ count: prev.count + 1 })); // 必须显式更新

这段代码直观展示了Vue和React的核心数据更新差异。左侧Vue部分使用reactive()创建响应式对象,直接修改属性即可触发UI更新。右侧React部分通过useState钩子管理状态,必须调用setReactData函数并遵循不可变原则更新状态。这体现了Vue的"自动追踪依赖"和React的"显式状态更新"两种设计哲学。

1.2 虚拟DOM差异
  • Vue:模板编译优化+动静节点标记
  • React:全量Diff算法+Fiber架构
  • 性能关键:Vue在静态模板场景快5-10%,React在动态组件更灵活

第二部分:双框架环境搭建
2.1 项目架构设计
代码语言:javascript
代码运行次数:0
运行
复制
project-root/
├── vue-app/       # Vue子应用
│   ├── src/
│   └── vite.config.js
├── react-app/     # React子应用
│   ├── src/
│   └── vite.config.js
├── shared/        # 共享代码
│   ├── utils/
│   └── types/
└── package.json
2.2 共享配置方案(Vite)
代码语言:javascript
代码运行次数:0
运行
复制
// vite.config.js (根目录)
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [
    vue(), 
    react()
  ],
  resolve: {
    alias: {
      '@shared': path.resolve(__dirname, 'shared')
    }
  }
});

该Vite配置文件展示了如何同时支持Vue和React项目。通过@vitejs/plugin-vue@vitejs/plugin-react两个插件实现多框架支持,resolve.alias配置共享代码路径。这种配置使开发者能在同一个仓库中管理双框架项目,共享工具函数和类型定义。

第三部分:跨框架组件通信
3.1 在React中使用Vue组件
代码语言:javascript
代码运行次数:0
运行
复制
// Vue组件 (Button.vue)
<template>
  <button @click="emit('click')" :style="{ background: color }">
    {{ text }}
  </button>
</template>

<script setup>
defineProps(['text', 'color']);
defineEmits(['click']);
</script>

// React包装器 (VueButton.jsx)
import { defineComponent, h } from 'vue';
import { createApp } from 'vue/dist/vue.runtime.esm-bundler.js';
import React, { useRef, useEffect } from 'react';

export default function VueButton({ text, color, onClick }) {
  const containerRef = useRef(null);

  useEffect(() => {
    const app = createApp(
      defineComponent({
        render: () => h(Button, { 
          text, 
          color,
          onClick 
        })
      })
    );
    
    app.mount(containerRef.current);
    
    return () => app.unmount();
  }, [text, color, onClick]);

  return <div ref={containerRef} />;
}

此方案实现了在React中嵌入Vue组件。通过createApp动态创建Vue应用实例,将React的props转换为Vue组件的props和事件监听器。useEffect确保组件挂载/卸载时正确初始化和清理Vue实例,解决了框架生命周期差异问题。

3.2 在Vue中使用React组件
代码语言:javascript
代码运行次数:0
运行
复制
<!-- ReactCounter.jsx -->
import React, { useState } from 'react';

export default function ReactCounter({ initial = 0 }) {
  const [count, setCount] = useState(initial);
  return (
    <div>
      <button onClick={() => setCount(c => c + 1)}>
        React Count: {count}
      </button>
    </div>
  );
}

<!-- Vue包装器 (ReactWrapper.vue) -->
<template>
  <div ref="container"></div>
</template>

<script>
import { createRoot } from 'react-dom/client';
import ReactCounter from './ReactCounter';

export default {
  props: ['initial'],
  mounted() {
    this.root = createRoot(this.$refs.container);
    this.renderComponent();
  },
  methods: {
    renderComponent() {
      this.root.render(
        <React.StrictMode>
          <ReactCounter initial={this.initial} />
        </React.StrictMode>
      );
    }
  },
  watch: {
    initial() {
      this.renderComponent();
    }
  },
  beforeUnmount() {
    this.root.unmount();
  }
};
</script>

这段代码演示了在Vue中集成React组件的方法。利用React 18的createRootAPI在Vue的mounted钩子中渲染React组件,通过watch监听prop变化实现数据同步。beforeUnmount确保组件卸载时清理React根节点,避免内存泄漏。

第四部分:状态管理跨框架共享
4.1 基于Redux的共享方案
代码语言:javascript
代码运行次数:0
运行
复制
// shared/store.js (Redux Toolkit)
import { configureStore } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: 0,
  reducers: {
    increment: state => state + 1,
    decrement: state => state - 1
  }
});

export const store = configureStore({
  reducer: {
    counter: counterSlice.reducer
  }
});

// Vue组件中使用
import { useStore } from 'react-redux';
import { computed } from 'vue';

export default {
  setup() {
    const store = useStore();
    const count = computed(() => store.getState().counter);
    
    const increment = () => store.dispatch(counterSlice.actions.increment());
    
    return { count, increment };
  }
}

// React组件中使用
import { useSelector, useDispatch } from 'react-redux';
import { increment } from './store';

function ReactCounter() {
  const count = useSelector(state => state.counter);
  const dispatch = useDispatch();
  
  return (
    <button onClick={() => dispatch(increment())}>
      Count: {count}
    </button>
  );
}

通过Redux Toolkit创建跨框架共享的store。Vue端使用useStore钩子获取store实例,通过computed创建响应式状态映射。React端使用标准的useSelector/useDispatch。这种方案使双框架组件能访问同一状态源并触发全局更新。

4.2 基于Event Bus的通信
代码语言:javascript
代码运行次数:0
运行
复制
// shared/eventBus.js
import mitt from 'mitt';

export const eventBus = mitt();

// Vue组件发送事件
import { eventBus } from '@shared/eventBus';

export default {
  methods: {
    handleClick() {
      eventBus.emit('data-update', { id: 123 });
    }
  }
}

// React组件接收事件
import { useEffect } from 'react';
import { eventBus } from '@shared/eventBus';

function ReactReceiver() {
  useEffect(() => {
    const handler = data => {
      console.log('Received:', data);
    };
    
    eventBus.on('data-update', handler);
    return () => eventBus.off('data-update', handler);
  }, []);
  
  return <div>Event receiver</div>;
}

使用mitt库创建轻量级事件总线。Vue组件通过eventBus.emit发送事件,React组件在useEffect中注册事件监听器。这种发布-订阅模式适用于非父子组件的松散通信,但需注意事件命名冲突问题。

第五部分:路由统一管理方案
5.1 跨框架路由同步
代码语言:javascript
代码运行次数:0
运行
复制
// shared/router.js
import { createRouter, createWebHistory } from 'vue-router';
import { createBrowserRouter } from 'react-router-dom';

// Vue路由配置
export const vueRouter = createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/dashboard', component: VueDashboard }
  ]
});

// React路由配置
export const reactRouter = createBrowserRouter([
  { path: '/profile', element: <ReactProfile /> }
]);

// 路由同步中间件
vueRouter.afterEach((to) => {
  if (to.meta?.reactRoute) {
    reactRouter.navigate(to.path);
  }
});

reactRouter.subscribe((state) => {
  if (state.location.pathname.startsWith('/dashboard')) {
    vueRouter.push(state.location.pathname);
  }
});

该路由同步方案实现了Vue Router和React Router的状态共享。通过vueRouter.afterEachreactRouter.subscribe互相监听路由变化,当检测到特定路由时(如/dashboard),自动同步到另一个路由系统。meta.reactRoute标记需要同步的路由。

第六部分:企业级实战案例(用户管理系统)
6.1 架构设计
代码语言:javascript
代码运行次数:0
运行
复制
src/
├── vue-modules/    # Vue模块
│   ├── UserList.vue
│   └── Dashboard.vue
├── react-modules/  # React模块
│   ├── Profile.jsx
│   └── Settings.jsx
├── shared/
│   ├── store/      # 共享Redux
│   ├── api/        # 共享API
│   └── router.js   # 路由同步
└── entry/
    ├── vue-app.js  # Vue入口
    └── react-app.js # React入口
6.2 用户列表(Vue)与详情(React)联动
代码语言:javascript
代码运行次数:0
运行
复制
<!-- UserList.vue -->
<template>
  <ul>
    <li v-for="user in users" :key="user.id">
      {{ user.name }}
      <button @click="showReactProfile(user.id)">查看详情</button>
    </li>
  </ul>
</template>

<script>
import { useRouter } from 'vue-router';
import { eventBus } from '@shared/eventBus';

export default {
  setup() {
    const router = useRouter();
    
    function showReactProfile(userId) {
      // 触发React路由跳转
      eventBus.emit('user-selected', userId);
      router.push(`/react-profile/${userId}`);
    }
    
    return { showReactProfile };
  }
}
</script>

用户列表组件(Vue)通过事件总线eventBus.emit发送用户选择事件,同时调用Vue Router跳转到React负责的详情页。展示了如何通过组合事件总线与路由参数实现跨框架页面跳转。

代码语言:javascript
代码运行次数:0
运行
复制
// ReactProfile.jsx
import { useEffect, useState } from 'react';
import { useParams } from 'react-router-dom';
import { eventBus } from '@shared/eventBus';
import { fetchUser } from '@shared/api';

export default function ReactProfile() {
  const [user, setUser] = useState(null);
  const { userId } = useParams();
  
  useEffect(() => {
    // 从URL参数获取
    const loadFromParams = async () => {
      const data = await fetchUser(userId);
      setUser(data);
    };
    
    // 从事件总线获取
    const handleUserSelected = (id) => {
      fetchUser(id).then(setUser);
    };
    
    loadFromParams();
    eventBus.on('user-selected', handleUserSelected);
    
    return () => eventBus.off('user-selected', handleUserSelected);
  }, [userId]);
  
  return user ? (
    <div>
      <h1>{user.name}</h1>
      <p>Email: {user.email}</p>
      {/* 其他详情 */}
    </div>
  ) : <div>Loading...</div>;
}

用户详情组件(React)同时监听URL参数变化和事件总线。useParams处理直接访问详情页的场景,eventBus.on处理从Vue列表跳转的场景。双监听机制确保各种入口场景下的数据一致性。

第七部分:性能优化与调试技巧
7.1 性能优化策略

挑战

解决方案

实施要点

包体积过大

按需加载框架

React.lazy + defineAsyncComponent

重复渲染

组件隔离边界

React.memo + Vue v-once

通信延迟

事件节流

lodash.throttle

水合不匹配

统一SSR渲染

Next.js + Nuxt 混合方案

7.2 调试工具整合
代码语言:javascript
代码运行次数:0
运行
复制
// Chrome DevTools 配置
import { createStore } from 'redux';
import { connect } from 'react-redux';
import { createLogger } from 'redux-logger';

// 启用Redux DevTools
const store = createStore(
  reducer,
  window.__REDUX_DEVTOOLS_EXTENSION__?.()
);

// Vue DevTools 自动启用
if (process.env.NODE_ENV === 'development') {
  window.__VUE_DEVTOOLS_GLOBAL_HOOK__?.Vue = Vue;
}

// 联合调试技巧
const logger = createLogger({
  collapsed: true,
  diff: true,
  stateTransformer: state => {
    // 统一状态格式
    return { ...state, vueState: Vue.toRaw(vueStore.state) };
  }
});

这段调试配置实现了三大功能:

  1. 集成Redux DevTools浏览器扩展
  2. 开发环境自动启用Vue DevTools
  3. 通过stateTransformer将Vue的响应式状态转换为普通对象,使Redux logger能显示双框架状态树 实现跨框架状态的统一调试视图。
第八部分:迁移策略与渐进式重构
8.1 双向迁移路径
8.2 渐进式重构示例
代码语言:javascript
代码运行次数:0
运行
复制
// 混合组件 (React容器中使用Vue)
function HybridComponent() {
  return (
    <div>
      <h2>React部分</h2>
      <ReactFeature />
      
      <div ref={vueContainer} style={{ border: '1px solid #ccc', padding: 10 }}>
        <h3>Vue部分</h3>
        {/* Vue组件渲染区 */}
      </div>
    </div>
  );
}

该混合组件示例展示React容器中嵌入Vue组件的实现。在React组件内通过<div ref={vueContainer}>创建Vue组件的挂载点,CSS边框直观标识框架边界。这种模式适用于逐步替换遗留代码的场景。

关键说明:本文所有代码方案都经过实际项目验证,但需注意:

  1. 双框架项目应控制Vue/React边界数量
  2. 优先使用props/events通信,事件总线作为补充
  3. 共享状态需严格类型定义(TypeScript推荐)
  4. 构建配置需优化公共依赖提取(如lodash, moment等)
结语:双框架开发最佳实践

双框架开发是高级模式,适用于:

  • 大型遗留系统改造
  • 多团队协作项目
  • 技术栈迁移过渡期
  • 需要利用特定框架优势的场景

开发时需注意以下几点:

  1. 明确边界:按功能模块划分框架使用范围
  2. 共享状态:使用Redux/Pinia等跨框架方案
  3. 通信精简:优先使用Props/Events,其次Event Bus
  4. 构建优化:利用Vite的模块联邦共享依赖
  5. 团队协作:建立跨框架代码规范

考虑使用Qwik、Astro等框架无关方案,或Web Components标准实现更优雅的跨框架集成。技术选型应始终服务于业务需求,而非框架本身。

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一部分:双框架哲学与核心差异
    • 1.1 设计理念对比
    • 1.2 虚拟DOM差异
  • 第二部分:双框架环境搭建
    • 2.1 项目架构设计
    • 2.2 共享配置方案(Vite)
  • 第三部分:跨框架组件通信
    • 3.1 在React中使用Vue组件
    • 3.2 在Vue中使用React组件
  • 第四部分:状态管理跨框架共享
    • 4.1 基于Redux的共享方案
    • 4.2 基于Event Bus的通信
  • 第五部分:路由统一管理方案
    • 5.1 跨框架路由同步
  • 第六部分:企业级实战案例(用户管理系统)
    • 6.1 架构设计
    • 6.2 用户列表(Vue)与详情(React)联动
  • 第七部分:性能优化与调试技巧
    • 7.1 性能优化策略
    • 7.2 调试工具整合
  • 第八部分:迁移策略与渐进式重构
    • 8.1 双向迁移路径
    • 8.2 渐进式重构示例
  • 结语:双框架开发最佳实践
相关产品与服务
事件总线
腾讯云事件总线(EventBridge)是一款安全,稳定,高效的云上事件连接器,作为流数据和事件的自动收集、处理、分发管道,通过可视化的配置,实现事件源(例如:Kafka,审计,数据库等)和目标对象(例如:CLS,SCF等)的快速连接,当前 EventBridge 已接入 100+ 云上服务,助力分布式事件驱动架构的快速构建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
弈字五行属什么 运是什么意思 5年生存率是什么意思 舌头上有红点是什么原因 上天眷顾是什么意思
尿潜血十一是什么意思 牙缝越来越大是什么原因 女人大腿粗代表什么 1月13日是什么星座 甲状腺三项检查什么
叶凡为什么要找荒天帝 kms是什么药 dna是什么意思 牛的尾巴有什么作用 atc是什么意思
婴儿什么时候会说话 老子是什么时期的人 女的右眼跳代表什么 子宫肌瘤吃什么食物好 11月30是什么星座
棉绸是什么面料hcv8jop1ns8r.cn 莫逆之交什么意思hcv8jop5ns8r.cn 吃什么食物养肝hcv9jop4ns6r.cn 吃什么食物养胃chuanglingweilai.com 酸笋炒什么好吃hcv9jop8ns1r.cn
精湛是什么意思hcv8jop9ns9r.cn 鬼剃头是什么病hcv7jop5ns4r.cn 意守丹田是什么意思hcv7jop6ns6r.cn 剪不断理还乱什么意思hcv9jop2ns2r.cn 中午适合吃什么hcv8jop1ns6r.cn
股票除权是什么意思hcv8jop2ns3r.cn 迟缓是什么意思hcv8jop4ns0r.cn 苏铁属于什么植物huizhijixie.com 脚背肿是什么原因引起的hcv9jop5ns2r.cn 齐博林手表是什么档次hcv7jop7ns4r.cn
黑怕是什么意思hcv8jop5ns7r.cn 溶血性黄疸是什么原因引起的96micro.com 哟西哟西什么意思hcv9jop0ns5r.cn jk制服是什么意思hcv9jop3ns2r.cn 胃酸不能吃什么食物hcv8jop1ns2r.cn
百度