【vue讲解:es6导入导出语法、 vue-router简单使用、登录跳转案例、scoped的使用、elementui使用】

news2024/9/21 2:44:33

1 es6导入导出语法

# 做项目:肯定要写模块--》导入使用

# 默认导出和导入
在某个js中 



# 命名导出和导入

1.1 默认导出和导入

// #########导出语法###########
// export default name  // 只导出变量
// export default add   // 只导出函数

// export default {name,add}  // 导出对象

export default {
    name:"彭于晏",
    add: (a,b)=>{
        return a+b
    }
}

// #######导入语法##########
import lqz from './lqz/utils'  // 相对导入,相对于当前文件
// 绝对导入--》开始导入的路径  src路径,但是需要写个 @
import lqz from '@/lqz/utils'

1.2 命名导出导入

// ## 导出#### 可以导出多个
export const age = 99
export const add = (a, b) => a + b
export const showName = name => {
    console.log(name)
}

export const obj={
    name:'lqz',
    show(){
        alert('show')
    }
}


// ### 导入###
import {showName,obj} from '@/lqz/common.js'
以后可以使用showName  函数
以后可以使用obj  对象 ,又可以点  obj.xx

1.3 如果包下有个 index.js 直接导到index.js上一次即可

2 vue-router简单使用

# 单页面应用---》只要一个html--》要实现页面跳转的效果---》其实就是组件的跳转
# 组件跳转,需要借助于第三方:vue-router  已经装了


# 1 需要在App.vue 写个标签---以后不要再写任何其他东西了
	<template>
      <div id="app">
        <router-view>
        </router-view>
      </div>
    </template>
# 2 在 router---index.js---注册组件
	# 1 导入
    import LoginView from "@/views/LoginView";
    import IndexView from "@/views/IndexView";
    import AboutView from "@/views/AboutView";
    const routes = [
    # 2 注册路由
    {
        path: '/',
        name: 'home',
        component: IndexView
    },
    {
        path: '/login',
        name: 'login',
        component: LoginView
    },
    {
        path: '/about',
        name: 'about',
        component: AboutView
    },
]
    
# 3 以后再浏览器访问不同路径,就会显示不同组件(页面组件--->views中)

在这里插入图片描述

3 登录跳转案例

#1  项目中使用axios  需要安装
	cnpm install axios -S
    在要用的位置[注意位置],导入:import axios from 'axios'
    使用:
    axios.get().then()
    
    
    
#2 跨域问题--》按照步骤操作
	1、使用pip安装 pip3 install django-cors-headers
    2、添加到setting的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'
    )
    
    
# 3 前端 页面组件跳转
	this.$router.push('router/index.js/配置过的路径')

3.1 后端

3.1.1. models.py

from django.db import models

# Create your models here.
from django.contrib.auth.models import AbstractUser


class UserInfo(AbstractUser):
    gender = models.IntegerField(choices=((1, '男'), (2, '女'), (0, '未知')),null=True)
    age = models.IntegerField(null=True)
    phone = models.CharField(max_length=11,null=True)

3.1.2 serializer.py

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer


class LoginSerializer(TokenObtainPairSerializer):
    def validate(self, attrs):
        res = super().validate(attrs)
        user = self.user
        data = {'code': 100, 'msg': '登录成功', 'username': user.username, 'gender': user.get_gender_display()}
        data.update(res)
        return data

3.1.3 views.py

from django.shortcuts import render

# Create your views here.
import json
from rest_framework.views import APIView
from rest_framework.response import Response


class FilmView(APIView):
    def get(self, request):
        with open('./film.json', 'rt', encoding='utf-8') as f:
            res = json.load(f)
        return Response(res)

3.1.3 urls.py

from django.contrib import admin
from django.urls import path

from rest_framework_simplejwt.views import token_obtain_pair
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', token_obtain_pair),
    path('film/', views.FilmView.as_view()),
]

