首页 > 其他分享 >vue之混合mixin、插入和其他小补充

vue之混合mixin、插入和其他小补充

时间:2023-06-08 20:34:22浏览次数:32  
标签:插件 vue js --- 插入 mixin 组件

目录

一.解析一下vue项目

1 为什么浏览器中访问某个地址,会显示某个页面组件

-根组件:App.vue 必须是

        <template>
          <div id="app">
            <router-view></router-view>
          </div>
    	</template>

-1 配置路由 router----》index.js---》

const routes = [
                {
                path: '/lqz',
                name: 'lqz',
                component: Lqz  # 组件,需要导入
            },
        ]

-2 放心大胆的写页面组件 -src---->views文件夹

2 在页面组件中使用小组件

    -1 写一个小组件,我们写了个Child.vue
    -2 在父组件中,导入组件
    	# @ 代指src路径
	import Child from "@/components/Child";
    -3 父组件中,注册组件
    	  components: {
            Child
          }
    -4 父组件中使用组件
	    <Child :msg="msg" @myevent="handleEvent"></Child>
    -5 自定义属性,自定义事件,插槽,跟之前一模一样

image

二、登录小案例

第一步 登录页面:LoginView.vue

<template>
<div>
  <h1>登录页面</h1>
  <p>username : <input type="text" v-model="username"></p>
  <p>password : <input type="password" v-model="password"></p>
  <button @click="handleSubmit">提交</button>
  <HelloWorld></HelloWorld>


</div>
</template>

第二步 访问/login 显示这个页面组件

{
    path: '/login',
    name: 'login',
    component: LoginView
},

第三步 在LoginView.vue写html,和js,axios

-安装 axios
-cnpm install -S axios  # 把安装的axios放到package.json中

第四步 写ajax,向后端发送请求,给按钮绑定两个一个事件

#安装axios,导入axios
import axios from 'axios'
    handleSubmit() {
      console.log(this.name, this.password)
      axios.post('http://127.0.0.1:8000/login/', {
        name: this.name,
        password: this.password
      }).then(res => {
        // console.log(res.data)
        if (res.data.code == 100) {
          //跳转到百度
          location.href = 'http://www.baidu.com'
        } else {
          alert(res.data.msg)
        }
      })
    }

第五步 写个后端的登录接口,处理好跨域问题,处理跨域如下

def login(request):
    data = json.loads(request.body)
    print(data)
    username=data.get('username')
    password=data.get('password')
    if username =='yzk' and password=='123':
        return JsonResponse({'code':100,'msg':'登录成功'})
    else:
        return JsonResponse({'code':101,'msg':'登录失败'})

第六步 解决后端跨域问题

1 安装

	pip3.8 install django-cors-headers

2 注册app

        INSTALLED_APPS = (
            ...
            'corsheaders',
            ...
        )

3 配置中间件

        MIDDLEWARE = [  
            ...
            'corsheaders.middleware.CorsMiddleware',
            ...
        ]

4 配置文件中加入:setting下面添加下面的配置

        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',
            'token'
        )

三、scoped

新建的组件 加了scoped,表示样式只在当前组件生效,如果不加,子组件都会使用这个样式

<style scoped>
</style>

四、ref属性

  • -放在普通标签上,通过 this.$refs.名字---》取到的是dom对象,可以直接操作dom
  • -放在组件上,通过该this.$refs.名字---》取到的是组件对象,这样在父组件中,就拿到了子组件对象,对象属性和方法直接用即可

五、props其它

父传子之自定义属性

1 基本使用

props: ['msg'],

2 限制类型:

props: {'msg': Boolean},

3 限制类型,必填,默认值

 props: {
    msg: {
      type: String, //类型
      required: true, //必要性
      default: '老王' //默认值
    }
  }

六、混入mixin

1.包下的 index.js  有特殊函数,
	-之前导入 
    import xx from './mixin/index.js'
    -可以写成
	import xx from './mixin'

mixin(混入) 功能:可以把多个组件共用的配置提取成一个混入对象

使用步骤

1 定义混入对象:mixin---》index.js中写

        export const lqz = {
            data() {
                return {
                    name: 'lqz'
                }
            },
            methods: {
                handleName() {
                    alert(this.name)
                }
            }
        }

2 使用混入:局部使用,组件中使用

    	import {lqz} from '@/mixin'
         mixins: [lqz]

