|
1 | 1 | # Vue3 |
2 | 2 |
|
3 | | -## 1. 简介&环境配置 |
| 3 | +# 1. 简介&环境配置 |
4 | 4 |
|
5 | 5 | 特点和优势 |
6 | 6 | - **响应式数据绑定**:Vue.js 提供强大的响应式数据绑定系统,确保数据的变化能够自动反映到视图层,减少了开发者手动操作 DOM 的需要。 |
@@ -102,3 +102,150 @@ $ vue ui |
102 | 102 | 接下来就等待完成安装,安装完成管理界面如下: |
103 | 103 |
|
104 | 104 |  |
| 105 | + |
| 106 | +### 目录结构 |
| 107 | +**命令行工具 vue-cli(runoob-vue3-test):** |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | +**Vite(runoob-vue3-test2)** |
| 112 | + |
| 113 | + |
| 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 | + |
| 251 | + |
0 commit comments