3.1.4 settings.py

AUTH_USER_MODEL = 'app01.userinfo'

SIMPLE_JWT = {
    "TOKEN_OBTAIN_SERIALIZER": "app01.serializer.LoginSerializer",
}

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

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'app01.exceptions.common_exception_handler',
}

3.2 前端

3.2.1 router/index.js

import Vue from 'vue'
import VueRouter from 'vue-router'

// 1 导入
import LoginView from "@/views/LoginView";
import IndexView from "@/views/IndexView";

Vue.use(VueRouter)

const routes = [
    // 2 注册路由
    {
        path: '/',
        name: 'home',
        component: IndexView
    },
    {
        path: '/login',
        name: 'login',
        component: LoginView
    },

]

const router = new VueRouter({
    mode: 'history',
    base: process.env.BASE_URL,
    routes
})

export default router

3.2.1 LoginView.vue

<template>
  <div>
    <h1>登录</h1>
    <p>用户名:<input type="text" v-model="username"></p>
    <p>密码:<input type="password" v-model="password"></p>
    <p>
      <button @click="handleSubmit">登录</button>
    </p>

  </div>

</template>

<script>
import http from 'axios'

export default {
  name: "LoginView",
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    handleSubmit() {
      //发送ajax请求
      http.post('http://127.0.0.1:8000/login/', {
        username: this.username,
        password: this.password
      }).then(response => {
        if (response.data.code == 100) {
          // 跳转  vue-router支持的
          this.$router.push('/')
        } else {
          alert(response.data.msg)
        }
      })

    }
  }
}
</script>

<style scoped>

</style>

3.2.3 IndexView.vue

<template>
  <div>
    <h1>首页</h1>


    <div v-for="film in filmList">
      <img :src="film.poster" alt="" height="200px" width="150px">
      <div>
        <h3>{{ film.name }}</h3>
        <p>主演:
          <span v-for="item in film.actors">
                {{ item.name }} &nbsp;&nbsp;
            </span>
        </p>
        <p>{{ film.nation }}|{{ film.runtime }}</p>
      </div>
    </div>

  </div>
</template>

<script>
import axios from 'axios'


export default {

  name: "IndexView",
  data() {
    return {
      filmList: []
    }
  },
  created() {
    axios.get('http://127.0.0.1:8000/film/').then(res => {
      this.filmList = res.data.results
    })
  }

}
</script>

<style scoped>

</style>

4 scoped的使用

#1 以后css样式,都写在vue组件的 <style> 标签中
    <style scoped>
        h1 {
          background-color: aqua;
        }
    </style>
    
    
#2 以后再 style标签上写 scoped 这个样式只在当前组件中生效
<style scoped>
h1 {
  background-color: aqua;
}
</style>

5 同学问题

# 1 在views.py  打开文件,写的路径,文件要放在项目根路径--》从项目运行的路径下开始找
class FilmView(APIView):
    def get(self, request):
        with open('./film.json', 'rt', encoding='utf-8') as f:
            res = json.load(f)
        return Response(res)
    
   
    
# 2 只要按照上面的处理跨域---》以后不需要再响应头中加了--》post,delete。。所有请求都没有跨域了


# 3 字典update

4 elementui使用

# 自己写样式---》copy别人的

# 使用第三方ui库
	-Element UI  2.x  3.x
    -Ant Design of Vue:web端
    -Vant UI  :移动端ui
    
    
# elementui
	1 安装:cnpm i element-ui -S
    2 main.js中引入
        import ElementUI from 'element-ui';
        import 'element-ui/lib/theme-chalk/index.css';
        Vue.use(ElementUI);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2055948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

地平线旭日X3开发板--USB网卡AX88772B驱动移植

由于使用的激光雷达是网口输出的, 为了不占用X3派已有的网口,接上去了一个绿联的usb网卡, 发现系统没有驱动,所以动手看看能不能自己编译一个 首先lsusb查看一下网卡型号 发现型号是AX88772B,去官网看了一下,发现官方提供驱动 AX88772B - Low-Power USB 2.0 to Fast …

