vue05

1.vue项目目录介绍

myfirstvue                    #项目名字
    node_modules              # 文件夹,内部有很多当前项目依赖的模块,可以删除,npm install
    public                    #文件夹
        -favicon.ico           # 网站小图标
        -index.html            # spa:单页面应用  
    src                       #以后咱们写代码,都在这下面
    	-assets                # 静态资源,js,css,图片  类似于static文件夹
    		logo.png          # 静态资源的图片
    	-components           # 组件:小组件,用在别的大(页面组件)组件中
    		-HelloWorld.vue   # 默认了一个hello world组件
    	-router                    # 装了vue-router自动生成的,如果不装就没有
    		index.js              # vue-router的配置
    	-store                # 装了vuex自动生成的,如果不装就没有
    		index.js          # vuex的配置
    	-views                # 放了一堆组件,页面组件
            AboutView.vue     # 关于 页面组件
            HomeView.vue      # 主页  页面组件
    	-App.vue              # 根组件
    	-main.js              # 整个项目启动入口
    .gitignore                #git的忽略文件
    babel.config.js           #babel的配置
    jsconfig.json
    package.json              # 重要:类似于python项目的requirements.txt  当前项目所有依赖
    package-lock.json         #锁定文件:package.json中写了依赖的版本,这个文件锁定所有版本
    README.md                 # 读我,项目的介绍
    vue.config.js             # vue项目的配置文件

2.es6的导入导出语法

Vue.config.productionTip = false  //vue的开发提示,上线记得false,关闭掉
#如果要导入,必须先导出
	-默认导出
	-命名导出
	
#默认导出写法
	1.写一个js,在js中定义变量,函数,最后使用export default 导出
	export default{
        name: '彭于晏',
        printName(){
            console.log(this.name)
        }
	}
	2. 在想使用的js中,导入
	import 随便起 from './lqz/utils'
	
#命名导出和导入
	1.写一个js,在js中定义变量,函数,最后使用export 导出
	export const name = '刘亦菲'
	export const printName=()=>{
        console.log('星象衔新宠')
	}
	2.在想使用的js中,导入
	import {printName} from './lqz/utils'
#在包下可以建立一个名为index.js 的文件,以后导入的时候,会默认找它
	-对比python中得__init__.py

3.vue项目开发规范

#以后写组件都是单页面组件,使用xx.vue。
一个组件就是一个xx.vue, 页面组件和小组件
	<template></template> #html内容写在里面
	<script></script>	#写js内容
	<style></style>		#写css样式
