vue理论基础知识

一、Vue基础知识

1、 前端三大主流框架:Vue.js、Angular.js、React.js

2、 Vue遵循MVVM模式,MVVM(model view viewModel), 本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI和业务逻辑分开。

3、 数据绑定最常见的形式就是使用 {{…}}(双大括号)的文本插值,使用 v-html 指令用于输出 html 代码,表达式{{5+5}}的结果为10。

4、 HTML 属性中的值应使用 v-bind 指令,事件监听使用v-on指令

5、 什么是双向数据绑定?

View层中数据的更新会及时更新到model中,model中的数据更新会及时渲染到view中。这种方式叫做双向数据绑定

v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。

6、 缩写:

Vue.js 为两个最为常用的指令提供了特别的缩写:

v-bind缩写

<a v-bind:href="url"></a>

<!-- 缩写 -->

<a :href="url"></a>

v-on缩写

<a v-on:click="doSomething"></a>

<!-- 缩写 -->

<a @click="doSomething"  ></a>

7、 Vue条件语句的三种写法分别是:v-if,v-else,v-else-if

8、 v-show与v-if的区别

v-show指令是通过修改元素的displayCSS属性让其显示或者隐藏

v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果

9、 循环使用 v-for 指令,v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名

10、 计算属性的关键词是:computed

11、 props是父组件用来传递数据的一个自定义属性。父组件的数据需要通过该属性把数据传给子组件。

12、 子组件调用父组件的方法可以使用this.$emit()

13、 让css只在当前组件中起作用的属性是scoped

14、 计算属性和函数的区别

我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

15、 代码

  1. 显示出“vue学习”
<body>

		<div id="test">

​			<h1>姓名:{{name}}</h1>

​		</div>

		<script>

​		 var info = new Vue({

​		 	el:"#test",

​		 	data:{

​		 		name:"vue学习"

​		 	}

​		 })

​		</script>

​	</body>

关键点:

data 用于定义属性。

methods 用于定义的函数,可以通过 return 来返回函数值。

{{ }} 用于输出对象属性和函数返回值。

  1. 将html代码"

    vue study!

    "编译输出
<body>
		<div id="test">
			<div v-html="name"></div>
​		</div>
		<script>
​		 var info = new Vue({
​		 	el:"#test",
​		 	data:{
​		 		name:"<h1>vue study!</h1>",
​		 	}
​		 })
​		</script>
​</body>

关键点:v-html 指令用于输出html代码。

  1. 使用v-bind指令指定class选择器
