、Vue总结

1

"""
1、在html页面中用script标签导入vue环境
	<script src="js/vue.js"></script>
	
2、new Vue({ el: "#app" })挂载页面标签,建立关联后控制页面标签
	挂载点才有css3选择器语法
	挂载点就是vue与页面的关联
	挂载点只检索第一个匹配结果

3、插值表达式{{ }}可以完成基础运算
	num | num + 10 | str.split() + "拼接" 

4、插值表达式中的变量有实例成员 data 来提供
	<p id="app">{{ msg }}</P>
	let msg = '12345'
	new Vue({
		el: "#app",
		data: {
			msg,
		}
	})

5、v-on指令可以给标签绑定事件,事件函数由实例成员 methods 来提供
6、插值表达式{{ 变量 | 过滤器 }}的过滤器由实例成员 filters 来提供
	<p id="app" @click="fn">{{ msg | f1(1), 10 | f2(100, 200) }}</P>
	let msg = '12345'
	new Vue({
		el: "#app",
		data: {
			msg,
		},
		methods: {
			fn(){}
		},
		filters: {
			f1(v1,v2){return v1+v2},
			f2(v1,v2,v3,v4){return v1+v2+v3+v4}
		}
	})


7、面向对象js: { 变量, } | function Fn(值){ this.属性 = 值 } | obj = { 方法(){} }
	function Fn(v1, v2){
		this.n1 = v1;
		this.n2 = v2;
	}
	let f1 = new Fn(10, 20);
	f1.n1

8、文本指令:{{ }} | v-text=""  | v-html=""
9、事件指令: v-on:事件名="" | @事件名="" | :事件名="fn" | :事件名="fn($event, 自定义参数)"
	@click="fn"  |  @click="fn()"  |  @click="fn(10, 20)"  |  @click="fn($event, 10)"

10、属性指令:v-bind:属性名="" | :title="变量" | :style="字段变量" | 
			:class="变量" | :class="[变量1, 变量2]" | :class="{类1:真假, 类2:真假}"
	:title="var1" | :style="dic1" | :class="var2" | :class="[var3, var4]" | 
	:class="{box: true|false}"
	
	var2 = 'box' | var2 = 'box circle'
			
"""

2


"""
1、v-model完成表单指令,简单的控制value,单选框中的使用,单独复选框的使用以及复选框中的使用
	<input type="password" v-model="控制value的变量" />

2、了解:斗篷指令解决页面闪烁
	v-cloak =>  [v-cloak] {display:none} => 加载vue就会清除v-cloak属性

3、条件指令v-if与v-show区别,v-if家族成员以及上分支会成立会屏蔽下分支的工作机制
	v-if不渲染隐藏 | v-show以display:none渲染隐藏
	v-if | v-else-if | v-else

4、循环指令v-for如何循环渲染字符串、数组、字典,以及需要嵌套循环渲染赋值结构
	v-for="v in str"  v-for="(v,i) in str"
	v-for="v in arr"  v-for="(v,i) in arr"
	v-for="v in dic"  v-for="(v,k) in dic"  v-for="(v,k,i) in dic"
	[{},{}] {a:[]} [str1,str2]

5、了解:delimiters实例成员解决插值表达式符号冲突
	delimiters: ['{{', '}}']

6、计算属性(方法属性)在computed中声明,方法内部变量会被监听,值来源于方法返回值
	computed: {
		methodAttr() {
			// 内部出现的变量都会被监听,发生值更新会回调该方法
			return '方法属性的值'
		}
	}
	
7、监听watch可以设置数据的监听方法,在监听属性更新时,完成特定逻辑
	watch: {
		attr() {
			// attr属性被监听,发生值更新会回调该方法
		}
	}
	
8、重点:组件的概念,组件就是vue实例(对象)
	<div id="app">
		<tag />
		<tag />
	</div>
	
	let tag = {
		template: '<p>子组件</p>'
	}
	
	new Vue({
		el: '#app',
		components: {
			tag,
		}
	})

9、创建、注册、使用子组件的三部曲
"""

3

