【Vue入门】创建Vue工程环境和响应式函数

🚀 欢迎来到我的CSDN博客:Optimistic _ chen

一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!


🚀我的专栏推荐

专栏 内容特色 适合人群
🔥C语言从入门到精通 系统讲解基础语法、指针、内存管理、项目实战 零基础新手、考研党、复习
🔥Java基础语法 系统解释了基础语法、类与对象、继承 Java初学者
🔥Java核心技术 面向对象、集合框架、多线程、网络编程、新特性解析 有一定语法基础的开发者
🔥Java EE 进阶实战 Servlet、JSP、SpringBoot、MyBatis、项目案例拆解 想快速入门Java Web开发的同学
🔥Java数据结构与算法 图解数据结构、LeetCode刷题解析、大厂面试算法题 面试备战、算法爱好者、计算机专业学生
🔥Redis系列 从数据类型到核心特性解析 项目必备

🚀我的承诺:

✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例

✅ 持续更新:专栏内容定期更新,紧跟技术趋势

✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)


🚀 关注我,解锁更多技术干货!
⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨

📌 标签:#技术博客#编程学习#Java#C语言#算法#程序员

文章目录

什么是Vue

官方说明:Vue是一套构建用户界面的渐进式JavaScript框架。

Vue是一个框架,其本质是提供一套开发规范。学习Vue的核心在于理解和运用这些既定规则。相比之下,JavaScript是一种解释型的高级编程语言,主要用于实现网页交互功能。渐进式意味着可以逐步掌握其特性。Vue的核心功能是基于数据动态渲染生成用户界面(UI)。

我们需要下载VScode编辑器来准备Vue代码的编写环境,同时为了使我们编写代码时更加舒适和便捷,我们最好给vscode安装几个插件:Vue-Offical(提供vue语法高亮)Vue 3 Snippets(提供Vue3相关的代码片段)Path Intellisense(路径自动补全)等等

工程化开发模式

之前传统模式下,基于html文件开发Vue,通过 <script> 标签引入 Vue 的 CDN 链接。 所有的组件件、逻辑都写在一个或几个文件中,通过全局变量来交互。

  • 优点:写完直接就能双击打开,代码无需构建
  • 缺点:不能使用编译的Vue新特性,加载速度慢且不安全

现在工程化模式开发,使用单文件模块化: 每个组件都是一个独立的 .vue 文件(包含模板、脚本和样式)。项目结构清晰,组件可以复用,也更容易维护

  • 优点:全面支持现代 JavaScript/TypeScript 语法;是团队协作的标准,因为有了 ES6 模块化,每人负责自己的组件,互不干扰。
  • 缺点:必须依赖 Node.js 和 npm/yarn 等工具;通过 Vite 这样的脚手架来创建和运行项目,开发时需要一个终端来启动开发服务器。

创建Vue环境

首先准备环境:安装Node.js,因为Vue项目依赖其自带的npm包管理器,

打开终端,输入node -v / npm -v查看是否安装成功

