前端系列
一、HTML5
二、CSS3
三、JavaScript
四、jQuery
五、BootStrap
六、Element
七、Ajax
八、JSON
九、VUE3
vue2基础
vue-cli(vue的手脚架,专门做工程化开发)
vue-router(实现前端路由的)
vuex(vue存储数据的)
element-ui(ui组件库)
vue3
采用组件化模式,提高代码复用率、切让代码更好维护。
声明编码,让编码人员无需直接操作DOM,提高开发效率。
将vue添加到项目中主要有四种方式:
1.在页面上以CDN包的形式导入 2.下载JavaScript文件并自行托管 https://unpkg.com/[email protected]/dist/vue.global.js 3.使用npm安装它 4.使用官方的CLI来构建一个项目
html>
<html>
<head>
<meta charset="UTF-8">
<title>简单的vue应用title>
<script src="./vue3.js">script>
head>
<body>
<div id="counter">
<p>{{num}}p>
<p>{{uname}}p>
div>
<script>
//配置对象
const Counter={
//data里面定义对象,methods里面定义函数
data:function(){
return{
num:0,
uname:"张三"
}
}
}
//Vue.createApp()创建应用,将配置对象传入
//mount():挂载,通过id属性,将document元素挂载到应用上
Vue.createApp(Counter).mount('#counter')
script>
body>
html>
总结:通过Vue.createApp()创建vue应用,再通过mount()将document元素挂载到应用上。
vite是一个web开发构建工具,由于其原生的ES模块导入方式,可以实现快速的冷服务器启动。
通过终端中运行以下命令,可以使用vite快速构建vue项目。
> npm init vite@latest-- --template vue > cd project-name > npm install > npm run dev
node_modules(项目的依赖) public(存放静态资源文件夹) src(源代码) components HelloWorld.vue App.vue(根组件,渲染的起点) main.js(项目入口) style.css(项目的CSS样式文件)
每个vue都是通过createAPP函数创建应用实例开始的
const app = Vue.createAPP({})
该应用实例是用来在应用中注册全局组件的
const app = Vue.createAPP({})
app.component('SearchInput', SearchInputComponent)
app.directive('focus', FocusDirective)
app.use(LocalePlugin)
//1.配置对象 const RootComponent = {/*选项*/} //2.createAPP(): 将配置对象传入,创建应用 const app = Vue.createAPP(RootComponent) //3.moint(): 挂载,通过id属性,将document元素挂载到应用上 const vm = app.moint('#app')
data属性:在data中定义的属性通过组件实例暴露出去,就可以在DOM元素中使用。
组件实例的所有property都可以在组件的模板中访问到。
还可以将用户自定义的property添加组件实例中,例如:methods,props,computed,inject和setup。
Vue还通过组件暴露了一些内置的property,例如:$attrs 和 $emit。
//配置对象
const Counter={
data:function(){
return{
num:0,
uname:"张三"
}
}
}
//createApp()创建应用,将配置对象传入
const app = Vue.createApp(Counter)
//mount():挂载,通过id属性,将document元素挂载到应用上
const vm = app.mount('#counter')
console.log(vm.count)
{{ }}:可以在花括号中引用变量
<body>
<h1>插值:h1>
<div>
{{info}}
div>
<script src="./static/js/vue.global.js">script>
<script>
let v = new Vue({
el:"body>div",
data:{
info:"小牛马"
}
})
script>
body>
vue指令:
v-text:文本内容绑定,让元素的文本内容和变量进行绑定
v-once:一次性渲染,当变量数据改变时,元素文本内容不会在更新
v-html:标签内容绑定,让元素的html标签内容和变量进行绑定
v-model:双向绑定,让控件和变量进行双向绑定,获取控件的值都是用双向绑定
v-bind 和 : :属性绑定,让元素的某个属性的值和变量进行绑定
v-on 和 @:事件绑定,将事件与方法绑定,调用的方法必须写在methods中
实例:
v-text:文本内容绑定,让元素的文本内容和变量进行绑定
<body>
<div>
<p v-text="info">p>
div>
<script src="./static/js/vue.global.js">script>
<script>
let v = new Vue({
el:"body>div",
data:{
info:"小牛马"
}
})
script>
body>
v-once:一次性渲染,当变量数据改变时,元素文本内容不会在更新
<body>
<div>
<p v-once="info">p>
div>
<script src="./static/js/vue.global.js">script>
<script>
let v = new Vue({
el:"body>div",
data:{
info:"大沙币"
}
})
script>
body>
v-html:标签内容绑定,让元素的html标签内容和变量进行绑定
<body>
<div>
<p v-html="info">p>
div>
<script src="./static/js/vue.global.js">script>
<script>
let v = new Vue({
el:"body>div",
data:{
info:"小可爱"
}
})
script>
body>
v-model:双向绑定,让控件和变量进行双向绑定,获取控件的值。
<body>
<div>
<input type="text" v-model="url" placeholder="请输入访问地址">
<a :href="url">超链接a>
div>
<script src="static/js/vue.global.js">script>
<script>
let v = new Vue({
el: "body>div",
data: {
url: "www.baidu.com",
}
})
script>
body>
v-bind 和 : :属性绑定,让元素的某个属性的值和变量进行绑定
<body>
<div>
<a :href="url">百度一下a>
<a v-bind:href="url">百度一下a>
div>
<script src="./static/js/vue.global.js">script>
<script>
let v = new Vue({
el: "body>div",
data: {
url:"http://www.baidu.com",
}
})
script>
body>
v-on 和 @:事件绑定,将事件与方法绑定,调用的方法必须写在methods中
<body>
<div>
<input type="button" value="按钮1" @click="f()">
<input type="button" value="按钮2" v-on:click="f()">
div>
<script src="static/js/vue.global.js">script>
<script>
let v = new Vue({
el: "body>div",
data: {},
methods: {
f() {
alert("按钮被点击了");
},
})
script>
body>
插入html标签
双花括号会将数据解释为纯文本,而不是 HTML。若想插入 HTML,你需要使用 v-html 指令
v-html 属性是一个指令,指令以 v- 为前缀。span
的内容将会被替换为 rawHtml
属性的值,插值为纯 HTML——数据绑定将会被忽略。
属性绑定(Attributes )
变量的值影响标签属性的值
双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个属性,应该使用 v-bind 指令:
v-bind
指令指示 Vue 将标签的属性与组件的属性保持一致。
简写
指令是带有 v-
前缀的特殊属性。
v-on: 用于监听DOM事件,简写@
动态参数
指令参数上也可以使用一个 JavaScript 表达式,需要包含在一对方括号内,attributeName
会作为一个 JavaScript 表达式被动态执行,计算得到的值会被用作最终的参数。
... ...
函数绑定到动态的事件名称上:
...
在此示例中,当 eventName
的值是 "focus"
时,v-on:[eventName]
就等价于 v-on:focus
。
动态参数值的限制
动态参数中表达式的值应当是一个字符串,或者是 null
。特殊值 null
意为显式移除该绑定。其他非字符串的值会触发警告。
指令
v-once: 一次性渲染,当数据改变时,插值处的内容不会更新{{uname}}
v-bind: 动态绑定属性的内容 v-on: 用于监听DOM事件,简写:@
组件的 data 选项是一个函数。Vue 会在创建新组件实例的过程中调用此函数。它应该返回一个对象,然后Vue 会通过响应性系统将其包裹起来,并以$data的形式存储在组件实例中。
export default { data() { name: "张三", age: 18, } }
方法methods通过this获取data属性的数据。
export default {
data() {},
methods:{
changeColor:function(){
this.id='d2';
}
}
}
这些methods和组件实例的其它所有属性一样可以在组件的模板中被访问。在模板中,它们通常被当做事件监听使用:
模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。
只有依赖值不变,那么就不会重新计算。
//计算属性的简写
computed:{
//字符串翻转属性
reverseMsg:function(){
return this.message.split("").reverse().join("")
}
},
//每一个计算属性都有一个getter和setter方法
//完整写法
computed:{
reverseMsg:{
//当调用reverseMsg的时候就会自动执行getter方法
get: function(){
return this.message.split("").reverse().join("")
}
//计算属性一般没有set方法,计算属性是只读属性
//在设置或者更改计算属性的时候调用
set: function(newValue){
console.log(newValue);
}
}
}
//计算属性的调用
<p>{{ reverseMsg }}p>
就是侦听数据的变化,当需要在数据变化是执行异步或其他操作时,可以使用侦听器来响应数据的变化。使用 watch 选项在每次响应式属性发生变化时触发一个函数。
//侦听器:监听数据的变化,一个数据影响多个数据
watch:{
//监听message属性的变化,当message发生变化时,就会调用这个函数
message:function(newValue, oldValue){
console.log(newValue);
console.log(oldValue);
}
}
v-model:对数据进行双向绑定
当页面初始化的时候监听页面数据
监听对象里的属性
监听器不能监听对象的属性和方法,需要使用深度监听deep。
class和style绑定:
操作元素的class列表和内联样式是数据绑定的一个常见需求。因为它们都是 属性,所以我们可以用v-bind处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将v-bind 用于class 和style时,Vue.js做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。
普通绑定
Hello World
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
对象语法:
v-bind:style 的对象语法十分直观―-看着非常像CSS,但其实是一个JavaScript对象。CSSproperty名可以用驼峰式(camelCase)或短横线分隔(kebab-case,记得用引号括起来)来命名:
青松落色
青松落色
青松落色
青松落色
条件渲染
1、v-if
v-if
指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。
我成年了
2、v-else
为 v-if
添加一个“else 区块”。必须跟在一个 v-if
或者 v-else-if
元素后面,否则它将不会被识别。
我成年了
我还是小盆友
3、v-else-if
顾名思义,v-else-if
提供的是相应于 v-if
的“else if 区块”。它可以连续多次重复使用:
我成年了
我今天正好18岁
我还是小盆友
4、 上的 v-if、v-else-if、v-else
分组渲染:想要切换多个元素,可以使用包括多个元素,在上使用条件渲染。
成年人才可以看见
5、v-show
v-show
:按条件显示一个元素的指令。
不同之处在于 v-show 会在 DOM 渲染中保留该元素;v-show 仅切换了该元素上名为 display 的 CSS 属性。
v-if:有后面为false,对应的元素以及子元素都不会被渲染,控制dom元素的创建和销毁,运行时条件很少改变,一次性。
男生
女生
列表渲染
{{item}}
{{ item.message }}
第{{index}}种颜色是{{ item.message }}
{{index}}: {{key}} {{item}}
数组更新检测
变更方法 Vue将被侦听的数组的变更方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括:.
- {{ item }}
方法事件处理器
方法事件处理器会自动接收原生 DOM 事件并触发执行。在上面的例子中,我们能够通过被触发事件的 event.target.tagName
访问到该 DOM 元素。
{{counter}}
{{counter}}
{{counter}}
{{counter}} -- {{age}}
事件修饰符
案例:
.stop .prevent .self .capture .once .passive
键盘修饰符
按键别名
Vue 为一些常用的按键提供了别名:
.enter
.tab
.delete
(捕获“Delete”和“Backspace”两个按键)
.esc
.space
.up
.down
.left
.right
鼠标按键修饰符
这些修饰符将处理程序限定为由特定鼠标按键触发的事件。
.left
.right
.middle
{{msg}}
真与假:{{checked}}
冰果 香蕉 柚子 橘子 葡萄喜欢的水果:{{fruits}}
男 女{{sex}}
城市:{{city}}
{{citys}}
修饰符
{{msg}}
{{typeof counter}}
{{msg}}