<style type="text/css">
	.red{background-color:#f00}
</style>
<div id="test">
			<div v-bind:class='style1'>{{name}}</div>
         <!--缩写形式-->
 		<div :class='style1'>{{name}}</div>
</div>
<script>
		  var info = new Vue({
		  	el:"#test",
		  	data:{
            name: "vue学习",
		  		style1:'red'
		  	}
		  })
</script>

关键点:v-bind指令用于控制html属性的值。

  1. 使用v-bind指令指定href属性
<div id="test">
			<a v-bind:href="url">百度</div>
</div>
<script>
		  var info = new Vue({
		  	el:"#test",
		  	data:{
		  		name:' vue学习',
		  		url:'http://www.baidu.com'
		  	}
		  })
</script>

关键点:v-bind指令用于控制html属性的值。

  1. v-for 绑定数据到数组来渲染一个列表
<ol id="test">
			<li v-for="site in sites">
				{{site.name}
			</li>
		</ol>
		<script>
			var info = new Vue({
				el:'#test',
				data:{
					sites:[
					{name:'zhangsan'},
					{name:'lisi'},
					{name:'wangwu'}
					]
				}
			})
		</script>
  1. v-for 可以通过一个对象的属性来迭代数据
<ol id="test">
			<li v-for="value in object">
				{{value}}
			</li>
		</ol>
		<script>
			var info = new Vue({
				el:'#test',
				data:{
					object:{
						name:'张三',
						sex:'男',
						age:18
					}
				}
			})
		</script>
  1. v-for迭代整数(打印出1,2,3…10)
<ul id="test">
			<li v-for="num in 10">
				{{num}}
			</li>
		</ul>
		<script>
			var info = new Vue({
				el:'#test'
			})
		</script>
  1. 使用计算属性computed修改如下字符串反转操作代码
<div id="test">
	      {{message.split('').reverse().join('')}}
		</div>
		<script>
			var info = new Vue({
				el:'#test',
				data:{
					message:'vue.js'
				}
			})
		</script>

代码修改后:

<div id="test">
	     {{reverseMessage}}
		</div>
		<script>
			var info = new Vue({
				el:'#test',
				data:{
					message:'vue.js'
				},
				computed:{
					reverseMessage:function(){
						return this.message.split('').reverse().join('');
					}
				}
			})
		</script>
  1. 点击按钮“增加1”,数值+1并显示

方法1:调用一个定义的方法

<div id="app">
	    	<button v-on:click="count+=1">增加1</button>
	    	<p>这个按钮被点击了{{count}}次</p>
	</div>
<script type="text/javascript">
			var info = new Vue({
				el:"#app",
				data:{
					count:1
				}
			});
		</script>

方法2:调用一个定义的方法

<div id="app">
		<button v-on:click="add">增加1</button>
		<p>这个按钮被点击了{{count}}次</p>
		</div>
<script type="text/javascript">
			var info = new Vue({
				el:"#app",
				data:{
					count:1
				},
				methods:{
					add:function(){
						this.count++
					}
				}
			});
	</script>
  1. 用 v-model 指令在input元素上创建双向数据绑定
<div id="app">
	    	<h1>input元素:</h1>
	    	姓名:<input v-model="message">
	    	<p>{{message}}</p>
	    	
	    </div>
		<script type="text/javascript">
			var info = new Vue({
				el:"#app",
				data:{
					message:'姓名'
				}
			});
		</script>

二、Vue-cli(脚手架)相关知识

16、 npm方法安装vue脚手架,前提是需要先安装node环境

17、 脚手架(vue-cli)搭建与使用的常用命令

  1. 搭建脚手架命令:npm install -g @vue/cli

  2. 查看vue版本的命令:vue --version或vue -V

  3. 创建项目(如:项目名为test): vue create test

  4. 启动项目:npm run serve

  5. 项目打包:npm run build

  6. 访问项目(8080端口):http://localhost:8080/

  7. 安装axios:npm install axios

18、 通过 Vue.js 可以实现多视图的单页Web应用,不管是访问的哪个视图,浏览器始终访问的都是App.vue这个页面,只不过在替换掉了对应内容

19、 想要实现视图的跳转,需要先配置路由,配置的文件是router/index.js,配置的两种方法分别是:

方法1方法2
import News from ‘…/views/News.vue’{ path: ‘/news’, name: ’ News ', component: News }{ path: ‘/news’, name: ’ News ', component: () => import( ‘…/views/News.vue’)}

20、 访问静态路由

<router-link to="/news">跳转到news</router-link>

21、 访问动态路由(传值),分为两种方法,分别是params和query

22、 Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求

在这里插入图片描述

23、 什么是跨域?

在浏览器里面域名、端口、ip地址、协议,有任何一项不同,则跨域,常用解决方法:代理服务器,操作方法:

1) 在项目目录下新建文件vue.confit.js

2) 加入代码

module.exports = {
    devServer:{
        host:'localhost',
        port:8080,
        proxy:{
           '/book':{
               target:'https://mini.zhangjiwei.top',//要跨域的域名
               changeOrigin:true//是否开启跨域
           },
           '/detail':{
            target:'https://mini.zhangjiwei.top',//要跨域的域名
            changeOrigin:true//是否开启跨域
        } 
        } 
    }
}

24、你所知道的基于 Vue 2.0 的桌面端组件库有:Element(或Element UI),Vant

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值