Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios

这篇具有很好参考价值的文章主要介绍了Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 搭建项目

1.1 使用vue-cli创建项目

1.2 通过npm安装element-ui

1.3 导入组件

2 创建登录页面

2.1 创建登录组件

2.2 引入css(css.txt)

2.3 配置路由

2.5 运行效果

3. 后台交互

3.1 引入axios

3.2 axios/qs/vue-axios安装与使用

3.2.1 安装axios

3.2.2 发送get请求:

3.2.3 发送post请求:

3.2.4 简化axios使用


1. 搭建项目

工程方式搭建项目,请将测试需要用的后台web服务程序事先准备好。

1.1 使用vue-cli创建项目

在命令行,到自己的vue工程存放的目录,运行一下命令,前提是vue-cli先安装好。

vue init webpack vuepro

1.2 通过npm安装element-ui

npm install element-ui -S

1.3 导入组件

打开 src目录下的main.js,该文件是项目的入口文件,所以在这里导入,其他组件均可使用,不用再导入。

import Vue from 'vue'

//新添
import ElementUI from 'element-ui' 

//新增
import 'element-ui/lib/theme-chalk/index.css'

//新增
Vue.use(ElementUI) 
。。。

2 创建登录页面

2.1 创建登录组件

1) 新建views目录,在目录上右击,选择新建vue(简单模块)创建Login

<template>
</template>

<script>
</script>

<style>
</style>

2)在element-ui组件,在form组件中找到与登录页面类似的组件,拷贝代码到刚新建的Login组件中,修改为自己需要的登录页面,页面包含:账户,密码, 提交按钮

<template>
    <div>
        <el-form >
            <el-form-item label="账户" >
              <el-input type="password" v-model="userName" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="密码" >
              <el-input type="password" v-model="passWord" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
            </el-form-item>
         </el-form>
    </div>
</template>

<script>
  export default {
    name: 'Login',
    data: function() {
      return {
         userName: null,
         passWord: null,
      }
    },
    methods: {
      submitForm: function() {
          console.log("fdfdd");
      }
    }
  }
</script>

<style>
</style>

2.2 引入css(css.txt)

按照css.txt中的说明进行引入,用于控制样式,加入样式

Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios,vue专栏,前端,javascript,vue.js,vue,get,post,axios

base64编码:
基于64个可打印字符来表示二进制数据,用于传输8Bit字节代码,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

2.3 配置路由

router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

//首先导入组件
import Login from '@/views/Login'

Vue.use(Router)

export default new Router({
  routes: [
    {
      //配置路由,根路径访问Login组件
      path: '/',
      name: 'Login',
      component: Login
    }
  ]
})

 2.4 在Login组件中将提交按键调整为100%宽度

<el-button type="primary" @click="submitForm('ruleForm')" style="width:100%">提交</el-button>

2.5 运行效果

在项目目录,运行一下命令,启动服务:

Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios,vue专栏,前端,javascript,vue.js,vue,get,post,axios

3. 后台交互

3.1 引入axios

axios是vue2提倡使用的轻量版的ajax。它是基于promise的HTTP库。它会从浏览器中创建XMLHttpRequests,与Vue配合使用非常好。
vue.js有著名的全家桶系列:vue-router,vuex, vue-resource,再加上构建工具vue-cli,就是一个完整的vue项目的核心构成。其中vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应,但在vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios

3.2 axios/qs/vue-axios安装与使用

注:
qs.js它是一个url参数转化的js库。用法就两个:

var obj = qs.parse('a=b&c=d');  //将URL解析成对象的形式:{a:'b',c:'d'}
var str = qs.stringify(obj);    //将对象 序列化成URL的形式,以&进行拼接:a=b&c=d'

vue-axios是在axios基础上扩展的插件,在Vue.prototype原型上扩展了$http等属性,可以更加方便的使用axios

3.2.1 安装axios

npm install axios -S

2)在Login组件中导入axios

  import axios from 'axios'
  export default {
  ......

3.2.2 发送get请求:

在提交按钮的监听函数中加入发送get请求的代码:

//请求url,需要保证服务可用
let url = 'http://localhost:8080/webserver/userMsg/userAction!login.action';
//注意数据是保存到json对象的params属性
axios.get(url, {
  params: {
    userNo: this.userNo,
    userPwd: this.userPwd
  }
}).then(function(response) {
  console.log(response);
}).catch(function(error) {
  console.log(error);
});

请注意下面图上的错误信息,请求发生了跨域错误问题:

Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios,vue专栏,前端,javascript,vue.js,vue,get,post,axios

跨域请求问题:
因为我们采用的是前后端分离的方式进行开发,前端和后端分别泡在不同的服务器上,基于安全性考虑,浏览器有同源策略,所以出现了跨域问题。
同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。 同源策略是浏览器安全的基石。

4)跨域问题的处理
在filter中处理跨域问题,关键代码:

// Access-Control-Allow-Origin就是我们需要设置的域名
// Access-Control-Allow-Headers跨域允许包含的头。
// Access-Control-Allow-Methods是允许的请求方式
httpResponse.setHeader("Access-Control-Allow-Origin", "*");// *,任何域名
httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
filterChain.doFilter(servletRequest, servletResponse);

在资料中提供了CorsFilter,配置到web.xml中,对所以请求进行拦截处理,可解决跨域问题。注意:请配置在struts中央控制器之前

3.2.3 发送post请求:

//注意数据是直接保存到json对象
axios.post(url, {
    userNo: 'admin',
    userPwd: '123'
}).then(function(response) {
    console.log(response);
}).catch(function(error) {
    console.log(error);
});

输入的测试账号和密码均正确,使用get发送请求获取的响应为“密码正确”,但post方式发送的请求获取的响应为“密码不正确”!
原因分析:通过观察控制台可以发现,post发送请求时,请求参数是以json格式通过request payload进行传送的,的struts的并没有处理这种方式传递的参数(起码是我们使用的struts版本),所以传递到服务器的参数并没有得到有效的解析。

问题处理:
第一种方式: 在服务端编码实现request payload参数解析。在BaseAction中加入一个方法,该方法从request payload中获取json数据,并转化为指定的类。

public Object getRequestBody(Class clazz) {   

        BufferedReader br;
        HttpServletRequest request = ServletActionContext.getRequest();

        try {
            br = request.getReader();
            String str, aStr = "";
            while((str = br.readLine()) != null){
                aStr += str;
            }

            System.out.println(aStr);
            Object obj = JSONObject.parseObject(aStr, clazz);

            return obj;
        } catch (IOException e) {
           throw new RuntimeException("获取请求参数异常: " + e);
        }
    }

获取参数时调用该方法获取

User user = (User)this.getRequestBody(User.class);

第二种方式:使用qs.js库,将{a:'b',c:'d'}转换成'a=b&c=d'。
1) 安装qs和vue-axios

npm install qs -S

npm install vue-axios -S

安装成功后会在package.json中“dependencies”中会看到安装的新库。
在提交请求时使用qs对json对象进行转换

//注意数据是直接保存到json对象
let params = {
  userNo: 'admin',
  userPwd: '123'
};

//参数格式转换
let paramStr = qs.stringify(params);
console.log(paramStr);

//提交时使用转换之后的参数
axios.post(url, paramStr).then(function(response) {
  console.log(response);
}).catch(function(error) {
  console.log(error);
});

观察控制台中的输出,已经将json格式转化为&连接的格式。查看返回结果是否是预期值。

3.2.4 简化axios使用

为简化axios使用,还可以使用axios全局配置及拦截器

1) 安装vue-axios

npm install vue-axios -S

2) 将提供的api目录考到src根路径下

Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios,vue专栏,前端,javascript,vue.js,vue,get,post,axios

现在可以将在Login组件中的导入axios和qs语句删除, action.js和http.js的配置详见代码中的注释。

3)将action中的配置修改为自己的后台服务配置

export default {
	'SERVER': 'http://localhost:8080/webserver', //服务器
	'SYSTEM_USER_DOLOGIN': '/userMsg/userAction!login.action', //登陆
	'SYSTEM_USER_DOREG': '/userAction.action', //注册
  //获取完整的请求地址
	'getFullPath': k => { //获得请求的完整地址,用于mockjs测试时使用
		return this.SERVER + this[k];
	}
}

 4)配置main.js

import Vue from 'vue'

//vue项目对axios的全局配置(增加配置)
import axios from '@/api/http'
import VueAxios from 'vue-axios'
Vue.use(VueAxios,axios)
......

5) 在提交时不需要手动处理转换,全局配置进行转换。

//修改url的获取方式,url已经配置在了action.js中,这里只要指定action路径
//服务地址和服务上下文已经在http.js中设置了axios.defaults.baseURL,
//axios会根据配置自动获取。
let url = this.axios.urls.SYSTEM_USER_DOLOGIN;
this.axios.post(url, params).then(resp => {
  console.log(resp);
}).catch(resp => {});

6)发生post请求,测试文章来源地址https://www.toymoban.com/news/detail-731268.html