如何使用 OCR 和 GPT-4o mini 轻松提取收据信息

利用 OCR 和强大的 GPT-4o 迷你模型对收据进行信息提取 利用 OCR 和强大的 GPT-4o 迷你模型对收据进行信息提取 欢迎来到雲闪世界。&#xff0c;我将向您展示如何从收据中提取信息&#xff0c;并提供收据的简单图像。首先&#xff0c;我们将利用 OCR 从收据中提取信息。然后&a…

研发项目成本超支?专业研发项目管理软件帮你精细化管理,节省每一分钱!

一、你是否也曾经历过这样的场景&#xff1f; 项目进度一再延期&#xff0c;眼看着预算不断超支&#xff0c;却无计可施&#xff1f;团队成员各自为战&#xff0c;沟通效率低下&#xff0c;项目进度难以掌控&#xff1f;需求变更频繁&#xff0c;导致项目计划混乱&#xff0c;…

11 程序控制语句:顺序控制、分支控制(if-else、switch、嵌套)

目录 1 程序控制语句 2 顺序控制语句 3 分支控制语句 3.1 单向分支 if 3.1.1 基本语法 3.1.2 单向分支流程图 3.1.3 案例 3.2 双向分支 if-else 3.2.1 基本语法 3.2.2 双向分支流程图 3.2.3 案例 3.3 多向分支 else if 3.3.1 基本语法 3.3.2 多向分支流程图 3.3…

光储充能源站微电网及其控制综述入门研究笔记

1. 关于微电网 微电网&#xff08;Micro-Grid&#xff09;&#xff0c;也译为微网&#xff0c;是一个由分布式电源、储能装置、能量转换装置、负荷、监控和保护装置等组成的小型发配电系统。微电网的提出旨在实现分布式电源的灵活、高效应用&#xff0c;解决数量庞大、形式多样…

巴西服务器租用市场:中国企业出海布局的新热点

近年来&#xff0c;巴西市场以其独特的地理位置、庞大的市场潜力、丰富的资源以及友好的营商环境&#xff0c;吸引了众多中国企业的目光。在众多合作领域中&#xff0c;巴西服务器租用成为了中国企业出海布局的重要一环。本文将深入探讨巴西市场为何受广大中国企业青睐&#xf…

数字孪生技术在交通领域的应用现状和展望

数字孪生仿真建模技术是近年来引起广泛关注的一种创新技术&#xff0c;它通过将物理系统的数字化模型与数字孪生仿真建模现实系统进行实时同步&#xff0c;实现了对系统运行状态的准确模拟和预测。在交通领域&#xff0c; 被广泛应用于交通网络规划、交通流优化、智能交通管理等…

地埋电缆防损坏预警装置的工作原理是什么?

答&#xff1a;Hey&#xff0c;各位贴吧的小伙伴们&#xff0c;今天来给大家揭秘一下我们城市地下安全的守护者——地埋电缆防损坏预警装置TLKS-PMG-AGN的工作原理&#xff01;智能地钉内置了高精度定位传感器&#xff0c;这些传感器就像是地下世界的“眼睛”和“耳朵”&#x…

基于Springboot + vue + mysql 致远汽车租赁管理系统 设计实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 1.1 研究背景 &#x1f4d1;操作流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4ac; E-R表 4.2.2物理模型设计 系统功能模块 系统首页 用户注册 ​编辑 汽车租赁 个人中心 管理员功能模块 管理…

数据仓库实战:详解维度建模事实表

每个数据仓库都包含一个或者多个事实数据表。其中可能包含业务销售数据&#xff0c;如现金登记事务所产生的数据&#xff0c;通常包含大量的行。事实数据表的主要特点是包含数字数据&#xff08;事实&#xff09;&#xff0c;并且这些数字信息可以汇总&#xff0c;以提供有关单…

