欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vue第一节课

程序员文章站 2024-02-10 09:20:16
...

什么是MVVM?

M model 模型   当前视图中可用的数据

V view 视图  页面DOM  html

C controller 控制器   处理/加工model

viewModel   监控者  

 

Vuejs的核心

Vue官网对它的描述:通过尽可能简单的API实现响应的数据绑定和组合视图组件。

1、Vue的数据驱动:数据改变驱动了视图的自动更新,传统的做法你得手动改变DOM来改变视图,vuejs只需要改变数据,就会自动改变视图,一个字:爽。再也不用你去操心DOM的更新了,这就是MVVM思想的实现。

2、视图组件化:把整一个网页的拆分成一个个区块,每个区块我们可以看作成一个组件。网页由多个组件拼接或者嵌套组成。

 

Webpack是什么?

Webpack是一个前端打包和构建工具。如果你之前一直是手写HTML,CSS,JavaScript,并且通过link标签将CSS引入你的HTML文件,以及通过Script标签的src属性引入外部的JS脚本,那么你肯定会对这个工具感到陌生。 WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。

1、热加载 Webpack不止这点功能,它还可以通过安装各种插件来扩展,比如说热加载技术,就是解放键盘的F5键。让我们修改代码,并且按Ctrl+S保存之后,浏览器页面自动刷新变化,不需要我们去手动刷新 ;

2、模块化,让我们可以把复杂的程序细化为小的文件;

3、scss,less等CSS预处理器。

 

Vue-CLi是啥

它是一个vue.js的脚手架工具。说白了就是一个自动帮你生成好项目目录,配置好Webpack,以及各种依赖包的工具。

 

简单demo

tab切换

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<link rel="stylesheet" type="text/css" href="css/index.css"/>
	<script type="text/javascript" src='js/vue.js'></script>
	<script type="text/javascript" src='js/axios.js'></script>
</head>
<body>
	<div id="my">
		<!--默认写法-->
		<ul class="tab-tit">
			<li v-bind:class="n==1?'active':''" v-on:click="action(1)">{{n}}标题一</li>   
			<li :class="n==2?'active':''" @click="n=2">标题二</li>
			<li :class="n==3?'active':''" @click="n=3">标题三</li>
			<li :class="n==4?'active':''" @click="n=4">标题四</li>
		</ul>
		<div class="tab-con">
			<div v-if="n==1">
				内容一
			</div>
			<div v-show="n==2">
				内容二
			</div>
			<div v-show="n==3">
				内容三
			</div>
			<div v-show="n==4">
				内容四
			</div>
		</div>

		<!--数组写法-->
		<ul class="tab-tit">  
			<li v-for="(v,index) in title"  :class="n==index?'active':''" @click="n=index">{{v}}</li>
		</ul>
		<div class="tab-con">
			<div v-for="(c,i) in content" v-if="n==i">
				{{c}}
			</div>
		</div>

		<!--数组对象写法-->
		<ul class="tab-tit">  
			<li v-for="(v,index) in lists"  :class="n==index?'active':''" @click="n=index">{{v.title}}</li>
		</ul>
		<div class="tab-con">
			<div v-for="(c,i) in lists" v-if="n==i">
				{{c.content}}
			</div>
		</div>

		<!--动态数据写法-->
		<ul class="tab-tit">  
			<li v-for="(v,index) in items"  :class="n==index?'active':''" 
				@click="n=index">{{v.name}}</li>
		</ul>
		<div class="tab-con">
			<div v-for="(c,i) in items" v-if="n==i">
				{{c.con}}
			</div>
		</div>
    </div>
    <script>
		window.onload = function(){
		    var vm = new Vue({
		        el:"#my",  //element元素
		        data:{   //数据  响应式数据
		            n:1,  //数据驱动  设置一个变量来控制
		            title:['标题1','标题2','标题3','标题4'],
		            content:['内容1','内容2','内容3','内容4'],
		            lists:[
		                {title:'a',content:'a1'},
		                {title:'b',content:'b1'},
		                {title:'c',content:'c1'},
		                {title:'d',content:'d1'},
		                {title:'e',content:'e1'},
		            ],
		            items:[]
		        },
		        methods:{   //方法
		            action:function(i){
		                this.n = i;
		            },
		            getItems(){
		                var that = this;  //局部定义
		                axios({
		                    method:'get',   //类型
		                    url:'http://localhost:3333/get_tablist'
		                }).then(res=>{
		                    console.log(res);
		                    console.log(this);   //window
		                    this.items = res.data.result;  //赋 值渲染
		                }).catch(function(error){

		                })
		            }
		        },
		        mounted(){  //生命周期钩子函数  表示挂载完成
		            this.getItems();
		        }
		    })
		}
    </script>
	
</body>
</html>