vue+vue-cli+vuex+vrouter 开发学习和总结

1.项目目录结构

  

  1.components------------------------->页面中所用的公共组件;

    2.router index.js --------------------->存储路由信息

  3.store  actions.js  ------------------>处理vuex action操作信息 

      getters.js-------------------->获取vuex index.js中定义的属性值

      index.js---------------------->定义vuex的属性值,mutations对象函数等;

      api.js------------------------->处理views页面组件中网络请求处理
    4.views-------------------------------->SPA页面组件
  5.static--------------------------------->项目中需要用到的图片 css和 common js等;

  

2.理解和问题总结

1.css 导入方式

  @import "../static/common/css/common.css";
  @import "../static/common/css/main.css";

 

1.关于创建根app的两种方式中的总结:

  
    关于创建根app的两种方式中的总结:
   1.
       const app = new Vue({
           router,
           store,
           render: h => h(App),
         }).$mount(‘#app‘);

       render: h => h(App) 具体是什么含义?
       render: function (createElement) {
           return createElement(
           ‘h‘ + this.level,   // tag name 标签名称
           this.$slots.default // 子组件中的阵列
           )
       }

       将h作为createElement的别名是一个通用惯例

      2.(最新的加载方式)
        new Vue({
            el: ‘#app‘,
            router,
            store,
            template: ‘<App/>‘,
            components: { App }
         });

2.router 组件导入方式

      组件的引入方式
       a. 采用import的方式引入进来;比如 import login from ‘../components/login.vue‘  (推荐)
       b. 采用require的方式 resolve => require([‘../components/login.vue‘], resolve)

3.V-if 和V-show的区别使用

 

v-show 不会重新创建和销毁,只是简单的display属性,而v-if 会销毁和重新创建; v-if可以通过key 对相同的模块不采用复用;

4.DOM元素引用

 

<p class="errorDes_login" ref="errorDescription" v-show="isErrorShow">您输入的手机号码格式错误!</p>
可以通过 this.$refs.errorDescription 获取相应的引用ref引用对象;  this.$el获取根DOM元素,然后通过this.$el.querySelector() 查询获取到对应的子元素;

5.关于组件CSS class重名的问题

由于vue 会把所有的static文件都封装到app.js的文件中。所有如果后面的组件class,与前面组件class重名,会覆盖之前组件中css的渲染效果

6.关于axios POST请求出错的问题

在使用axios 进行post请求时;params 需要进行qs 处理,不然会提示跨域的问题。

import axios from ‘axios‘;
import qs from ‘querystring‘

axios.post(loginUrl,qs.stringify(signParams),config)
        .then(function(){})
        .catch(function(){})

7.设置代理解决本地开发跨域的问题

  

进入config/index.js里
配置方法一:
proxyTable: {
    ‘/api‘:{
      target:‘http://www.api.com‘,
      changeOrigin:true,
      pathRewrite:{}
     }
},

配置方法二:
proxyTable: {
    ‘/api‘:{
      target:‘http://www.api.com/api‘,
      changeOrigin:true,
      pathRewrite:{
‘^/api‘:‘‘
}
     }
},

以上配置表示请求接口以 "/api" 开头的话,服务器会去请求  http://www.api.com/api  以下的接口。

例如 this.$http.get(‘/api/menu/get_list‘).then(function(){}),

这样子就可以拿到  http://www.api.com/api/menu/get_list  的数据了。

8.axios请求   Unexpected token o in JSON at position 1问题

在使用axios请求返回的response时,不能对response,进行JSON.pase(response),否则会出现Unexpected token o in JSON at position 1,因为response本身就是一个Object对象;

9.同级文件导入时,提示node_module中找不到的问题

在导入时,必须加当前目录 ./,否则会直接在node_module里面去找,而不是在当前目录下;
例如 test.js 和 login.js在同一个文件下;那么login.js 在导入test.js时 必须指明是当前目录,否则会在node_module里面去寻找

import * as test from ‘./test.js‘

10.对于使用了v-if的element,在js 元素引用时,this.$refs.ele ,要做判断处理。 否则 element被销毁后,会提示undefined的错误;

    

----------------------------------------------------------------------------------------- ---未完待续-------------------------------------------------------------------------------------------------------------------------------------------

时间: 2024-10-08 01:19:36

vue+vue-cli+vuex+vrouter 开发学习和总结的相关文章

vue移动音乐app开发学习(三):轮播图组件的开发

本系列文章是为了记录学习中的知识点,便于后期自己观看.如果有需要的同学请登录慕课网,找到Vue 2.0 高级实战-开发移动端音乐WebApp进行观看,传送门. 完成后的页面状态以及项目结构如下: 一:创建轮播图组件slider.vue 1:在src/base下新建base文件夹,然后创建silder.vue: <template> <div class="slider" ref="slider"> <div class="sl

学习vue必备技能vuex

首先我们先用vue-cli搭建项目,安装vuex,安装依赖(这里不一一讲解),然后在src下建立/vuex/store.js,里面代码截图 最简单的引入vue,引入vuex,定义两个对象,一个state(数据状态),一个mutations(改变数据方法),最后export,因为我们别的地方要用 ,比较简单的一个实例,也是比较经典的实例,点击加减改变state里面的值, 红色部分是比较麻烦一点的写法,但是比较容易理解,下面inport之后,我们直接在页面上显示和这个{{  }}类似, 然后comm

Vue学习日记(四)——Vue状态管理vuex

前言 先说句前话,如果不是接触大型项目,不需要有多个子页面,不使用vuex也是完全可以的. 说实在话,我在阅读vuex文档的时候,也很难以去理解vuex,甚至觉得没有使用它我也可以.但是直到我在项目碰到下面这些问题: 当路由切换的时候,原本路由的数据太多,传递过去太麻烦. 有些数据是多个路由需要用到的,那我就需要从后台获取多次数据 当然,这些问题都可以解决,就是在实例化vue对象的时候,就将这些数据绑定在window对象上面.但是我们也不得不设想: 万一数据太多了,那么可阅读性是不是会下降 如果

从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十三║Vue实战:Vuex 其实很简单

系列教程一目录:.netcore+vue 前后端分离 系列教程二目录:DDD领域驱动设计 系列教程三目录:Nuxt.js TiBug系统 系列教程四目录:VueAdmin 后台管理系统 系列教程五目录:IdentityServer4 授权服务器 本文梯子 前言 零.今天要完成实战1中的红色部分 一.常见的 Vue 表单提交是如何设计的? 1.表单.按钮等在一个组件内 2.按钮在父组件.表单在单独的子组件内 二.通过 $emit 修改父组件数据 1.在原来代码里 About.vue 修改成 For

Vue.js-组件化前端开发新思路

Vue.js-组件化前端开发新思路 12017.04.14 18:31:25字数 6228阅读 5632 本文章是我最近在公司的一场内部分享的内容.我有个习惯就是每次分享都会先将要分享的内容写成文章.所以这个文集也是用来放这些文章的,顺便也当图床用. 1. 认识Vue.js Vue.js(读音 /vju?/,类似于view)是一套构建用户界面的渐进式框架. 如果你有react或者Angular开发经验,你肯定不会对Vue.js感到太过陌生.Vue.js是踩在Angular和React肩膀上的后来

Vue入门之Vuex实战

引言 Vue组件化做的确实非常彻底,它独有的vue单文件组件也是做的非常有特色.组件化的同时带来的是:组件之间的数据共享和通信的难题. 尤其Vue组件设计的就是,父组件通过子组件的prop进行传递数据,而且数据传递是单向的.也就是说:父组件可以把数据传递给子组件,但是 反之则不同.如下图所示: 单向数据流动 单方向的数据流动带来了非常简洁和清晰的数据流,纯展示性或者独立性较强的模块的开发确实非常方便和省事. 但是复杂的页面逻辑,组件之间的数据共享处理就会需要通过事件总线的方式解决或者使用Vue的

【Vue 入门】使用 Vue2 开发一个展示项目列表的应用

前言 一直没有找到一个合适的展示个人项目的模板,所以自己动手使用 Vue 写了一个.该模板基于 Markdown 文件进行配置,只需要按一定规则编写 Markdown 文件,然后使用一个 在线工具 转为 JSON 文件即可.下面是该项目的在线地址和源码.本文主要记录一下项目中用到的相关知识. 在线演示    源码 效果 程序最终的效果如下图所示: 整个项目只包含两个组件:项目介绍 和 侧边导航,逻辑比较简单,十分适合入门. 环境配置 这里我们使用 Gulp 和 Webpack 用作项目构建工具.

Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用.其实说是多页面应用,实际上在webpack中属于四个app,  如果真是做纯单页面,那应该有二三十个页面吧.所以我这里的多页面应用,是分为四个SPA.比如微信最下面,有四个导航,微信,通讯录,发现,我. 那么这四个导航,就是我的四个SPA,配置多个入口即可. 在这里就不说太多代码了,项目结构将会放

Vue状态管理vuex

转: https://www.cnblogs.com/xiaohuochai/p/7554127.html 前面的话 由于多个状态分散的跨越在许多组件和交互间各个角落,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue提供了vuex.本文将详细介绍Vue状态管理vuex 引入 当访问数据对象时,一个 Vue 实例只是简单的代理访问.所以,如果有一处需要被多个实例间共享的状态,可以简单地通过维护一份数据来实现共享 const sourceOfTruth = {} const vmA = new