从零开始创建一个vue项目
一、首先创建一个文件夹,在终端中输入
1 vue create myapp
选择默认defaule,等待项目的生成,项目生成后键入一下命令
1 //进入项目 2 3 cd myapp 4 5 //启动项目 6 7 npm run serve 8 9 //或者 10 yarn serve
删除不必要的文件,梳理一下需要安装那些依赖和插件
1.axios 用来代替ajax发起请求
2.iscroll 一个常用的滚动插件
3.node-sass sass-loader 用来编写sass
4.swiper 轮播图插件
5.vue-router 路由插件
6.vue-cookies vue项目中便捷的cookie
使用命令安装这些插件
1 cnpm i axios iscroll node-sass sass-loader swiper vue-router vue-cookies -D
安装完成后引入vue
在src下创建axios.js文件,写入
import axios from 'axios' //引入axios import vue from 'vue' vue.prototype.$axios = axios; //添加原型 //在main.js中写入 import './axios.js'
创建cookies.js文件,写入
1 import vue from 'vue' 2 import cookie from 'vue-cookie' 3 vue.use(cookie) 4 5 //在main.js中写入 6 import './cookies.js'
如果还需要eventbus可以创建eventbus.js
1 import Vue from 'vue' 2 3 var eventbus = new Vue() 4 5 vue.prototype.$eventbus = eventbus
//在main.js中引入
import './eventbus'
也可以不是有模块化开发,直接在main.js中引入
1 //axios 2 import axios from 'axios' //引入axios 3 Vue.prototype.$axios = axios; //添加原型 4 5 6 //cookie 7 import cookie from 'vue-cookie' 8 Vue.use(cookie) 9 10 //eventbus 11 var eventbus = new Vue() 12 13 Vue.prototype.$eventbus = eventbus
接下来就是router路由文件,创建router.js,写入
1 import vue from 'vue'; 2 import vueRouter from 'vue-router'; 3 4 //将页面导入路由 5 import index from './components/index.vue'; 6 7 vue.use(vueRouter); 8 //设置路由规则 9 const routes = [ 10 { 11 path='/', 12 component : index 13 } 14 ] 15 16 //mode 网址显示的样式 history默认 hash网址含# abstract 网址不变 17 const router = new vueRouter({routes,mode:'history'}) 18 19 export defualt router //导出 20 21 22 //在main.js中引入 23 import router from './router.js'; 24 new Vue({ 25 router, 26 .... 27 }).$mount('#app')
assets文件夹,公共样式、js、图片等,需要在main.js中引入
1 //比如 2 import './assets/css/reset.css';
components文件用来存放组件
router在页面的显示分为入口和出口
入口是点击某个元素进行跳转,出口是在哪里显示
1 //入口 2 3 <router-link to='/'>点我跳转</router-link> 4 5 //出口 6 7 <router-view></router-view>
当我们要使用vuex时,先使用命令进行安装
1 cnpm i vuex -S
在src下创建store.js
1 import vue from 'vue'; 2 import vuex from 'vuex'; 3 4 //如果使用模块化 5 import goods from './goods.js' 6 7 vue.use(vuex); 8 9 const store = new vuex.Store({ 10 modules:{ 11 g:goods //将逻辑代码写入goods.js文件中 12 } 13 }) 14 15 export default store; 16 17 //在main.js中引入 18 import store from './store.js' 19 20 new Vue({ 21 store, 22 router, 23 ...... 24 }).$mount('#app')
用来存放store代码的goods.js
const goods = { // 用来存放数据 state:{ a : 1 }, //用来直接修改state数据 mutations:{ add(state,payload){ state.a = payload } }, //用来编写逻辑 actions:{ //payload代表传过来的数据,context add(context,payload){ context.commit('add',1) } }, //计算属性,具有缓存的特点 getter:{ } }
然后在页面中调用actions控制mutation进行修改state
1 created(){ 2 //获取state数据 3 this.arr = this.$store.state.goods; 4 //调用action 5 this.$store.dispatch('add',this.arr); 6 //也可以直接控制mutation 7 this.$store.commit('add',this.arr); 8 }
vuex提供了几个辅助函数
mapState在vue组件中用于快速接受state的数据
mapMutations在vue组件中用于快速接收mutations中的数据
mapActions在vue组件中用于快速接收actions中的数据
mapGetters在vue组件中用于快速接收grtters中的数据
//在页面中引入
import {mapActions,mapMutations,mapGetters,mapState} from 'vuex'
computed:
{ ...mapState({ goods:(state)=>{ return state.goods; } }) ...mapActions(['add']) //和视图层的函数名要一致 ...mapMutations(['add']) ...mapGetters(['add']) }