当前位置: 首页 > news >正文

跟着AI学vue第九章

第九章:Vue 生态与跨端开发

1. 深入探索 Vue 生态工具

Vue 生态就像是一个热闹的“软件小镇”,里面有各种各样的工具和资源,能帮助你把 Vue 项目打造得更好。

Vue CLI 高级用法

Vue CLI 就像是小镇里的“建筑规划师”,一开始它能帮你快速搭建项目框架。但它还有很多高级功能,比如插件管理。

想象你要给房子添加一个新的“功能房间”,在项目里就是添加新的功能模块。比如你想给项目加上 ESLint 代码检查功能,让代码更规范。在项目根目录下,你可以用命令告诉 Vue CLI 来添加这个“房间”:

vue add eslint

运行这个命令后,Vue CLI 就会自动下载 ESLint 相关的依赖,并且配置好项目里的 ESLint 规则,就像规划师按照你的要求把新房间设计并建造好。

Vue Test Utils 进行组件测试

开发代码就像制造产品,你得确保每个“零件”(组件)都能正常工作。Vue Test Utils 就是“质量检测员”,专门检查组件的功能。

比如有一个简单的按钮组件 MyButton.vue

<template>
  <button @click="handleClick">{{ label }}</button>
</template>

<script setup>
import { ref } from 'vue';
const props = defineProps({
  label: {
    type: String,
    default: 'Click me'
  }
});
const handleClick = () => {
  console.log('Button clicked');
};
</script>

现在用 Vue Test Utils 来测试这个按钮点击功能是否正常:

import { mount } from '@vue/test-utils';
import MyButton from './MyButton.vue';

describe('MyButton', () => {
  it('should call handleClick when clicked', () => {
    // 挂载组件
    const wrapper = mount(MyButton);
    // 监视 handleClick 方法
    const spy = jest.spyOn(wrapper.vm, 'handleClick');
    // 触发按钮点击事件
    wrapper.find('button').trigger('click');
    // 检查 handleClick 方法是否被调用
    expect(spy).toHaveBeenCalled();
  });
});

在这个测试里,我们用 mount 把组件“安装”好,用 jest.spyOn 盯着 handleClick 方法,然后模拟点击按钮,最后检查这个方法是不是真的被调用了。

2. 跨端开发实践

跨端开发就像是让一个演员能在不同的舞台(平台)上表演,让你的应用可以在网页、手机 APP 等多个平台运行。

Vue + Taro 开发多端应用

Taro 就像是一个“语言翻译官”,能把你用 Vue 写的代码翻译成不同平台能懂的“语言”。

首先,你得安装 Taro 的“翻译工具”:

npm install -g @tarojs/cli

然后创建一个新的项目:

taro init my-taro-vue-project --template vue3

在项目里创建一个简单的页面组件 index.vue

<template>
  <view>
    <text>{{ message }}</text>
    <button @click="changeMessage">Change Message</button>
  </view>
</template>

<script setup>
import { ref } from 'vue';
const message = ref('Hello, Taro!');
const changeMessage = () => {
  message.value = 'Message changed!';
};
</script>

最后,用 Taro 把代码“翻译”成不同平台的代码:

# 编译成 H5 代码
taro build --type h5 --watch
# 编译成微信小程序代码
taro build --type weapp --watch

这样,同样的代码就能在 H5 网页和微信小程序上运行了。

Vue + NativeScript 开发原生 APP

NativeScript 就像是一个神奇的“变身器”,能把 Vue 代码变成原生的手机 APP,让 APP 有和原生应用一样的性能和体验。

先安装 NativeScript 的“变身工具”:

npm install -g nativescript

创建一个新的 NativeScript + Vue 项目:

ns create my-vue-native-app --template @nativescript/template-vue

app/components/HelloWorld.vue 组件里写点代码:

<template>
  <Page>
    <StackLayout>
      <Label :text="message" />
      <Button text="Click me" @tap="changeMessage" />
    </StackLayout>
  </Page>
</template>

<script setup>
import { ref } from 'vue';
const message = ref('Hello from NativeScript + Vue!');
const changeMessage = () => {
  message.value = 'Button clicked!';
};
</script>

运行命令在模拟器或真机上运行 APP:

ns run ios # 运行 iOS 模拟器
ns run android # 运行 Android 模拟器

第九阶段:Vue 前沿技术与研究

1. Vue 3 新特性深入研究

Vue 3 就像是一辆新升级的跑车,有很多新的强大功能。

Composition API 高级应用

Composition API 能让你把相关的代码逻辑“打包”在一起,就像把工具分类放在不同的盒子里,方便管理和复用。