#main.js 是整个入口
1.把App.vue根组件导入了
2.使用new Vue({render: h=> h(App}).$mount('#app') 把App.vue组件中得数据和模板插入到了index.html的id为app
div 中了
3.以后,只要在每个组件的export default {}写之前学过所有js的东西
4.以后,只要在每个组件的tempalte,写模板,插值语法,指令
5.以后,只要在每个组件的style,写样式

4.vue项目集成axops,vue项目前后端打通

#.安装axios
	-npm install axios --S
	
#.导入使用
	import axios from 'axios'

#发送请求,获取数据
	axios.get('http://127.0.0.1:8000/book').then(res => {
        console.log(res.data)
        this.bookList=res.data
	})
	
#先用这种方式解决跨域(django)
1.pip3 install django-cors-headers
---------------------------------------------------------------
2.app中注册:
    INSTALLED_APPS = (
                ...
                'corsheaders',
                ...
            )
--------------------------------------------------------------            
3.中间件注册
        MIDDLEWARE = [
        ...
        'corsheaders.middleware.CorsMiddleware',
        ...
        ]
4.把下面的复制到配置文件中
	    CORS_ORIGIN_ALLOW_ALL = True
        CORS_ALLOW_METHODS = (
            'DELETE',
            'GET',
            'OPTIONS',
            'PATCH',
            'POST',
            'PUT',
            'VIEW',
        )
        CORS_ALLOW_HEADERS = (
            'XMLHttpRequest',
            'X_FILENAME',
            'accept-encoding',
            'authorization',
            'content-type',
            'dnt',
            'origin',
            'user-agent',
            'x-csrftoken',
            'x-requested-with',
            'Pragma',
        )

5.props配置项

接受父传子自定义的属性

​ -1.数组写法
​ -2.对象对象写法
​ -3.对象套对象写法

#写法总结
// 普通使用
//props:['msg'],
//属性验证
//props:{msg: String},
//指定类型,必填和默认值
props:{
	msg: {
	type: String, //类型
	required: true, //必要性
	default: '老王' //默认值
	}
},

6.混入

#mixin(混入) 可以把多个组件公用的配置提取成一个混入对象
	把多个组件中公用的东西,抽取出来,以后可以全局使用和局部使用

#使用步骤
	-1 写个mixin/index.js
	export const hunhe = {
        data(){
            return {
                name: '彭于晏'
            }
        },
        methodes: {
            handlePrintName(){
                alter(this.name)
            }
        },
	}
#2.局部导入:在组件中
	import {hunhe} from "@/mixin";
	mixins:[hunhe,]

#3. 全局使用,在main.js中,以后所有组件都可以用
	import {hunhe} from "@mixin";
	Vue.mixin(hunhe)

7.插件

#功能:用于增强vue
本质:包含install方法的一个对象,install的第一个参数是vue,
	第二关以后的参数是插件使用者传递的数据
#使用步骤
	-写一个 plugins/index.js
	import Vue from "vue";
	import axios from "axios";
	import {hanhe} from '@/mixin'
	export default {
        install(miVue) {
            //console.log(,miVue)
            //1 vue实例上放个变量
            //Vue.prototype.$name = 'lqz' //类比python,在类上放了一个属性,所有对象都能取到
            //Vue.prototype.$ajax = axios
            //2.使用插件,加入混入
            //全局使用混入
            //Vue.mixin(hunhe)
            //3 定义全局组件
            //4 定义自定义指令,v-lqz
            Vue.directive("fbind",
            {
            //指令与元素成功绑定时(一上来)
            bind(element,binding) {
                element.value = binding.value;
            },  
             //指令所在元素被插入页面时
             inserted(element,binding){
                 element.focus();
             },
             //指令所在模板被重新解析时
             update(element,binding){
             	element.value = binding.value;
             },
            } );

        }
	}
	
	2.在main.js 中使用插件
	import plugins from '@/plugins'
		Vue.use(plugins) //本子,使用use,会自动触发插件对象中的install
	
	3.以后在组件中可以直接用插件中写的东西

8.scoped样式

#在styple上写<style scoped> </style>,以后只针对当前组件生效

9.localStorage和sessionStorage

#window  浏览器对象有的东西
#如果想在浏览器中存储数据
	永久存储:localStorage 不登陆加购物车,没登陆,搜索过的商品
	关闭页面是数据就没了(临时存储):sessionStorage
	设定一个时间,到时候就过期:cookie
	
#补充序列化和反序列化
	//对象转json字符串
	//JSON.stringify(person)
	//json字符串转对象
	//JSON.parse()
<template>
  <div id="app">
    <h1>localStorage操作</h1>
    <button @click="saveStorage">点我向localStorage放数据</button>
    <button @click="getStorage">点我获取localStorage数据</button>
    <button @click="removeStorage">点我删除localStorage放数据</button>

    <h1>sessionStorage操作</h1>
    <button @click="saveSessionStorage">点我向localStorage放数据</button>
    <button @click="getSessionStorage">点我获取localStorage数据</button>
    <button @click="removeSessionStorage">点我删除localStorage放数据</button>

    <h1>cookie操作</h1>
    <button @click="saveCookie">点我向localStorage放数据</button>
    <button @click="getCookie">点我获取localStorage数据</button>
    <button @click="removeCookie">点我删除localStorage放数据</button>
  </div>
</template>


<script>
import cookies from 'vue-cookies'

export default {
  name: 'App',
  data() {
    return {}
  },
  methods: {
    saveStorage() {
      var person = {
        name: '彭于晏',
        age: 38
      }
      localStorage.setItem('userinfo', JSON.stringify(person))
    },
    getStorage() {
      let userinfo = localStorage.getItem('userinfo')
      console.log(userinfo)
      console.log(typeof userinfo)
    },
    removeStorage() {
      // localStorage.clear()
      localStorage.removeItem('userinfo')
    },

    saveSessionStorage() {
      var person = {
        name: '彭于晏',
        age: 38
      }
      sessionStorage.setItem('userinfo', JSON.stringify(person))
    },
    getSessionStorage() {
      let userinfo = sessionStorage.getItem('userinfo')
      console.log(userinfo)
      console.log(typeof userinfo)
    },
    removeSessionStorage() {
      // localStorage.clear()
      sessionStorage.removeItem('userinfo')
    },

    saveCookie() {
      cookies.set('name','lqz','7d')  // 按秒计
    },
    getCookie() {
      console.log(cookies.get('name'))
    },
    removeCookie() {

      cookies.remove('name')
    }
  }


}
</script>

<style scoped>
h1 {
  background-color: aqua;
}
</style>

10.集成elementui

#第三方  样式库 常见的
	-饿了么团队:elementui
	-iview
	-移动端的ui: vant
#使用步骤
	-安装  npm i element-ui -S
	-在main.js中引入

练习

1.使用elementui登录,注册,显示所有图书
2.elementui 做比较好的布局
3.uni-app写个安卓app,打包好
	-HBuilderX
	-远端打包
posted @ 2022-10-31 21:37  名字长的像一只老山羊  阅读(15)  评论(0编辑  收藏  举报