到了这里,关于Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue-cli3的安装和项目创建

    一 vue-cli3的安装 (注意:vue-cli3在安装之前,需要先删除旧版本,即vue-cli2)   cnpm i -g @vue/cli vue-cli3的卸载:cnpm uninstall -g @vue/cli  然后用命令“vue -V”查看是否删除vue,如果没有删掉,就直接去文件夹里面删除vue文件夹即可 (二)vue-cli3项目创建 1,用dos命令的方式 vue cre

    2024年02月09日
    浏览(58)
  • Vue-cli搭建SPA项目

    Vue CLI(Vue Command Line Interface)是一个用于快速搭建基于Vue.js的前端项目的工具。它是Vue.js官方提供的一个脚手架工具,旨在简化Vue.js项目的开发过程。Vue CLI提供了一些强大的功能,帮助开发者轻松创建、开发和构建Vue.js应用程序 Vue CLI的主要特点和功能: 快速创建项目: V

    2024年02月07日
    浏览(60)
  • 关于基于vue-cli脚手架创建vue项目(图文版)

    目录 一.vue-cli脚手架·概述(来源于官方文档) 二.创建流程 2.1 首先安装node.js,如未安装请移步到:安装node.js 2.2 安装脚手架vue-cli 2.2.1 使用npm install -g @vue/cli命令  2.2.1 使用vue -V 查看版本并检验是否安装成功  2.3 安装vue项目 2.3.1 使用命令 vue create 项目名 ​编辑 2.3.2 这里

    2024年02月07日
    浏览(103)
  • vue-cli3.0创建项目IE兼容处理

    一、白屏处理 IE白屏,基本是JS代码报错,包括app.js报错或者chunk包报错,需要分以下几个步骤解决: 1. 安装sockjs-client包,npm i sockjs-client -D。 2. 安装babel-polyfill包,npm i babel-polyfill -D,并在main.js中引入(在第一行代码引入),import \\\'babel-polyfill\\\'; 3. 在vue.config.js中增加配置:

    2024年02月07日
    浏览(55)
  • 怎样创建vue项目(分别基于vue-cli和vite两种的创建方式)

    1、安装node.js 1、首先需要安装node.js,推荐下载地址:Node.js 2、检查是否安装成功,使用打开黑窗口的快捷键window+R,输入cmd,在黑窗口输入node -v,如果输出版本号,就说明安装node环境成功, 2、vue-cli搭建Vue开发环境 Vue CLI:命令行界面,俗称脚手架,Vue CLI 是一个基于webpa

    2024年02月02日
    浏览(80)
  • vue-cli自定义创建项目-eslint依赖冲突解决方式

    创建项目步骤 概览: 在安装 npm安装时会报错 依赖冲突原因: @vue/eslint-config-standard@6.1.0 依赖于 eslint-plugin-vue 的 ^7.0.0 版本,但是项目中安装了更高版本的 eslint-plugin-vue 解决方式:降级eslint-plugin-vue到@vue/eslint-config-standard支持的版本 解决后: 再进行npm安装,就能成功

    2024年04月09日
    浏览(53)
  • vue-cli创建项目、vue项目目录结(运行vue项目)、ES6导入导出语法、vue项目编写规范

    1 vue-cli创建项目 1.1 vue-cli 命令行创建项目 1.2 使用vue-cli-ui创建 2 vue项目目录结构 2.1 运行vue项目 2.2 vue项目的目录结构 3 es6导入导出语法 4 vue项目编写规范 4.1 修改项目 4.2 以后写vue项目,只需要在固定位置写固定代码即可 App.vue HomeView.vue AboutView.vue

    2024年02月07日
    浏览(77)
  • vue-cli 脚手架创建uniapp项目(微信小程序)

    1、全局安装 vue-cli 脚手架(不建议用 5.0 版本,避免报错) 2、脚手架创建项目 3、选择 默认模板 即可 4、编译并启动项目  5、开发者工具,导入项目,注意路径 \\\"项目地址/dist/dev/mp-weixin\\\" 开发的规范 不能直接在开发者工具中修改代码,口诀:vscode做开发,开发者工具做调试

    2024年02月09日
    浏览(57)
  • vue-cli5脚手架搭建项目过程详解 -vue组件单元测试

    单元测试是对软件中的最小可测试单元进行测试。(最小可测试单元是要有结果产出的。例如某个方法,单独的某个操作) 单元测试其实是伴随着敏捷开发,它是对更快开发的一种追求。早发现错误比晚发现错误会更好,保证自己的代码符合要求 一: 搭建基于 jest 的 vue 单元

    2023年04月14日
    浏览(111)
  • ❤ Vue2+vue-cli+vue-router+vuex +elementUI/vant完整项目搭建 项目和配置(一)

    项目整套:Vue2+vue-cli+vue-router+vuex +elementUI/vant 进一步配置完善已迁移到(二)部分 ① Git 环境检测 git 环境 git --version ② node 环境和npm 环境检测 node 环境 node --version npm 环境 npm -v ③ Vue 环境检测 查看VUE脚手架版本 vue -V 安装Vue2 安装Vue2脚手架 安装webpack 检查安装 利用webpack创

    2024年02月16日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包