Lumos学习王佩丰Excel第十三讲:邮件合并

一、简单的邮件合并 1、批量生成多个文档 预览效果&#xff1a; 批量生成多个文档&#xff1a; 2、利用word发送邮件 &#xff08;1&#xff09;选择收件人并编写邮件内容 &#xff08;2&#xff09;发送邮件 3、每页显示多条记录 将表格形式的选择题转换成word格式。 效果展…

公司内网监控软件是什么?有哪些好用的推荐?精准安排!

企业内网作为公司运营和管理的核心载体&#xff0c;其安全性与效率性直接关系到企业的生死存亡。 如何精准地掌握内网动态&#xff0c;确保信息安全&#xff0c;提升工作效率&#xff1f; 公司内网监控软件&#xff0c;正是这一需求的产物&#xff0c;它如同一位无形的守护者&…

HiPER Calc Pro-高效、强大的数学计算工具

在数字化时代&#xff0c;无论是学生、教师还是科研工作者&#xff0c;准确高效的数学计算都是不可或缺的一环。HiPER Calc Pro&#xff08;原名HiPER Scientific Calculator高级版&#xff09;是一款收费的方程式图形计算器应用&#xff0c;它以无广告、多功能的特性&#xff…

第六版页面

基本 明确定义 站点网关mqtt服务器 多个柜子使用的是主从模式 下发一个设备组其他的柜子跟着设置 具体的让后端进行详细管理 前端规范 字体规范 弹出框定义什么应该弹出什么不应该弹出 页面 主页 屏幕宽度有的没设置好 平面地图模式有的没重合好 日志改为告警在上面 日志…

使用 Python 爬虫进行网站流量分析:Referer 头的利用

在互联网时代&#xff0c;网站流量分析是了解用户行为、优化网站结构和提升用户体验的重要手段。本文将介绍如何使用 Python 爬虫技术结合 HTTP Referer 头进行网站流量分析&#xff0c;以及如何实现这一过程。 什么是 HTTP Referer 头&#xff1f; HTTP Referer 头是一个请求…

ubuntu 22.04下载安装及相关配置

一、ubuntu 22.04下载 1.1、官网下载 Get Ubuntu | Download | Ubuntu 官网下载速度比较慢&#xff0c;不是很推荐。 1.2、清华镜像网站下载 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 该方式下载很快&#xff0c;推荐使用。下载方式如下&#xff1a; 1.2.…

WEB渗透免杀篇-Golang免杀

往期文章 WEB渗透免杀篇-加载器免杀-CSDN博客 WEB渗透免杀篇-分块免杀-CSDN博客 WEB渗透免杀篇-Powershell免杀-CSDN博客 WEB渗透免杀篇-Python源码免杀-CSDN博客 WEB渗透免杀篇-C#源码免杀-CSDN博客 WEB渗透免杀篇-MSFshellcode免杀-CSDN博客 WEB渗透免杀篇-Bypass-AMSI-…

协同过滤图书推荐管理系统图书购物网站设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家&#xff0c;服务很多代码文档&#xff0c;百分百好评&#xff0c;战绩可查&#xff01;&#xff01;入职于互联网大厂&#xff0c;可以交流&#xff0c;共同进步。有保障的售后 代码参考数据库参…

vcruntime140.dll找不到咋办?vcruntime140.dll文件缺失详细解决方案

在运行基于Visual C的软件时&#xff0c;用户常常遭遇“vcruntime140.dll文件缺失”的提示。这个问题主要是因为系统中缺乏必须的Visual C运行库文件。如果你正面临这一问题&#xff0c;本文将提供几种简洁有效的解决方案&#xff0c;确保你的应用程序能够顺利运行。这些方法简…

基于Java+SpringBoot+Vue的IT技术交流和分享平台

基于JavaSpringBootVue的IT技术交流和分享平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f3…