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

跟着AI学vue第八章

第八章:Vue 生态与跨端开发(持续探索)

到了这个阶段,你已经对 Vue 有了较为深入的理解,现在要把视野放宽,看看 Vue 周边的生态系统,以及如何利用 Vue 进行跨端开发,让你的应用能在多个平台上运行,就像让一个演员能在不同的舞台上表演一样。

1. 深入 Vue 生态系统

Vue 生态系统就像是一个热闹的小镇,里面有各种各样的工具和库,能帮助你更高效地开发项目。

Vue CLI 深入使用
  • 通俗理解:Vue CLI 就像是一个建筑包工头,能帮你快速搭建项目的框架。除了基本的项目创建,它还有很多高级功能可以用。
  • 代码示例
    假设你想在项目里添加一个新的插件,比如 ESLint 来做代码检查。你可以在项目根目录下使用 Vue CLI 命令来添加:
vue add eslint

这就好比包工头根据你的需求,给你的建筑添加了一个质量检查机制。添加完成后,Vue CLI 会自动帮你配置好相关的文件和依赖,你在编写代码时,ESLint 就会检查代码是否符合规范。

Vue 测试工具(Vue Test Utils)
  • 通俗理解:写代码就像制造产品,你得确保产品质量没问题。Vue Test Utils 就是一个质量检测员,能帮你测试 Vue 组件的功能是否正常。
  • 代码示例
    假设有一个简单的按钮组件 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);
    const spy = jest.spyOn(wrapper.vm, 'handleClick');
    wrapper.find('button').trigger('click');
    expect(spy).toHaveBeenCalled();
  });
});

在这个测试代码中,我们使用 mount 方法挂载了 MyButton 组件,然后用 jest.spyOn 来监视 handleClick 方法,触发按钮的点击事件后,检查 handleClick 方法是否被调用。

2. 跨端开发

跨端开发就是让你的应用能在不同的平台上运行,比如网页、手机 APP 等,就像一个演员能在剧院、电视、网络等不同舞台上表演。

Vue 结合 Taro 进行跨端开发
  • 通俗理解:Taro 就像是一个翻译官,能把你用 Vue 写的代码翻译成不同平台能理解的语言。你只需要写一套代码,Taro 就能帮你把它变成适用于微信小程序、H5 页面、APP 等多个平台的应用。
  • 代码示例
    首先安装 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>

然后在项目根目录下运行命令来编译成不同平台的代码:

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

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

Vue 结合 NativeScript 开发原生 APP
  • 通俗理解:NativeScript 就像是一个魔法盒子,能把 Vue 代码变成原生的 APP,让你的 APP 有和原生应用一样的性能和体验。
  • 代码示例
    首先安装 NativeScript CLI:
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 语法开发出高性能的原生 APP。

通过深入 Vue 生态系统和跨端开发,你能让自己的 Vue 技能更上一层楼,开发出更强大、更广泛适用的应用。

Vue生态系统
Vue生态系统就像是一个超级大的工具库和社区,里面有各种各样的东西来帮助你更轻松、更高效地开发Web应用程序,主要包含以下几个部分:

  • Vue核心库:这是Vue生态系统的基础,就好比是房子的地基。它提供了数据绑定、组件化、虚拟DOM等重要功能,让你可以方便地创建交互式的Web界面。比如说,你想让网页上的一个数字随着用户点击按钮而变化,用Vue核心库就能很容易实现。

  • 构建工具

    • Vue CLI:它就像一个智能的项目搭建助手。只要你告诉它你想要什么样的项目,比如是一个简单的网页应用,还是一个复杂的单页应用,它就能帮你快速生成项目的基本结构,还会自动配置好各种开发环境,像打包工具、代码检查工具等,让你可以马上开始写代码。
    • Webpack:可以把它想象成一个资源管理器。它能把你项目里用到的各种资源,像JavaScript代码、CSS样式、图片等,都进行打包和处理,让它们能在浏览器中正确地运行,还能优化这些资源,让网页加载得更快。
  • 路由系统:Vue Router就像是一个导航仪,它能帮你管理网页中的不同页面和路径。比如你做一个电商网站,用户点击“首页”“商品列表”“购物车”等链接,能正确地跳转到对应的页面,这就是Vue Router在起作用,它能让用户在你的网站里方便地浏览和操作。

  • 状态管理工具:Vuex就像是一个仓库管理员,负责管理项目中的数据状态。当你的项目变得复杂,有很多组件之间需要共享数据时,Vuex就可以把这些数据集中管理起来,让各个组件都能方便地获取和修改数据,而且能保证数据的一致性和稳定性。比如说,在一个多人协作的任务管理系统里,不同的用户界面组件都需要显示和修改任务列表数据,Vuex就能很好地完成这个任务。

  • UI组件库:这就像是一个装满了各种漂亮零件的盒子,里面有很多已经做好的按钮、输入框、菜单等UI组件。像Element UI、Vuetify等组件库,它们提供了大量美观、实用的组件,你可以直接拿来用,不用自己再去一点点设计和编写这些组件的样式和功能,能大大提高开发效率,让你的网页界面变得更加美观和专业。

  • 社区资源:Vue有一个非常活跃的社区,就像一个热闹的大集市。在社区里,有很多开发者会分享自己的经验、代码示例、插件、工具等。你遇到问题可以在社区里提问,也能学习别人的优秀实践。还有很多开源的项目可以参考和借鉴,这些都能帮助你不断提升自己的开发技能,让你在使用Vue开发的道路上走得更顺。

相关文章:

  • 基于SpringBoot的线上汽车租赁系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • GStreamer源码安装1.24版本
  • pyside6学习专栏(三):自定义QLabel标签扩展类QLabelEx
  • 复制所绑定元素文本的vue自定义指令
  • 【论文解析】Fast prediction mode selection and CU partition for HEVC intra coding
  • flink-cdc同步数据到doris中
  • 算法的复杂性分析以及时间复杂度的表示方法
  • JavaSE学习笔记25-反射(reflection)
  • 顺序表和STL——vector【 复习笔记】
  • C++ IDE设置 visual studio 2010安装、注册、使用
  • 一周学会Flask3 Python Web开发-flask3模块化blueprint配置
  • 【Go语言快速上手】第二部分:Go语言进阶之工具与框架
  • L2-【英音】地道语音语调
  • 自由学习记录(37)
  • python学智能算法(二)|模拟退火算法:进阶分析
  • PHP 会话(Session)实现用户登陆功能
  • Flutter CupertinoNavigationBar iOS 风格导航栏的组件
  • 10-R数组
  • LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
  • 独立开发者如何寻找产品设计灵感
  • 体坛联播|巴萨4比3打服皇马,利物浦2比2战平阿森纳
  • 1至4月全国铁路完成固定资产投资1947亿元,同比增长5.3%
  • 全国重点网络媒体和网络达人走进沧州,探寻“文武双全”的多重魅力
  • 重温经典|开播20周年,仙剑的那些幕后你知道吗?
  • 海南省三亚市委原常委、秘书长黄兴武被“双开”
  • 奥园集团将召开债券持有人会议,拟调整“H20奥园2”本息兑付方案