• Vue框架学习(一)


    一、Vue简介

    1.定义

    Vue是一个基于JavaScript的渐进式框架。渐进式:可以控制一个页面的一个标签、一系列标签、也可以控制整个页面,甚至控制整个前台项目

    2.vue的优势

    有指令(分支结构,循环结构),复用页面结构

    有实例成员(过滤器、监听),可以对渲染的数据做二次格式化

    有组件(模块的复用和组合),可以快速搭建页面

    3.三大前端框架
    • Angular (庞大)
    • React (常用于移动端)
    • Vue (吸取两者优势、轻量级)文档是中文

    二、Vue环境搭建

    """
    1)cdn
    <script src="https://cn.vuejs.org/js/vue.js"></script>
    
    2)本地导入
    <script src="js/vue.js"></script>
    """
    

    三、挂载点

    Vue对象中,el表示挂载点

    1.一个挂载点只能控制一个页面结构
    2.挂载点挂在的页面标签严格建议使用id属性进行匹配
    3.html标签与body标签不能作为挂载点
    4.可以选择用变量去接受实例化的vue对象
    

    四、插值表达式

    1.空插值表达式 {{ }},需要有空格
    2.{{ }}中渲染的变量需要在data中初始化
    3.插值表达式可以进行简单运算
    4.插值表达式与其他模版语法冲突时,可以用delimiters自定义
    

    可以将delimiters插值表达式改为标识符为[{ }]。

    <script src='js/vue.js'></script>
    <script>
        let app = new Vue({
            el : '#app',
            data : {
                nums:[1,2,3,4]
            },
            delimiters:['[{','}]']
        })
    </script>
    

    插值表达式里可以调用属性、方法

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		<div id='app'>
    			<p>{{ nums[3] }}</p>
    			<p>{{ }}</p>
    			<p>{{ a + b }}</p>
    			<p>{{ a + b * 2}}</p>
    			<p>{{ msg.length + a }}</p>
    			<p>{{ msg.split('') }}</p>
    		</div>
    	</body>
    	<script src='js/vue.js'></script>
    	<script>
    		let app = new Vue({
    			el : '#app',
    			data : {
    				a : 1,
    				b : 2,
    				msg : 'hello world',
    				nums:[1,2,3,4]
    			},
    			// delimiters:['[{','}]']
    		})
    	</script>
    </html>
    
    

    五、过滤器

    1.用实例成员filters来定义过滤器
    2.在页面结构中,用|来标识并调用过滤器
    3.过滤方法的返回值就是过滤器过滤后的结果
    4.过滤器可以对1~n个变量进行过滤,同时还可以传入辅助的变量。过滤器方法接收参数时按照传入的位置从左到右。
    
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		<div id="app">
    			<p>{{ a,10|add|mutilply(10,20)}}</p>
    		</div>
    	</body>
    	<script src='js/vue.js'></script>
    	<script>
    		let app = new Vue({
    			el : "#app",
    			data : {
    				a : 1
    			},
    			filters:{
    				add : function(a,b){
    					return a + b
    				},
    				mutilply : function(a,b){
    					return a * b
    				}
    			}
    		})
    	</script>
    </html>
    
    # 过滤器可以串联使用,从左到右执行。上一个过滤器的结果会当做下一个过滤器的参数传入。如果参数不够,则参数为undefined。如果参数太多,则多余的参数不会被接收。
    <p>{{ n1, n2 | fn(99, 77), n1, n2 | fn(100) }}</p>
    

    六、文本指令

    1.v-*是vue指令,会被vue解析,v-text="num"中的num表示一个变量,如果在data中未定义num,则会报错。v-text="'num'",则表示字符串。
    2.v-text是原样输出渲染内容。
    3.v-html可以解析渲染html语法的内容
    
    
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		<div id="app">
    			<p v-text="msg"></p>
    			<p v-text="'msg'"></p>
    			<p v-text="true"></p>
    			<p v-text="false"></p>
    			<p v-text="111"></p>
    			<p v-html="msg_html"></p>
    		</div>
    	</body>
    	<script src='js/vue.js'></script>
    	<script>
    		let app = new Vue({
    			el:"#app",
    			data:{
    				msg : 'hello world',
    				msg_html: "<h1>hello world</h1>"
    			}
    		})
    	</script>
    </html>
    
    

    七、js对象内容补充

    1.js没有字典类型,只有自定义对象,可以完全替代字典来使用。
    2.js中对象的属性名,都采用自字符串类型,所以就可以省略字符串的引号
    3.对象中属性值为函数时,称之为方法,方法可以简写为: 方法名(){}
    4.如果对象的属性值是一个变量,且变量名与属性名相同,则可以简写{属性,}
    
    
    let obj = {
        'name' : "Bob",
        'eat' : function(){
        console.log("I'm eating...")
        }
    }
    console.log(obj.name,obj['name'])
    obj.eat()
    
    

    简写

    let obj1 = {
        name:'Bob',
        eat(){
            console.log("I'm eating")
        }
    }
    console.log(obj1.name,obj1['name'])
    obj1.eat()
    
    

    属性简写

    let height = 180
    let obj2 = {
        height,
        name:'Bob',
    }
    console.log(obj2.height,obj2.name)
    
    
    JS中类的声明

    prototype为类属性赋值

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		
    	</body>
    	<script>
    		let obj = {
    			'name' : "Bob",
    			'eat' : function(){
    				console.log("I'm eating...")
    			}
    		}
    		console.log(obj.name,obj['name'])
    		obj.eat()
            
    		// 方法简写 
    		let obj1 = {
    			name:'Bob',
    			eat(){
    				console.log("I'm eating")
    			}
    		}
    		console.log(obj1.name,obj1['name'])
    		obj1.eat()
    		// 属性简写
    		let height = 180
    		let obj2 = {
    			height,
    			name:'Bob',
    		}
    		console.log(obj2.height,obj2.name)
    		
    		
    		// js中声明一个类
    		class People{
    			constructor(name) {
    			    this.name = name
    			}
    			eat(){
    				console.log(this.name + " is eating...")
    			}
    		}
    		let obj3 = new People('Kimmy')
    		let obj4 = new People('David')
    		console.log(obj3.name,obj3.school)
    		console.log(obj4.name,obj4.school)
    		obj3.eat()
    		obj4.eat()
    		People.prototype.school = 'OldBoy'
    		console.log(obj3.name,obj3.school)
    		console.log(obj4.name,obj4.school)
    		
    		// 第二种声明方式
    		function Student(name){
    			this.age =18
    			this.name = name
    			this.fly = function(){
    				console.log(this.name + ' is flying')
    			}
    		}
    		let obj5 = new Student('Amy')
    		let obj6 = new Student('Daming')
    		console.log(obj5.name,obj5.age)
    		console.log(obj6.name,obj6.age)
    		obj5.fly()
    		obj6.fly()
    		
    	</script>
    </html>
    
    

    八、js函数内容补充

    函数的形参和调用时传入的实参关系:传入和接收的参数个数不需要一致,按位置进行赋值,不存在关键字参数,多余的实参不会被接收,没有被赋值的形参会被赋值为undefined。

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		
    	</body>
    	<script src="js/vue.js"></script>
    	<script type="text/javascript">
    		// 函数定义1
    		function fn1(a,b){
    			console.log(a+b)
    			return a + b 
    		}
    		fn1(1,10)
    		
    		// 函数定义2
    		let fn2 = function(a,b){
    			console.log(a+b)
    			return a + b 
    		}
    		fn2(1,10)
    		
    		// 箭头函数
    		let fn3 = (a,b)=>{
    			console.log(a+b)
    			return a + b
    		}
    		fn3(1,10)
    		
    		
    		// 箭头函数只有一条语句时可以省去{}
    		let fn4 = (a,b)=>console.log(a*b +10)
    		fn4(1,10)
    		
    		// 当形参只有一个时,可省略()
    		let fn5 = a => console.log(a*a)
    		fn5(10)
    		
    		console.log(5)
    		console.log(10+ '5')
    		console.log('55555')
    		// 快速类型转换 字符串 ---> 数字类型
    		console.log(+'55555')
    	</script>
    </html>
    
    

    九、事件指令

    * 一、数据驱动
    *  1)操作是一个功能,使用需要一个方法来控制 2)方法名是变量,所以控制变量就可以控制该方法
    *
    *
    * 二、事件指令
    *  1)在实例成员methods中声明事件方法
    *  2)标签通过事件指令绑定声明的方法: v-on:事件名="事件方法名"   eg: <button v-on:click="btnClick">按钮</button>
    
    
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		<div id="app">
    			<!-- 直接绑定事件名默认传入事件对象 -->
    			<button v-on:click="my_click">{{ btn }}</button>
    			
    			<!-- 加括号手动传入参数,$event可传入事件对象-->
    			
    			<p>{{ num }}</p>
    			<p v-text="msg"></p>
    			<button v-on:click="increase(btn1,$event)">{{ btn1 }}</button>
    			<button v-on:click="decrease(btn2,$event)">{{ btn2 }}</button>
    			<hr>
    
    		</div>
    		
    	</body>
    	<script src="js/vue.js"></script>
    	<script>
    		let app = new Vue({
    			el:'#app',
    			data:{
    				num: 0,
    				btn:'点我',
    				btn1:'增加',
    				btn2:'减少',
    				msg:'',
    			},
    			methods:{
    				my_click(ev){
    					console.log(ev)
    				},
    				increase(btn,ev){
    					this.num++
    					this.msg = '你点击了' + btn
    					console.log(ev.clientX,ev.clientY)
    				},
    				decrease(btn){
    					this.num--
    					this.msg = '你点击了' + btn
    				}
    			}
    		})
    	</script>
    </html>
    
    
  • 相关阅读:
    [转]JavaScript和html5 canvas生成圆形印章
    [转]微信小程序开发:http请求
    [转]Clean up after Visual Studio
    [转]How to Clean the Global Assembly Cache
    [转].NET Core dotnet 命令大全
    [转].NET 4.5+项目迁移.NET Core的问题记录 HTTP Error 502.5
    [转]How do I run msbuild from the command line using Windows SDK 7.1?
    [转]glyphicons-halflings-regular字体 图标
    [转]程序集之GAC---Global Assembly Cache
    [转]How can I install the VS2017 version of msbuild on a build server without installing the IDE?
  • 原文地址:https://www.cnblogs.com/Ghostant/p/12316852.html
Copyright © 2020-2023  润新知