Skip to content

Commit 033926e

Browse files
committed
Vue基础语法回忆
1 parent 3777e96 commit 033926e

File tree

2 files changed

+148
-1
lines changed

2 files changed

+148
-1
lines changed

src/develop/FrontEnd/Vue.md

Lines changed: 148 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Vue3
22

3-
## 1. 简介&环境配置
3+
# 1. 简介&环境配置
44

55
特点和优势
66
- **响应式数据绑定**:Vue.js 提供强大的响应式数据绑定系统,确保数据的变化能够自动反映到视图层,减少了开发者手动操作 DOM 的需要。
@@ -102,3 +102,150 @@ $ vue ui
102102
接下来就等待完成安装,安装完成管理界面如下:
103103

104104
![](https://www.runoob.com/wp-content/uploads/2021/12/4AE552A2-2AE4-4B23-AECA-90CE7D29C047-scaled.jpeg)
105+
106+
### 目录结构
107+
**命令行工具 vue-cli(runoob-vue3-test):**
108+
109+
![](https://www.runoob.com/wp-content/uploads/2021/02/7C26D06C-4B1B-4E80-BBE1-E407C3E945B3.jpg)
110+
111+
**Vite(runoob-vue3-test2)**
112+
113+
![](https://www.runoob.com/wp-content/uploads/2021/02/7C797674-06CF-4E87-B344-63990EF519B6.jpg)
114+
115+
典型的 Vue 项目结构:
116+
```
117+
my-vue-app/
118+
├── node_modules/
119+
├── public/
120+
│ ├── favicon.ico
121+
│ └── index.html
122+
├── src/
123+
│ ├── assets/
124+
│ │ └── logo.png
125+
│ ├── components/
126+
│ │ └── HelloWorld.vue
127+
│ ├── views/
128+
│ │ └── Home.vue
129+
│ ├── App.vue
130+
│ ├── main.js
131+
│ └── router/
132+
│ └── index.js
133+
├── .gitignore
134+
├── babel.config.js
135+
├── package.json
136+
├── README.md
137+
├── vue.config.js
138+
└── yarn.lock or package-lock.json
139+
140+
```
141+
142+
143+
## 基础语法
144+
Vue3 中的应用是通过使用 createApp 函数来创建的,语法格式如下:
145+
```js
146+
const app = Vue.createApp({ /* 根组件选项 */ })
147+
```
148+
149+
传递给 createApp 的选项用于配置根组件。
150+
151+
应用实例必须在调用了 .mount() 方法后才会渲染出来,.mount()方法接收一个"容器"参数,可以是一个实际的 DOM 元素或是一个 CSS 选择器字符串:
152+
```js
153+
app.mount('#app')
154+
```
155+
156+
<div id="app"></div>
157+
一个简单的实例:
158+
```
159+
Vue.createApp(HelloVueApp).mount('#hello-vue')
160+
```
161+
162+
createApp 的参数是根组件(HelloVueApp),在挂载应用时,该组件是渲染的起点。
163+
164+
一个应用需要被挂载到一个 DOM 元素中,以上代码使用 `mount('#hello-vue')` 将 Vue 应用 HelloVueApp 挂载到 `<div id="hello-vue"></div>` 中。
165+
### 实例
166+
167+
现在有这样一个 HelloVueApp.vue 文件
168+
169+
```vue
170+
<script setup>
171+
172+
import { ref } from 'vue';
173+
const message = ref('Hello Vue!!');
174+
function sayHello() {
175+
  alert(message.value);
176+
}
177+
</script>
178+
179+
180+
<template>
181+
  <div>{{ message }}</div>
182+
  <button @click="sayHello">Say Hello</button>
183+
</template>
184+
```
185+
186+
结构就是两个标签 `<template>``</script>`
187+
188+
或者换种写法,例如这个 HelloWorld.vue
189+
```vue
190+
<template>
191+
  <div>
192+
    <p>{{ message }}</p>
193+
    <p>{{ anotherMessage }}</p>
194+
    <button @click="changeMessage">Change Message</button>
195+
  </div>
196+
</template>
197+
<script>
198+
199+
export default {
200+
201+
  data() {
202+
    return {
203+
      message: 'Hello World!',
204+
      anotherMessage: 'Welcome to Vue.js!'
205+
    }
206+
  },
207+
208+
  methods: {
209+
    changeMessage() {
210+
      this.message = 'Message Changed!';
211+
    }
212+
  }
213+
}
214+
215+
</script>
216+
```
217+
218+
在某个 js 文件中,这样写,将 Vue 应用实例挂载到 DOM 元素上
219+
```js
220+
import { createApp } from 'vue'
221+
import HelloVueApp from './HelloVueApp.vue'
222+
import HelloWorldApp from './components/HelloWorld.vue'
223+
224+
createApp(HelloVueApp).mount('#hello-vue');
225+
createApp(HelloWorldApp).mount('#hello-world');
226+
```
227+
228+
然后再html中引入这个js即可渲染到具体的DOM
229+
```html
230+
<!doctype html>
231+
<html lang="en">
232+
  <head>
233+
    <meta charset="UTF-8" />
234+
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
235+
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
236+
    <title>Vite + Vue</title>
237+
  </head>
238+
239+
  <body>
240+
    <div id="hello-vue"></div>
241+
    <div id="hello-world"></div>
242+
  </body>
243+
244+
  <script type="module" src="/src/main.js"></script>
245+
246+
</html>
247+
```
248+
249+
效果如下
250+
![](img/Vue/file-20250106195411313.png)
251+
34.9 KB
Loading

0 commit comments

Comments
 (0)