3 全局使用混入:每个组件都有效main.js中

        import {lqz} from '@/mixin'
        Vue.mixin(lqz)

七、插件

插件功能:用于增强vue,有很多第三方插件 (vuex,router,elemetui)

定义自己的插件 本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据

使用步骤:

1 定义插件:plugins---》index.js---》

        export default {
            install() {
            # 1 在vue实例中放属性
            # 2 定义混入,全局都可以使用混入
            # 3 自定义指令(不讲了)---》以后我们可能使用了一个第三方插件,它提供了一些指令  v-lq
            # 4 定义全局组件---》全局
        }
    }

2 在main.js中 使用插件

        import lqz from '@/plugins'
        Vue.use(lqz)  # 这句话,就会执行lqz中得install,并且把vue传入

标签:插件,vue,js,---,插入,mixin,组件
From: https://www.cnblogs.com/yuezongke/p/17467596.html

相关文章

  • JAVA的springboot+vue学习平台管理系统,校园在线学习管理系统,附源码+数据库+论文+PPT
    1、项目介绍在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括学习平台的网络应用,在外国学习平台已经是很普遍的方式,不过国内的管理平台可能还处于起步阶段。学习平台具有学习信息管理功能的选择。学习平台采用java技术,基于springboot框架,mysql数据库进行......
  • Vue——登录小案例、scoped、ref属性、props其他、混入mixin、插件、Element-ui
    解析Vue项目#1为什么浏览器中访问某个地址,会显示某个页面组件 根组件:APP.vue必须是 <template><divid="app"><router-view></router-view></div> </template>1配置路由 router--->index.js---&......
  • 总结vue3 的一些知识点:MySQL NULL 值处理
    MySQLNULL值处理我们已经知道MySQL使用SQLSELECT命令及WHERE子句来读取数据表中的数据,但是当提供的查询条件字段为NULL时,该命令可能就无法正常工作。为了处理这种情况,MySQL提供了三大运算符:ISNULL: 当列的值是NULL,此运算符返回true。ISNOTNULL: 当列的......
  • vue2.0运行导入的项目出现node:events:491 throw er; // Unhandled ‘error‘ event错
    错误提示:Apprunningat: -Local: http://localhost:8080/ -Network:unavailable Notethatthedevelopmentbuildisnotoptimized. Tocreateaproductionbuild,runnpmrunbuild.node:events:491 thrower;//Unhandled'error'event在尝试过关闭占用端......
  • vue2.0运行导入的项目出现node:events:491 throw er; // Unhandled ‘error‘ event错
    错误提示:Apprunningat: -Local: http://localhost:8080/ -Network:unavailable Notethatthedevelopmentbuildisnotoptimized. Tocreateaproductionbuild,runnpmrunbuild.node:events:491 thrower;//Unhandled'error'event在尝试过关闭占用端......
  • 总结vue3 的一些知识点:MySQL 连接的使用
    MySQL连接的使用在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。本章节我们将向大家介绍如何使用MySQL的JOIN在两个或多个表中查询数据。你可以在SELECT,UPDATE和DELETE语句中使用Mysql的JOI......
  • vue使用localStorage.setItem()存储对象数据的注意事项
    如数据对象:ruleForm:{name:'',password:'',},使用localStoragelocalStorage.setItem("person",JSON.stringify(this.ruleForm));取值localStorage.getItem("person")如果不将对象转换为string类型,在取值的时候就只会取到类似[Object,......
  • 初识vue3——第二天
    计算属性为什么要用计算属性模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们想根据author是否已有一些书籍来展示不同的信息:<scriptsetup>constauthor=reactive({name:'JohnDoe',books:['V......
  • vue之动态组件&插槽
    1.动态组件<!--<component:is="who"></component>--><!--component标签的is属性等于组件名字,这里就会显示这个组件--><!--keep-alive的使用:可以将组件缓存,后期切过来时资源不会被销毁--><!--动态组件start--><divid="trends"><button@click=&......
  • Vue-后台管理项目002---用户管理
    用户列表开发解决用户列表小问题现在点击用户列表了,主区域也有数据了,但是用户列表本身没有高亮意思是当前激活菜单的index,赋值给default-active属性,就可以高亮了在每次点击的时候,把对应的地址放在sessionStorage中保存起来,这样的话,就把需要激活的链接保存起来了当我们刷新页面的......