搭建一个直接使用的vue项目

1,583 阅读3分钟

最近要做个新项目,使用vue框架,从头搭了一个,平时从头搭的机会还真不多,有一些小坑,在这记录以下防止下次忘记。

首先在要创建的目录下vue create demo(node那些开发环境安装配置就不来了,网上很多教程),然后是一些选项

我这里之前创建的时候选过了,router,vuex都选中后续会省事,加个eslint规范代码

创建好之后会提示切换到目录下和运行语句,运行起来展示出vue那个绿三角的logo就成功了。

接下来配置一下路由,因为我们创建的时候已经选择了router所以目录下会有router里头是一个index.js的文件,如果创建的时候是默认没有装router、vuex可以装一下指令为"npm install vuex"、"npm install vue-router",我们每新建一个页面都要在这里配置。首先提一下项目创建好了之后会有一个App.vue的文件,这个文件很有迷惑性,我一开始总想把它当成一个首页来用,后来发现不能这么理解,App.vue是主组件,页面的入口文件,所有的页面都是在这里切换的。理解到这之后就不会在这个文件里写页面代码了,所以app.vue里只需要放一个路由的标签即可。

然后以index和login这两个页面切换来说一下路由,下边这是我的router里的index.js文件

下边这是切换页面的方法

这样一个简单的页面跳转就弄好了,再顺便说一下二级路由,只需要在一个页面的配置下加一个children如下,这里要注意children下的path不要加'/'了不然不好使。

 {    path: "/about",  
  name: "About",   
 component: About,    
children:[      
      {  path: "pageOne",       name:'PageOne',       component:PageOne}, 
     {  path: "pageTwo",  name:'PageTwo',  component:PageTwo}  
  ]  }

在父页面使用的时候跟一级页面一样

配好路由再搞一下缓存,之前简单用一下window的全局,但是用到vue了就用一下他的vuex,

提一下js的缓存,如果不想用vuex用这个也行

短时间存取,关闭浏览器即丢失:

存:sessionStorage.setItem("key",”value”)

取:sessionStorage.getItem("key")

单条删除:sessionStorage.removeItem("key")

全删:sessionStorage.clear()

长时间存取,不清除不会丢失,把上边的sessionStorage改成localStorage即可

好了来说一下vuex,因为网上教程说的很复杂我也没看明白,而且我们的需求也简单,只要存取就行,以后弄明白了再深入说一下

还是因为我们创建项目时已经勾选了,所以会有一个store的目录,下边也是一个index.js,如果没选可以安装一下npm install vuex --save然后自己创建一下,这个index.js这样配

就是定义好缓存和它的get,set方法,存取方法:

 this.$store.commit('setDemoValue', value);     
 console.log(this.$store.getters.getDemoValue)

这样项目基本就能使用了。

用了两天发现缺点东西,这么使用vuex刷新页面数据就没了,在当前代码补充点来实现vuex的持久化储存,原理也是利用了浏览器的localStorage:

首先安装个组件npm install vuex-persist -D

在store下的index.js里引入声明一下,直接上这一页的代码吧

import Vue from "vue";
import Vuex from "vuex";
import VuexPersist from "vuex-persist"Vue.use(Vuex);
const vuexLocal = new VuexPersist({ 
 storage: window.localStorage //可选,sessionStorage/indexDB
});
export default new Vuex.Store({
  state: {    //全局参数  
  demoValue:{      name:"",      age:""    } 
 }, 
 mutations: {    //set方法  
  setDemoValue(state,demoValue){ state.demoValue = demoValue  } 
 },  
getters: {    //get方法
   getDemoValue: state => state.demoValue  
},  
actions: {},
  modules: {}, 
 plugins:[vuexLocal.plugin]});

这样刷新页面就不会丢失数据了。

再补充个加一下axios: npm install axios -s

安装好了之后配一下,以往单独建个文件放,这次把它跟上头建好的vuex放在一起

import axios from 'axios'在store的index里引入一下,然后在actions里封装请求:

actions: {  
  getAxios ({commit},url)    
    axios.get( this.state.baseUrl+url ,{ 
      params:'',       
      headers: {      
     'Content-Type': 'application/json;charset=UTF-8',      
     'Authorization': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJtYW5hZ2VybmFIndzcmNlc2hpZGlhb2R1MiIsImV4cCI6MTYxMTAyODgwNn0.-AqwW4Pt7wAMQ5ZroqG0GiWVIG8YuSBPuG3a54NNx94'      }
        }) 
    .then( res => {      console.log(res);     })   
   .catch(error => {       console.log(error);     });  
  }  }

这里注意一下两个参数,第二个参数才是我们传过来的请求尾,并且只能有一个参数,多余的参数可以合为一个对象传。

调用的时候this.$store.dispatch('getAxios',this.url)

同样写好别的请求方式就完成了

github.com/lzlasome/vu…