This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.
Vue3 正式学习笔记
经过了前面 Javascript 和 Nodejs 前置知识的铺垫,我想我应该可以正式学习 Vue 这个前端框架了叭。
先看视频放松下过一遍:
【2023最新版】Vue3从入门到精通,零基础小白也能听得懂,写得出,web前端快速入门教程_哔哩哔哩_bilibili
上面的视频虽然说得是 Vue3 但是是按照 组合式 API 讲解的,Vue3 文档推荐使用 响应式 API 编写代码。不过具体原理大同小异。
reference:创建一个 Vue 应用 | Vue.js
需要用到的组件库、UI、AJAX 请求库 文档。
- Element-UI 组件库
- axios
/ˈæksɪos/
AJAX 请求库 - Vue Route 路由
- Pinia 全局状态管理,类似于 LocalStore ?
- JavaScript ES6 Asynchronous Promise:箭头函数 - JavaScript | MDN
How to study vue?
粗略的过了一遍上述文档就可以看这个 《Vue3 入门指南与实战案例》 :出版说明 | Vue3 入门指南与实战案例
但是上文没有介绍 axios 请求等操作,请看我的文章:Vue-Project-Start-Tutorial Vue 项目快速搭建指南
笔者是用了大概 2 周的业余时间看完以上的文档的,理论知识有了,接下来就是具体的项目实践,推荐阅读 Vue-Admin
的源代码和具体的文章:介绍 | vue-element-admin 这个项目还是用 webpack + vuex 的,待寻找更好的替代品:
- GitHub - youlaitech/vue3-element-admin: 🔥基于 vue3 + vite4 + typescript + element-plus 构建的后台管理系统(配套接口文档和后端源码)。vue-element-admin 的 vue3 版本。
- Vue3.3 + Vite4.3 + TypeScript5+ Element-Plus:从零到一构建企业级后台管理系统(前后端开源)_element plus 开源项目-CSDN博客
代码 format 规范:【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范
web full stack:web 全栈开发学习路线 1. 前言(Preface) | web全栈体系
Fast Start
Install vue framework in NodeJS
npm install vue@latest -g # 全局安装
npm create vue@latest # 创建 vue3 项目
cd <your-project-name>
npm install
npm run dev
npm run build # 发布到生产环境 ./dist
响应式 API 和组合式 API
HelloWorld.vue
<template>
<h1>{{ msg }} Start Learning Vue Framework</h1>
<button @click="switchName">switchName</button>
</template>
<script setup>
// 响应式 API 写法
import { ref } from "vue";
const msg = ref("WhaleFall");
// switch name
function switchName() {
msg.value = msg.value == "WhaleFall" ? "颖怡" : "WhaleFall";
}
</script>
<script>
// 组合式 API 写法
export default {
data: function () {
return {
msg: "Mess",
};
},
methods: {
switchName() {
this.msg = this.msg == "WhaleFall" ? "颖怡" : "WhaleFall";
},
},
};
</script>
App.vue
<template> <HelloWorld /> </template>
<script setup>
import HelloWorld from "./components/HelloWorld.vue";
</script>
<style scoped></style>
main.js
import { createApp } from "vue";
import App from "./App.vue";
const app = createApp(App);
app.mount("#app");
声明响应式状态
在组合式 API 中,推荐使用 ref()
函数来声明响应式状态,定义响应式依赖。
import { ref } from "vue";
const count = ref(0); // 初始化数值
计算属性 computed
返回值为一个计算属性 ref,通过 publishedBooksMessage.value
访问计算结果,计算属性 ref 也会在模板中自动解包,因此在模板表达式中引用时无需添加 .value
。
计算属性值会基于其响应式依赖被缓存
const publishedBooksMessage = computed(
// 依赖于 author 对象
// 只要 `author.books` 不改变,无论多少次访问 `publishedBooksMessage` 都会立即返回先前的计算结果,而不用重复执行 getter 函数。
() => {
return author.books.length > 0 ? "Yes" : "No";
},
);
计算属性默认是只读的。当你尝试修改一个计算属性时,你会收到一个运行时警告。只在某些特殊场景中你可能才需要用到“可写”的属性,你可以通过同时提供 getter 和 setter 来创建。
<script setup>
import { ref, computed } from 'vue'
const firstName = ref('John')
const lastName = ref('Doe')
const fullName = computed({
// getter
// 应只做计算而没有任何其他的副作用
// **不要在 getter 中做异步请求或者更改 DOM**!
get() {
return firstName.value + ' ' + lastName.value
},
// setter
set(newValue) {
// 注意:我们这里使用的是解构赋值语法
[firstName.value, lastName.value] = newValue.split(' ')
}
})
</script>
Watch 监听器
每次响应式状态变化时触发回调函数:
<script setup>
import { ref, watch } from 'vue'
const question = ref('')
const answer = ref('Questions usually contain a question mark. ;-)')
// 可以直接侦听一个 ref
watch(question, async (newQuestion, oldQuestion) => {
if (newQuestion.indexOf('?') > -1) {
answer.value = 'Thinking…'
try {
const res = await fetch('https://yesno.wtf/api')
answer.value = (await res.json()).answer
} catch (error) {
answer.value = 'Error! Could not reach the API. ' + error
}
}
})
</script>
<template>
<p>
Ask a yes/no question:
<input v-model="question" />
</p>
<p>{{ answer }}</p>
</template>
使用 Vite 脚手架 创建项目
npm create vite
cd myself-vite
pnpm install
pnpm run dev
pnpm install -D unplugin-vue-components unplugin-auto-import
pnpm install -D @types/node
pnpm install element-plus
# icons
pnpm install @element-plus/icons-vue
# route
pnpm install vue-route
Vite Build Single file
常用 CSS
当谈到 CSS (层叠样式表) 时,有许多常用的属性可用于控制和布局网页元素的外观和行为。以下是几个常用的 CSS 属性的描述:
color
:color
属性用于设置文本的颜色。可以使用命名颜色(例如red
、blue
)或十六进制颜色码(例如#FF0000
)来指定颜色。font-size
:font-size
属性用于设置文本的大小。它接受像素值、百分比、em 等单位。例如,font-size: 16px;
将文本大小设置为 16 像素。margin
:margin
属性用于设置元素的外边距。外边距是元素周围的空白区域,用于控制元素与其他元素之间的距离。可以使用单个值设置所有边距,也可以使用上、右、下、左四个值分别设置各个边距。padding
:padding
属性用于设置元素的内边距。内边距是元素内容与边框之间的空白区域。类似于外边距,可以使用单个值或四个值分别设置各个边的内边距。background-color
:background-color
属性用于设置元素的背景颜色。可以使用命名颜色或十六进制颜色码来指定颜色。例如,background-color: #FFFFFF;
将背景颜色设置为白色。display
:display
属性用于定义元素的显示类型。常见的值包括block
、inline
、inline-block
和none
。block
元素在页面中以块级元素的形式显示,占据一整行;inline
元素则在行内显示,不独占一行;inline-block
元素则同时具备块级和行内元素的特性;none
则表示元素不显示。border
边框
以上只是 CSS 的一小部分常用属性示例。CSS 拥有众多属性,每个属性都有不同的功能和用途,用于控制网页的各个方面,如布局、字体、边框、动画等。
Author: WhaleFall
Permalink: https://www.whaleluo.top/javascript/vue-tutorial/
文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。
Comments