比如你有一个计数器和一个定时器的功能,用 Composition API 可以这样写:

<template>
  <div>
    <p>Count: {{ count }}</p>
    <p>Time: {{ time }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue';

// 计数器逻辑
const count = ref(0);
const increment = () => {
  count.value++;
};

// 定时器逻辑
const time = ref(new Date().toLocaleTimeString());
let intervalId;
onMounted(() => {
  intervalId = setInterval(() => {
    time.value = new Date().toLocaleTimeString();
  }, 1000);
});
onUnmounted(() => {
  clearInterval(intervalId);
});
</script>

这里把计数器和定时器的逻辑分开写,以后如果要复用其中一个功能,直接拿对应的代码块就行。

Suspense 和 Teleport 的应用

Suspense 就像是餐厅的“餐前小零食”,在异步组件加载时,先给用户显示一个提示,等组件加载好再显示真正的内容。

比如有一个异步组件 AsyncComponent.vue

<template>
  <div>Async Component</div>
</template>

<script setup>
import { onMounted, ref } from 'vue';
const isLoading = ref(true);
onMounted(() => {
  setTimeout(() => {
    isLoading.value = false;
  }, 2000);
});
</script>

在父组件里用 Suspense 包裹这个异步组件:

<template>
  <div>
    <Suspense>
      <template #fallback>
        <p>Loading...</p>
      </template>
      <AsyncComponent />
    </Suspense>
  </div>
</template>

<script setup>
import AsyncComponent from './AsyncComponent.vue';
</script>

Teleport 就像是一个“传送门”,能把组件里的内容传送到 DOM 树的其他位置。

比如有一个模态框组件 Modal.vue

<template>
  <teleport to="body">
    <div class="modal" v-if="isOpen">
      <div class="modal-content">
        <h2>Modal Title</h2>
        <p>Modal content...</p>
        <button @click="isOpen = false">Close</button>
      </div>
    </div>
  </teleport>
</template>

<script setup>
import { ref } from 'vue';
const isOpen = ref(false);
const openModal = () => {
  isOpen.value = true;
};
</script>

在父组件里调用这个模态框:

<template>
  <div>
    <button @click="openModal">Open Modal</button>
    <Modal />
  </div>
</template>

<script setup>
import Modal from './Modal.vue';
</script>
2. 参与开源项目与技术分享

参与开源项目就像是加入一个大型的团队游戏,你可以和全球的开发者一起合作,为项目贡献自己的力量。你可以在 GitHub 上找到喜欢的 Vue 开源项目,比如一些组件库或者工具,然后看看有没有适合自己的任务,比如修复一个小 bug 或者添加一个新功能。

技术分享就像是把你在游戏里的经验和技巧告诉其他玩家。你可以在博客、论坛或者线下活动中分享自己在 Vue 开发中的经验、遇到的问题和解决方案等。这样不仅能帮助其他开发者,也能让自己对技术理解得更深刻。

相关文章:

  • R语言Stan贝叶斯空间条件自回归CAR模型分析死亡率多维度数据可视化
  • Java中的@JSONField注解详解:用法、场景与实践
  • Docker 与 Nginx:容器化 Web 服务器
  • OpenCV4.8 开发实战系列专栏之 34 - 图像锐化
  • golang性能分析之pprof
  • 2025年信息科学与工程学院科协机器学习介绍——conda环境配置
  • TypeScript 类型断言的适用场景及代码示例
  • 手撕跳表/数据结构
  • EasyExcel 实践案例:打印工资条
  • 一周学会Flask3 Python Web开发-Jinja2模板访问对象
  • w226经方药食两用服务平台的设计与实现
  • C++ 中的继承详解(上)
  • Spring DIIoC
  • JVM层面的JAVA类和实例(Klass-OOP)
  • 计算机毕业设计程序,定制开发服务
  • .manifest是什么文件格式
  • Docker 搭建 MySQL 数据库
  • 代码随想录算法训练营第四十八天| 动态规划10
  • c#丰田PLC ToyoPuc TCP协议快速读写 to c# Toyota PLC ToyoPuc读写
  • 在大数据项目中如何设计和优化数据模型
  • 河北省建设局材料备案网站/关键词seo价格
  • 做的公司网站风格跟样式和别人一样/百度seo搜索引擎优化培训
  • 上城网站建设/自己如何开网站
  • 供求信息网站建设报价/东莞网络推广
  • 太原站建设有多长时间/seo快速排名利器
  • 越南做It网站推广/关键词优化排名费用