首页 > 其他 > 详细

vue3.0 (无 typescript )

时间:2021-03-04 10:50:15      阅读:35      评论:0      收藏:0      [点我收藏+]

技术分享图片 技术分享图片

1、安装element-plus:

  main.js:

//安装 element-plus
npm install element-plus --save

//引入 element-plus import ElementPlus from element-plus; import element-plus/lib/theme-chalk/index.css;

//调用
const app = createApp(App) app.use(store) app.use(router) app.use(ElementPlus) app.mount(#app)

 技术分享图片

 

2、路由管理:

  router / index.js:

//引入路由:
import { createRouter, createWebHashHistory, createWebHistory } from vue-router
//调用路由 const router = createRouter({ history: createWebHistory(process.env.BASE_URL),// History 路由 history: createWebHashHistory(), // Hash 路由 routes })

 

3、配置代理端口等( vue.config.js ),src 同级根目录下,创建 vue.config.js 文件:

const port = process.env.port || process.env.npm_config_port || 3020 // dev port
module.exports = {
    publicPath: ./,
    outputDir: dist_vue3_3,
    assetsDir: static,
    lintOnSave: false,
    productionSourceMap: false,
    devServer: {
        host: 0.0.0.0,
        port: port,
        open: true,
        overlay: {
            warnings: false,
            errors: true
        },
        proxy: {
            [process.env.VUE_APP_BASE_API]: {
                target: process.env.VUE_APP_URL_API,
                changeOrigin: true,
                ws: true,
                pathRewrite: {
                    [^ + process.env.VUE_APP_BASE_API]: ‘‘
                }
            }
        }
    },
}

技术分享图片

 

4、配置请求接口地址:

  根目录下,创建 .env.development 和 .env.production:

  .env.development:

ENV = development

VUE_APP_BASE_API = /api
VUE_APP_URL_API = http://192.168.1.81:7001
VUE_CLI_BABEL_TRANSPILE_MODULES = true

  .env.production:

ENV = production

VUE_APP_BASE_API = /api
VUE_APP_URL_API = http://XXXXXX.com

技术分享图片

 

 

5、接口请求( axios ):

  src 里面,创建 utils 文件夹,新建 https.js 和 auth.js,

  https.js( 封装 axios 接口请求 ):

//安装axios
npm install axios --save

import Vue from vue

//引入axios import axios from axios import { ElMessage } from element-plus import { getToken } from @/utils/auth import Cookies from js-cookie import router, { resetRouter } from @/router
//创建新的 axios 实例 const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, withCredentials: true, // send cookies when cross-domain requests timeout: 15000 // request timeout })
//请求拦截 service.interceptors.request.use( config
=> { config.headers[X-Token] = getToken(); //设置请求头 return config }, error => { return Promise.reject(error) } )

//响应 response 拦截器 service.interceptors.response.use(response
=> { if (response.status === 200) { const data = response.data; return data; } else if (response.code === 302) {
     //响应超时,跳转到登录页 router.replace({ path: /login, query: {} }) ElMessage.error({ message: 请求异常!, type: error, duration: 5 * 1000, }); } return response; }); export default service

  auth.js:

//安装js-cookie
npm install js-cookie --save

//引入js-cookie

import Cookies from js-cookie const token = token export function getToken() { return Cookies.get(token) } export function setToken(tokens) { return Cookies.set(token, tokens, { expires: 3 // 设置token过期时间: 3天 }) } export function removeToken() { return Cookies.remove(token) }

  src 里面,创建 api 文件夹,新建 user.js,

import request from @/utils/https
// 登录
export function login(data) {
    return request({
        url: /user/login,
        method: post,
        data
    })
}

6、页面上调用接口:

<template>
  <div class="dashboard-container">
    <el-row :gutter="24" class="login_from">
        <el-col class="login_tit">登录</el-col>
        <el-col :span="12" :offset="6">
            <el-form label-position="right" label-width="90px" :model="formLabelAlign">
                <el-form-item label="用户名">
                    <el-input v-model="formLabelAlign.userName"></el-input>
                </el-form-item>
                <el-form-item label="密码">
                    <el-input v-model="formLabelAlign.passWord"></el-input>
                </el-form-item>
                <el-button type="primary" @click="getUserRepositories">登录</el-button>
            </el-form>
        </el-col>
    </el-row>
  </div>
</template>

<script>
import { onMounted, ref, reactive } from vue
import { ElMessage } from element-plus
import { setToken } from @/utils/auth
import { login } from ‘@/api/user‘ //引入接口管理
    export default {
        name: Home,
        setup() {
            const formLabelAlign = reactive({
                userName: ,
                passWord: ,
            })//定义登录的用户名和密码
            const getUserRepositories = () => {// 定义一个方法( 登录事件 )
                if(formLabelAlign.userName == null || formLabelAlign.userName.length == 0 || formLabelAlign.userName == ‘‘) {
                    ElMessage.warning({
                        message: 用户名不能为空!,
                        type: warning
                    });
                    return false
                }
                if(formLabelAlign.passWord == null || formLabelAlign.passWord.length == 0 || formLabelAlign.passWord == ‘‘) {
                    ElMessage.warning({
                        message: 密码不能为空!,
                        type: warning
                    });
                    return false
                }
          //登录接口请求
login(formLabelAlign).then(res => { console.log(res); }).catch(err => { }) } return { formLabelAlign, getUserRepositories } } } </script>

reactive:取得一个对象并返回原始对象的响应式代理。

ref:接受一个值并返回一个响应式且可变的 ref 对象。ref 对象具有 .value 指向内部值的单个属式。

return:setup() 定义的变量必须 return 返回出去,这样才能在 template 中渲染出来。

 

vue3.0 (无 typescript )

原文:https://www.cnblogs.com/moguzi12345/p/14468141.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!