"""
1、可以用来复用的子组件,数据data需要做局部化处理,当组件被复用时,数据会相互独立
	let tag = {
		template: '...',
		data() {
			return {
				...
			}
		}
	}

2、将父组件的数据传递给子组件,在渲染子组件标签时,给自定义属性设置父级数据,在子级内部用自定义属性拿父级数据
	let tag = {
		template: '<div>{{ msg }}</div>',
		props: ['msg']
	}
	new Vue({
		template: '<div><tag :msg="msg"></tag></div>',
		components: {
			tag,
		},
		data: {
			msg: '123'
		}
	})

3、将子组件的数据传递给父组件,子组件需要主动触发$emit自定义事件携带出数据,父级实现自定义事件方法,就可以接收到子级数据
	let tag = {
		template: '<div @click="fn">{{ msg }}</div>',
		data() {
			return {
				msg: '123'
			}
		},
		methods: {
			fn() {
				this.$emit('func', this.msg)
			}
		}
	}
	new Vue({
		template: '<div><tag @func="f"></tag></div>',
		components: {
			tag,
		},
		methods: {
			f(msg) {
				console.log(msg)
			}
		}
	})

4、搭建vue环境需要依赖node环境,以及用npm包管理器安装vue脚手架cli(npm可以换源为cnpm)
5、通过 vue create 项目 来创建前台项目,选择配置好项目所需的依赖
6、用pycharm来配置vue项目启动
7、属性vue项目目录结构,以及基本的各种原理:项目入口从main.js开始
"""

4

"""
1、箭头函数 let fn = (a, b) => a + b;
	let 函数名 = (参数列表) => {函数体}

2、函数原型:给函数设置原型 Fn.prototype.变量 = 值,那么Fn new出来的对象都可以共用 原型变量
	function Fn() {}
	let f1 = new Fn()
	let f2 = new Fn()
	Fn.prototype.fn = () => {}
	Fn.prototype.fn2 = function () {}
	f1.fn()
	f2.fn()

3、vue项目的请求生命周期:main.js完成环境的加载与根组件的渲染;router的index.js完成路由映射
	项目启动:加载main.js:index.html、new Vue()、Vue、router、store、完成App.vue的挂载
	请求:请求路径 => router路由 => 页面组件(小组件) => 替换<router-view />完成页面渲染 => <router-link>(this.$router.push())完成请求路径的切换
	
4、<router-view />标签作为路由映射的页面组件占位符
5、<router-link></router-link>来完成路由的跳转
	<router-link to="/1" :to="{name:'home', params={arg: 1}}">主页</router-link>
	
	{
		path: '/:arg',
		name: 'home',
		component: Home
	}
	
6、this.$router来完成路由的跳转:push() | go()
	this.$router.push('/1');
	this.$router.push({name:'home', params={arg: 1}});
	this.$router.go(-1);
	this.$router.go(1);

7、this.$route来完成路由的传参
	this.$route.params.arg
	this.$route.params['arg']
	
8、资源的加载
	require(资源的相对路径)
"""

5

"""
1、vue项目配置全局css文件:在main.js中用import导入或是require()加载 .css 文件
	assets/css/global.css
	import '@/assets/css/global.css' | require('@/assets/css/global.css')

2、vue项目配置全局js文件:在main.js中用import导入 .js 文件,并将其设置给 Vue 原型
	settings.js => export default {base_url='http://127.0.0.1:8000'}
	import settings from '@/assets/js/settings.js'
	Vue.prototype.$settings = settings => this.$settings.base_url
	
3、vuex提供的store仓库存储,可以完成组件间的传参(了解)
	store/index.js => state: {num: 0}
	this.$store.state.num

4、vue项目配置axios可以完成前后台交互:this.$axios({}).then(response=>{}).catch(error=>{})
	import axios from 'axios'
	Vue.prototype.$axios = axios
	this.$axios({
		url: '后台接口',
		method: 'get|post',
		params: {},
		data: {},
		headers: {},
	}).then(response=>{
		response.data
	}).catch(error=>{
		error.response.data
	})

5、django利用django-cors-headers插件解决前后台分类项目跨越问题(重点)
	注册corsheaders => 添加中间件 => 允许跨越

6、前台两种提交数据的方式:url拼接参数,数据包参数
7、前后台分离,后台登录通过的token会返回给前台,前台自己处理存储在cookie中:vue-cookies插件操作cookie
	token = response.data.token
	
	this.$cookies.set(k, v, exp);
	this.$cookies.get(k);
	this.$cookies.remove(k);
	
8、全局应用配置element-ui、bootstrap
	import ElementUi from 'element-ui'
	Vue.use(ElementUi)
"""
posted on 2019-12-17 15:56  luelue  阅读(200)  评论(0)    收藏  举报