Vue核心知识
一、Vue核心知识
1.1.Vue的基本简介
学习一门技术首先登陆其官网,中文网址,英文网址,vue
是一款渐进式JavaScript框架,作用是为了动态构建用户界面,该框架遵循MVVM模式,编码简洁,体积小,运行效率高;他借鉴了angular的模板
和数据绑定技术
,借鉴了react的组件化
和虚拟DOM技术
,当然,该技术也存在一个Vue全家桶,例如vue脚手架:vue-cli
,ajax请求:vue-resource
,路由:vue-router
,状态管理:vuex
,图片懒加载:vue-lazyload
,移动端UI组件库:min-ui
,PC端组件库:element-ui
,页面滑动:vue-scroller
等等插件;
1.2.Vue的基本使用
<div id="app"><input type="text" v-model="username"><p>Hello {{username}}</p>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">//创建Vue实例const vm = new Vue({ // 配置对象el:'#app', // element:选择器data:{ //数据(Model)username:'世界'}})
</script>
vue的HelloWord编码说明
- 使用vue首先引入Vue.js,然后创建Vue对象,其中el表示指定的
根element选择器
,data是指初始化数据,双向数据绑定使用v-model
,显示数据使用语法:{{xxx}}
; - vue的MVVM的体现就是:
model
代表模型,上述代码就是数据对象(data),view
代表视图,就是vue中的模板页面,viewModel
代表是视图模型(vue实例);
1.3.模板语法
所谓的模板就是动态的Html页面,包含了一些JS语法代码,在Vue中使用双大括号表达式
和指令
(以v-开头的自定义标签属性);
双大括号表达式
语法是:{{xxx}}
,作用就是向页面输出数据,可以调用对象的方法,例如{{msg.toUpperCase()}}
;
指令:强制数据绑定
<body><div id="app"><p>{{msg}}</p><p>{{msg.toUpperCase()}}</p> <img src="imgSrc" alt=""></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {msg: 'Hello Word',imgSrc: 'http://image.luokangyuan.com/1.jpg'}})
</script>
</body>
上述代码中的img标签的src属性不会获取到data中定义的imgSrc属性的值,这个时候就需要使用指令强制数据绑定,功能就是指定变化的属性值
,完整写法是:v-bind:src='imgSrc'
,一般采用简洁写法::src='imgSrc'
;正确写法如下:
<img :src="imgSrc" alt="">
指令:绑定事件监听
<body><div id="app"><button v-on:click = 'test1'>test1</button><button v-on:click = 'test2(msg)'>test2</button><button @click = 'test'>test</button></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {msg: 'Hello Word',imgSrc: 'http://image.luokangyuan.com/1.jpg'},methods: {test1() {alert(123)},test2(content) {alert(content)},test() {alert(123)}}})
</script>
</body>
绑定事件监听指令的作用就是绑定指定事件名的回调函数,完整写法:v-on:click='xxx'
或者v-on:click='xxx(参数)'
再或者v-on:click.enter='xxx'
,简洁写法就是:@click='xxx'
,使用@
符号;
1.4.计算属性和监视
计算属性
在computed属性对象中定义计算属性的方法,在页面中使用{{方法名}}
来显示计算的结果;
<body><div id="app">姓:<input type="text" placeholder="姓氏" v-model="firstName"><br>名:<input type="text" placeholder="名字" v-model="lastName"><br>姓名1(单向):<input type="text" placeholder="姓名1" v-model="fullName1"><br>姓名2(单向):<input type="text" placeholder="姓名2"><br>姓名3(双向)<input type="text" placeholder="姓名3双向"></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {firstName: 'A',lastName: 'B'//如果将 fullName1写在这个地方,那么改变firstName和lastName的值并不会同时改变fullName1的值// 所以需要使用到计算属性,将fullName1写入computed属性对象中,将方法的返回值作为输出值// fullName1:'A B' },computed: {// 这个f方法在初始化会执行,当相关属性发生改变时也会执行fullName1() { // 计算属性中的一个方法,方法的返回值作为属性值return this.firstName + ' ' + this.lastName}}})
</script>
</body>
计算属性的get和set
使用计算属性实现上述的双向绑定,代码如下:
<body><div id="app">姓:<input type="text" placeholder="姓氏" v-model="firstName"><br>名:<input type="text" placeholder="名字" v-model="lastName"><br>姓名3(双向)<input type="text" placeholder="姓名3双向" v-model="fullName3"></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {firstName: 'A',lastName: 'B'// fullName1:'A B' },computed: {fullName3: {// 回调函数:你定义的,你没有调用,但最终他执行了// 回调函数,当需要读取当前属性值时回调,根据相关的数据计算并返回当前属性的值get(){return this.firstName + ' ' + this.lastName},// 回调函数,监视当前属性的变化,当属性值发生改变时回调,更新相关的属性数据set(value){const names = value.split(' ');this.firstName = names[0];this.lastName = names[1];}}}})
</script>
</body>
注意:计算属性存在缓存,多次读取只执行一次getter计算;
监视
通过vm对象的$watch()方法或者watch配置
来监视某一个属性的值是否发生变化,当属性发生变化时,通过执行回调函数来执行相关的功能,下面的代码是使用计算属性完成的同一个功能,
<body><div id="app">姓:<input type="text" placeholder="姓氏" v-model="firstName"><br>名:<input type="text" placeholder="名字" v-model="lastName"><br>姓名2(单向):<input type="text" placeholder="姓名2" v-model="fullName2"><br>姓名3(双向)<input type="text" placeholder="姓名3双向"></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">var vm = new Vue({el: '#app',data: {firstName: 'A',lastName: 'B',fullName2: 'A B'},watch: {// 这个方法就是监视firstName,值发生改变是被调用执行函数// 函数可以传入两个参数代表新值和改变之前的值,也可以传一个,也可以不传firstName: function(value){ this.fullName2 = value+ ' ' + this.lastName}}})vm.$watch('lastName',function(value){this.fullName2 = this.firstName + ' ' + value})
</script>
</body>
1.5.class和style绑定
在某些页面中,某些元素的样式是动态发生变化的,class和style绑定就是用来实现动态改变样式效果的技术,其中class绑定中,表达式可以是字符串,可以是对象,也可以是数组,实例如下:
<head><meta charset="UTF-8"><title>class和style绑定</title><style>.aClass{color: red}.bClass{color: blue}</style>
</head>
<body><div id="app"><h1>class绑定</h1><p :class="a">我是字符串</p><p :class="{aClass: isA,bClass: isB}">我是对象</p> <!--class绑定的是对象。当为true才会留下--><h1>style绑定</h1><p :style="{color: activeColor, fontSize: fontSize+'px'}">我是style强制绑定</p><button @click='update'>更新</button></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {a: 'aClass',isA: true,isB: false ,// 以上是绑定classactiveColor: 'red', // 以下是绑定stylefontSize : 20},methods: {update(){this.a = 'bClass';this.isA = false;this.isB = true;// 以上是绑定classthis.activeColor = 'blue';this.fontSize = 30;}}})
</script>
</body>
1.6.条件渲染
在vue中条件渲染使用v-if
、v-else
和v-show
指令,二者不同的地方在于v-if
是不会生成不应该显示的元素,v-show
是通过css控制隐藏不应该显示的节点元素,是在页面生成的,当需要频繁的切换时,使用v-show
比较好,当条件不成立时,v-is
的所有子节点也不会被解析;
<body><div id="app"><p v-if = 'ok'>显示成功</p><p v-else>显示失败</p><p v-show = 'ok'>显示成功-v-show</p><p v-show = '!ok'>显示失败-v-show</p><button @click='ok=!ok'>切换</button></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {ok: false}})
</script>
</body>
1.7.列表渲染
列表的渲染使用的是v-for
指令,可以渲染数组和对象,注意的是遍历的时候指定唯一的index或者key,另外在做数组的删除和更新操作时使用数组的变异方法
,有关vue的数组变异方法可以参考官方API;
<body><div id="app"><h2>v-for遍历数组</h2><ui><li v-for="(u,index) in users" ::key="index">{{index}}===={{u.name}}===={{u.age}}==<button @click='deleteUser(index)'>删除</button>==<button @click="updateUser(index,{name: '王八',age: 45})">更新</button></li></ui><h2>v-for遍历对象</h2><ul><li v-for="(value,key) in users[1]" :key="key">{{value}}==={{key}}</li></ul></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {users: [ // vue本身只是监视了users的改变,没有监视数组内部数据的改变{name: '张三',age: 23},{name: '李四',age: 56},{name: '王五',age: 76},{name: '赵六',age: 87},{name: '陈七',age: 34}]},methods: {deleteUser(index){this.users.splice(index,1);},updateUser(index,value){// 如果只写 this.users[index] = value这一条语句,只改变了数组内部的数据,如果不调用vue的变异方法,就不会更新页面// vue重写了数组中的一系列方法,重写后就是改变数组操作,然后重新渲染页面,也就是实现的数据绑定this.users.splice(index,1,value) ;}}})
</script>
</body>
列表渲染-列表过滤和排序
<body><div id="app"><input type="text" v-model="searchName"><ui><li v-for="(u,index) in filterUsers" ::key="index">{{index}}===={{u.name}}===={{u.age}}</li></ui><button @click="setOrderType(1)" >年龄升序</button><button @click="setOrderType(2)">年龄降序</button><button @click="setOrderType(0)">原本排序</button></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',data: {searchName: '',orderType: 0, // 0代表原本,1代表升序,2代表降序users: [ // vue本身只是监视了users的改变,没有监视数组内部数据的改变{name: '张三',age: 23},{name: '李四',age: 56},{name: '张五',age: 76},{name: '赵六',age: 87},{name: '陈七',age: 34}]},computed: {filterUsers() {const {searchName,users,orderType} = this;// 取到相关数据(searchName和users)let fusers; // 定义最终返回的数组fusers = users.filter(u => u.name.indexOf(searchName) !==-1);// 对users进行过滤// 对fusers排序if(orderType !== 0){fusers.sort(function(u1,u2){ // 如果返回负数p1在前,返回正数p2在前// 1.代表升序,2.代表降序if(orderType == 2){return u2.age - u1.age}else{return u1.age -u2.age}})}return fusers;}},methods: {setOrderType(value){this.orderType = value;}}})
</script>
</body>
1.8.事件处理
在vue中绑定监听使用@xxx='fun'
,其中点击函数和传参数和不传参数,默认事件的形参是event
,当需要传参的同时需要默认event时候,使用隐含属性对象@xxx = fun(123,$event)
;事件有两个修饰符:.prevent
:阻止事件的默认事件的默认行为和.stop
:停止事件冒泡;按键修饰符使用keyup.keyCode = fun()
:keycode是键盘输入对应的ketcode值,可以使用名称,但是存在一部风没有;
<body><div id="app"><h2>绑定监听</h2><button @click="test1" >我是按钮一</button><button @click="test2('Hello 码酱')">我是按钮二,我想获取自己传入的值</button><button @click="test3">我是按钮三,我就想获取自己</button><button @click="test4('Hello',$event)">我是按钮四,我想获取获取自己的同时获取传入的值</button><h2>事件修饰符:事件冒泡和事件默认行为</h2><div style="width: 200px; height: 200px; background: red" @click="test5"><!-- 使用 @click.stop阻止事件的冒泡--><div style="width: 100px; height: 100px; background: blue" @click.stop="test6"></div></div><!-- 使用@click.prevent阻止事件的默认行为 --><a href="luokangyuan.com" @click.prevent="test7">去码酱博客</a><h2>按键修饰符:使用@keyup.13,其中的数字代表键盘每一个输入对应的keycode</h2><input type="text" @keyup.13="test8"><input type="text" @keyup.enter="test8"></div>
<script src="js/vue.js" type="text/javascript"></script>
<script type="text/javascript">new Vue({el: '#app',methods: {test1(){alert("四川码酱");},test2(msg){alert(msg);},test3(event){alert(event.target.innerHTML);},test4(msg,event){alert(msg+"==="+event.target.innerHTML);},test5(){alert("执行了外面的div的点击事件");},test6(){alert("执行了里面的div的点击事件");},test7(){alert("不去码酱博客")},test8(event){alert(event.target.value);}}})
</script>
</body>
1.9.表单输入绑定
表单的数据绑定使用v-model
指令,具体相关编码如下:
<body><div id="app"><form action="/xxx" @submit.prevent="handSubmit"><span>用户名:</span><input type="text" v-model="userName"><br><span>密码:</span><input type="password" v-model="pwd"><br><span>性别:</span><input type="radio" id="wman" value="女" v-model="sex"><label for="wman">女</label><input type="radio" id="man" value="男" v-model="sex"><label for="man">男</label><br><span>爱好:</span><input type="checkbox" id="basket" value="basket" v-model="likes"><label for="basket">篮球</label><input type="checkbox" id="footbal" value="foot" v-model="likes"><label for="footbal">足球</label><input type="checkbox" id="pingpang" value="pingpang" v-model="likes"><label for="pingpang">乒乓球</label><br><span>城市:</span><select name="" id="" v-model="cityId"><option value="">未选择</option><option :value="city.id" v-for="(city,index) in allCitys" :key="index">{{city.name}}</option></select><br><span>个人介绍:</span><textarea name="" id="" cols="30" rows="10" v-model="desc"></textarea><br><input type="submit" value="注册"></form></div><script src="js/vue.js" type="text/javascript"></script><script type="text/javascript">new Vue({el: "#app",data: {userName: '',pwd: '',sex: '男', // 默认选中性别男likes: ['foot'], // 默认选中foot对应的多选框allCitys: [{ id: 1, name: "北京" }, { id: 2, name: "成都" }, { id: 3, name: "上海" }, { id: 4, name: "宁波" }],cityId: '',// 这里默认是空,则匹配未选择,如果默认选中成都,则写2即可desc: ''},methods: {handSubmit() {console.log(this.userName, this.pwd, this.sex, this.likes, this.cityId, this.desc)}}})</script>
</body>
1.10.Vue的生命周期
常用的生命周期方法:create()/mounted()
:常用于发送Ajax请求启动定时器等异步任务,beforeDestory()
:常用于做一些收尾工作,例如关闭定时器;
<body><div id="app"><button @click= "destoryVm">点击我取消Vue实例</button><p v-show = "isShow">我是四川码酱</p></div><script src="js/vue.js" type="text/javascript"></script><script type="text/javascript">new Vue({el: "#app",data: {isShow: true},beforeCreate() {console.log("我是beforeCreate方法,我被执行了");},created() {console.log("我是created方法,我被执行了");},beforeMount() {console.log("我是beforeMount方法,我被执行了");},mounted(){ // 初始化显示之后立即调用,也是执行一次this.intervalId = setInterval(() =>{console.log("=====");this.isShow = !this.isShow;}, 1000)},beforeUpdate() {console.log("我是beforeUpdate方法,我被执行了");},updated() {console.log("我是updated方法,我被执行了");},beforeDestroy() { // 死亡之前回调一次// 清除定时器clearInterval(this.intervalId)},destroyed() {console.log("我是destroyed方法,我被执行了");},methods: {destoryVm(){this.$destroy();}}})</script>
</body>
说明:
beforeCreate、created、beforeMount、mounted
初始化方法只执行一次,beforeUpdate、updated
执行多次,beforeDestroy、destroyed
死亡方法,也执行一次;
1.11.过渡和动画
在vue中动画就是操作css的trasition或者animation属性,vue会给目标元素添加和移除指定的class,只不过要遵循一定的命名规则,
<title>动画和过渡</title><style type="text/css">/* 指定显示和隐藏的过渡效果 */.fade-enter-active,.fade-leave-active {transition: opacity 1s;}/* 指定隐藏的样式 */.fade-enter,.fade-leave-to {opacity: 0;}/* 指定显示的过滤效果 */.move-enter-active {transition: all 1s}/* 指定隐藏的过滤效果 */.move-leave-active {transition: all 3s}/* 指定隐藏的样式 */.move-enter,.move-leave-to {opacity: 0;transform: translateX(20px)}</style>
</head><body><div id="app"><button @click="isshow = !isshow">动画按钮</button><transition name="fade"><p v-show="isshow">四川码酱</p></transition></div><div id="app1"><button @click="isshow = !isshow">多属性动画按钮</button><transition name="move"><p v-show="isshow">四川码酱</p></transition></div><script src="js/vue.js" type="text/javascript"></script><script type="text/javascript">new Vue({el: "#app",data() {return {isshow: true}}})new Vue({el: "#app1",data() {return {isshow: true}}})</script>
</body>
1.12.过滤器
在vue中允许自定义过滤器,所谓过滤器就是:对要显示的数据进行特定格式化后在显示,例如时间格式化等
,注意的是:并没有改变原本的数据,只是产生新的对应数据
;
<body><div id="app"><p>当前完整时间为:{{data | dateString}}</p><p>当前日期为:{{data | dateString('YYYY-MM-DD')}}</p><p>当前时间为:{{data | dateString('HH:mm:ss')}}</p></div><script src="js/vue.js" type="text/javascript"></script><script src="https://cdn.bootcss.com/moment.js/2.22.1/moment.js"></script><script type="text/javascript">// 自定义过滤器Vue.filter('dateString',function(value,format){return moment(value).format(format || 'YYYY-MM-DD HH:mm:ss')})new Vue({el: "#app",data: {data: new Date()}})</script>
</body>
1.13.内置指令和自定义指令
常用的内置指令
- v:text : 更新元素的 textContent
- v-html : 更新元素的 innerHTML
- v-if : 如果为 true, 当前标签才会输出到页面
- v-else: 如果为 false, 当前标签才会输出到页面
- v-show : 通过控制 display 样式来控制显示/隐藏
- v-for : 遍历数组/对象
- v-on : 绑定事件监听, 一般简写为@
- v-bind : 强制绑定解析表达式, 可以省略 v-bind
- v-model : 双向数据绑定
- ref : 指定唯一标识, vue 对象通过$els 属性访问这个元素对象
- v-cloak : 防止闪现出现
{{xxx}}
, 与 css 配合: [v-cloak] { display: none }
<title>内置指令</title><style>[v-cloak] {display: none;}</style>
</head><body><div id="app"><p ref="content">四川码酱</p><button @click = "hint">提示</button><p v-cloak>{{msg}}</p></div><script src="js/vue.js" type="text/javascript"></script><script type="text/javascript">new Vue({el: "#app",data: {msg: "Hello 四川码酱"},methods: {hint(){alert(this.$refs.content.textContent);}}})</script>
</body>
说明:
v-cloak
指令是为了页面加载数据缓慢时候显示{{xxx}}
标签而出了一个指令,与CSS搭配使用
自定义指令
注册全局指令,方法如下:
Vue.directive('my-directive', function(el, binding){el.innerHTML = binding.value.toupperCase()
})
注册局部指令,方法如下:
directives : {'my-directive' : {bind (el, binding) {el.innerHTML = binding.value.toupperCase()}}
}
<body><div id="app"><p v-upper-text="msg"></p><p v-lower-text="msg"></p></div><script src="js/vue.js" type="text/javascript"></script><script type="text/javascript">// 定义全局指令// el:指令属性所在的标签属性// binding:包含指令相关信息数据的对象Vue.directive('upper-text', function(el,binding){el.textContent = binding.value.toUpperCase()console.log(el,binding)})new Vue({el: "#app",data: {msg: "This is my think life"},directives: { // 使用自定义局部指令'lower-text' : function(el,binding){el.textContent = binding.value.toLowerCase()}}})</script>
</body>
1.14.核心知识总结
- Vue是前端开发库,用于构建用户界面,遵循MVVM模式,编码简洁,体积小,效率高,包含了一些列插件库;
- 基本使用:引入vue.js,创建vue实例对象,其中el代表dom标签选择器,data代表初始化数据对象;
-
el
:指定dom标签容器的选择器,一般写一个根标签; -
data
:对象或者函数类型,指定初始化状态属性数据的对象,页面中可以使用{{xxx}}
直接访问 -
methods
:包含多个方法的对象,供页面中的事件指令来回调,回调函数默认有$event
参数,也可以指定自己的参数,在方法中,访问data中的属性直接使用this.xxx
; -
computed
:计算属性,包含多个方法的对象,对状态属性进行计算处理后返回给页面一个新的数据,使用get和set方法实现属性的计算读取,同时监视数据的变化; -
watch
:监视,包含多个属性监视的对象,xxx.function(value){}
,可以传入两个参数,代表新值和改变前的值,也可以使用vm.$watch('xxx', function(value){})
的方式添加监听; - vue中的过渡和动画,实质就是vue操作css的transition/animation属性;
- 生命周期:常用的钩子函数是
created() / mounted()
: 启动异步任务(启动定时器,发送ajax请求, 绑定监听)和beforeDestroy()
: 做一些收尾的工作例如清除定时器等; - 自定义过滤器:使用的是
Vue.filter(filterName,function(value){})
,在页面使用方法:{{myData | filterName(arg)}}
,参数可传可不传; - vue内置指令:
v-for遍历
、@绑定事件
、v-model数据双向绑定
、ref标识标签
; - 自定义指令:使用
Vue.directive
注册全局指令,使用directives
注册局部指令;
注意:数据在哪个组件,更新数据的行为(方法)就应该定义在那个组件中
二、Vue组件化编码方式
2.1.使用vue-cli创建模板项目
vue-cli是vue官方提供的脚手架工具,首先确认安装了node和npm,最好安装一个cnpm,使用方法如下:
- npm install -g vue-cli
- vue init webpack vue_demo 其中 vue_demo是项目名
- cd vue_demo
- npm install或者npm run dev
项目结构说明
- build : webpack 相关的配置文件夹(基本不需要修改)
- dev-server.js : 通过 express 启动后台服务器
- config: webpack 相关的配置文件夹(基本不需要修改)
- index.js: 指定的后台服务的端口号和静态资源文件夹
- src : 源码文件夹
- components: vue 组件及其相关资源文件夹
- App.vue: 应用根主组件
- main.js: 应用入口 js
- static: 静态资源文件夹
- .babelrc: babel 的配置文件
- .eslintignore: eslint 检查忽略的配置
- .eslintrc.js: eslint 检查的配置
- .gitignore: git 版本管制忽略的配置
- index.html: 主页面文件
- package.json: 应用包配置文件
- README.md: 应用描述说明的 readme 文件
简单的使用Vue模板项目
首先,我们编写了一个HelloWord的组件,
<template><div class="hello"><h1 class="msg">{{ msg }}</h1></div>
</template><script>
export default {// 配置对象和Vue一致data() {// data可以 写对象和函数,但是在组件中必须使用函数return {msg: "Hello Welcome to My Vue"};}
};
</script><style scoped>.msg {color: red}
</style>
然后,我们在App.vue中使用我们自己定义的组件
<template><div id="app"><img class="logo" src="./assets/logo.png"><!-- 使用组件标签 --><HelloWorld/> </div>
</template><script>
// 1.引入需要使用的vue组件(HelloWoed组件)
import HelloWorld from './components/HelloWorld'export default {components: { // 2.映射组件标签HelloWorld}
}
</script><style>
.logo{width: 100px;height: 100px;
}
</style>
我们知道使用Webpack打包后会生成一个js文件,也就是入口文件main.js
import Vue from 'vue'
import App from './App'Vue.config.productionTip = falsenew Vue({el: '#app', // 挂载到入口Dom节点(index.html)components: { App }, // 映射组件标签template: '<App/>' //使用标签
})
2.2.项目打包发布方式
打包命令:npm run build
使用静态服务器:安装命令:npm install -g serve
,发布命令:serve dist
,然后直接访问就可以了
使用动态web服务器(Tomcat):修改webpack.prod.conf.js,加入output: {publicPath: '/xxx/' //打包文件夹的名称}
,然后重新打包,将dis文件夹的名称改为项目名称,放在tomcat的webapp目录下,访问即可;
2.3.组件的定义
三、Vue请求方式vue-ajax
四、Vue组件库
五、Vue路由vue-router
六、Vue状态管理vuex
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- vue3.0 Typescript
———————————————— 本文为CSDN博主「菜鸡的全栈路」的原创文章,原文链接:https://blog.csdn.net/qq_39403733/article/details/93807519 https://blog.csdn.net/qq_39403733/article/details/93756705 转载过来根据个人习惯以及理解 对文…...
2024/5/1 22:19:34 - 前端技术:Vue+MVVM框架+
早期开发,VB (Cliebt/Server,word)微软, 数据驱动Vue项目组件化 Vue概念 早期开发,VB (Client/Server/word) 微软, B/S (Broswer/Server) ASP,ASPCOM2000年,IIS(web中间件) .net C#抄袭JAVA java 2004,…...
2024/5/1 5:36:48 - jenkins+gitlab+vue进行自动化构建部署项目打包
安装jenkins的教程请去点击这里 从服务器里安装node环境, liux终端中下载 # wget https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-x86.tar.xz 下载文件后 上传到服务器 解压,然后建立软连接变为全局 ,类似于 windows 配置环境变量 1…...
2024/4/21 14:48:48 - 歌谣--回顾2020 展望2021
目录 歌谣--简介 歌谣--三年半工作技能总结 歌谣--与csdn的故事 歌谣--过去的2020...
2024/4/21 14:48:46 - 双眼皮埋线眼里有淤血
...
2024/4/29 19:23:51 - 双眼皮埋线眼睛睁不开
...
2024/4/21 14:48:45 - 双眼皮埋线需要抽血吗
...
2024/4/21 14:48:43 - 双眼皮埋线想拆掉重做
...
2024/4/29 14:06:42 - 双眼皮埋线线容易开吗
...
2024/4/21 14:48:41 - 双眼皮埋线线容易断吗
...
2024/4/23 10:44:22 - 双眼皮埋线线断了图片
...
2024/4/21 14:48:39 - 双眼皮埋线吸脂视频
...
2024/4/25 8:09:35 - 双眼皮埋线太深会怎样
...
2024/4/26 22:18:46 - 双眼皮埋线太紧的后果
...
2024/4/21 14:48:37 - R语言学习:RStudio安装
RStudio安装地址: http://rstudio.com Powerful IDE for R -> Desktop -> Free download -> RStudio 0.99.879 - Windows Vista/7/8/10 RStudio安装:双击RStudio-0.99.879.exe -> 欢迎界面,next -> 选择安装路径,next -> 确定开始菜单文件夹名字,next…...
2024/4/21 14:48:35 - 双眼皮埋线失败能退钱
...
2024/4/21 14:48:34 - 双眼皮埋线如何热敷
...
2024/4/26 22:58:00 - 双眼皮埋线如何取出线
...
2024/4/20 15:15:36 - Angular2笔记(二)--指令
3.核心概念 2.指令 组件也是指令的一种,组件是继承与指令,不同在于: 组件是自身带有模版的,指令没有,指令是起作用于组件上的模版 指令分为两种: 属性指令 改变组件模版的外观或者行为,如样…...
2024/4/20 15:15:35 - 双眼皮埋线全过程视频
...
2024/4/27 22:46:33
最新文章
- 在Spring中注入动态代理Bean
在Springboot中我们可以通过内置的注解如Service,Component,Repository来注册bean,也可以在配置类中通过Bean来注册bean。这些都是Spring内置的注解。 除此之外,还可以用WebFilter,WebServlet,WebListener…...
2024/5/1 23:42:42 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Gin环境搭建详解
Gin环境搭建详解: 要安装Gin软件包,需要先安装Go并设置Go工作区。Gin环境搭建步骤如下: 【Gin框架】Gin环境搭建 Gin程序的热加载 Gin路由 GET POST PUT DELETE 1. 下载并安装 gin : $ go get -u github.com/gin-gonic/gin 2. …...
2024/5/1 20:13:42 - JRT高效率开发
得益于前期的基础投入,借助代码生成的加持,本来计划用一周实现质控物维护界面,实际用来四小时左右完成质控物维护主体,效率大大超过预期。 JRT从设计之初就是为了证明Spring打包模式不适合软件服务模式,觉得Spring打包…...
2024/5/1 5:50:00 - 深入浅出 -- 系统架构之微服务中Nacos的部署
前面我们提到过,在微服务架构中,Nacos注册中心属于核心组件,通常我们会采用高性能独立服务器进行部署,下面我们一起来看看Nacos部署过程: 1、环境准备 因为Nacos是支持windows和Linux系统的,且服务器操作…...
2024/5/1 13:05:05 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57