创建项目:

  1. VScode打开终端( Ctrl + `)
  2. 执行创建命令npm create vue@latest
  3. 配置项目功能: npm i把项目需要的第三方库(如vue本身)下载到node_modules文件夹中

  4. 启动Vue项目


认识Vue文件和目录

Vue的骨架

在 Vue 3 项目里,main.jsApp.vueindex.html 这三个文件共同构成了应用的骨架。可以把它们理解为一个容器、内容和挂载点的关系 ,理解源代码是如何通过浏览器展示出来的

  • index.html:单页面容器,项目最终的 HTML 页面
javascript 复制代码
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
  </head>
  <body>
    <!-- 这是一个挂载点,Vue应用会渲染到这里 -->
    <div id="app"></div>
    <script type="module" src="/src/main.js"></script>
    <!-- 构建工具会自动引入main.js编译后的代码 -->
  </body>
</html>
  • main.js:应用的入口,这是整个 Vue 应用的启动文件,负责创建 Vue 实例并将其挂载到 index.html 上
javascript 复制代码
// main.js
import { createApp } from 'vue'
import App from './App.vue' // 引入根组件
import router from './router' // 引入路由

const app = createApp(App) // 创建应用实例,将App作为根组件

app.use(router) // 使用路由插件

app.mount('#app') // 将应用挂载到index.html中的#app元素上
  • App.vue:根组件是整个 Vue 应用的起点,作为容器,通过路由或组件引入来组装其他子组件。main.js 将它作为第一个组件引入,它渲染出来的内容,最终会被填充到 index.html 的 <div id="app">
javascript 复制代码
<script setup>
// 这里以后放你的练习代码
</script>

<template>
  <div>
    <h1>🚀 Vue 学习模板</h1>
    <p>欢迎开始新的练习!</p>
    <!-- 这里以后放你的组件 -->
    <router-view />
  </div>
</template>

<style scoped>
/* 留空,以后按需添加 */
</style>

总结:

  1. 用户在浏览器访问项目,index.html 被加载,页面显示了一个空的<div id="app">容器。
  2. 浏览器加载 main.js 编译后的代码。
  3. main.js 启动,创建 Vue 实例,并引入 App.vue。
  4. Vue 将 App.vue 的模板内容()解析并编译成最终的 HTML。
  5. Vue 通过 app.mount('#app') 命令,把编译好的 HTML 内容替换掉 index.html 中的 <div id="app">(或者填充进去)。
  6. 用户最终看到了由 App.vue 渲染出的完整页面。
  7. vue=script(JS)+template(HTML)+style(CSS)

Vue的入口 setup函数

setup 函数是在Vue3 特有的选项,是编写代码的起点,是一个组件的选项,也是组合式 API 的入口

javascript 复制代码
//简写
<script setup>
 // 这里以后放你的练习代码
</script>

//原始写法
<script>
   export default{
     setup(){
        //在标签中用到的变量或者函数,需要在setup函数中声明并返回
        const msg='hello Vue3'
        return {
           msg
        }
     }
   }
</script>

显而易见,我们倾向于使用简写形式,这实际上是在编译层面对原有 setup 函数进行的封装优化,写起来更加便捷

响应式数据

首先,推荐大家通过插件网站去下载一个开发者工具插件

通过该插件,我们可以通过数据变化直接导致视图一起改变。当然不是所有数据都有响应式特性,只有借助响应式函数的数据才有响应特性:数据变了,视图跟着变

响应式函数reactive

reactive 是 Vue 3 组合式 API 中最重要的函数之一,它只用于创建响应式对象。当这个对象的属性发生变化时,Vue 会自动更新使用这些属性的模板或计算属性。

javascript 复制代码
import { reactive } from 'vue'

// 普通对象
const user = {
  name: '张三',
  age: 25
}

// 转换为响应式对象
const state = reactive(user)
// 现在 state 是响应式的了

响应式函数ref

ref 是 Vue 3 组合式 API 中一个核心函数,它用于创建响应式的值,特别是处理原始类型(字符串、数字、布尔值)的响应式。

ref 接收一个内部值,返回一个响应式的、可变的 ref 对象。 这个对象只有一个 .value 属性,指向内部值。

javascript 复制代码
import { ref } from 'vue'

// 创建一个响应式引用
const count = ref(0)
// count 是一个对象:{ value: 0 }

console.log(count.value) // 0

// 修改值
count.value++
console.log(count.value) // 1

注意:在 JavaScript 中,原始类型(string、number、boolean)是按值传递的,它们本身没有响应式能力。ref 的作用就是给这些原始值包装一层对象,让它们能被 Vue 的响应式系统追踪,所以,在JS中使用ref,需要count.value

对比ref和reactive

ref reactive
适用情况 既可以接收基本类型,也可以接收引⽤类型 只接收对象作为参数
访问方式 JS:count.value template:{{ count }} JS:state.property template:{{ state.property }}
重新赋值 支持直接替换整个值 不能直接替换整个对象
解构 解构后仍是响应式 解构后失去响应式
嵌套对象 内部值如果是对象,会自动用 reactive 包装 深层所有属性都是响应式的

插值渲染

插值渲染是 Vue 中最基础、最常用的功能,它让你能够将动态数据渲染到 DOM 树中。简单来说,就是在 HTML 中嵌入 JavaScript 表达式。
插值允许在模板中声明式地绑定数据。当数据变化时,视图会自动更新相当于一个变量,它可以根据数据的不同而改变

javascript 复制代码
<template>
  <div>
    <!-- 最基本的文本插值 -->
    <p>{{ message }}</p>
    
    <!-- 可以包含表达式 -->
    <p>{{ count + 10 }}</p>
    <p>{{ isActive ? '激活' : '未激活' }}</p>
    <p>{{ message.split('').reverse().join('') }}</p>
  </div>
</template>

<script setup>
import { ref, reactive } from 'vue'

const message = ref('Hello Vue')
const count = ref(5)
const isActive = ref(true)
</script>

完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍
你的鼓励是我创作的最大动力~

想获取更多干货? 欢迎关注我的专栏 → optimistic_chen

📌 收藏本文,下次需要时不迷路!

我们下期再见!💫 持续更新中......


悄悄说:点击主页有更多精彩内容哦~ 😊

相关推荐
南城书生2 小时前
Android Handler 机制源码分析
前端
南城书生2 小时前
Android 大图加载与 OOM 优化
前端
南城书生2 小时前
RecyclerView 源码分析
前端
南城书生2 小时前
LeakCanary 原理分析
前端
没想好d2 小时前
通用管理后台组件库-13-页签组件
前端
xChive2 小时前
ECharts-大屏开发复习记录与踩坑总结
前端·javascript·echarts
南城书生2 小时前
Java HashMap 源码分析
前端
南城书生2 小时前
Java 线程池(ThreadPoolExecutor)源码分析
前端
前端Hardy2 小时前
别再靠 Code Review 纠格式了!一套自动化前端工程化方案,让 Vue 项目提交即合规
前端·程序员·代码规范