博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue系列(四):模块化开发、Elment UI、自定义全局组件(插件)、Vuex
阅读量:5763 次
发布时间:2019-06-18

本文共 3893 字,大约阅读时间需要 12 分钟。

一、模块化开发

1. vue-router模块化

cnpm install vue-router -S

1.1 编辑main.js

//引入VueRouter import VueRouter from 'vue-router'//使用VueRouterVue.use(VueRouter);import routerConfig from './router.config.js'//创建路由实例const router=new VueRouter(routerConfig);

1.2 编辑App.vue

1.3 编辑router.config.js

export default {    routes:[        {            path:'/home',            component:Home        },        {            path:'/news',            component:News        }    ]}

2. axios模块化

cnpm install axios -S使用axios的两种方式:    方式1:在每个组件中引入axios    方式2:在main.js中全局引入axios并添加到Vue原型中

3. 为自定义组件添加事件

//为自定义组件加修饰符:native

二、 Elment UI

1. 简介

Element UI是饿了么团队提供的一套基于Vue2.0的组件库,可以快速搭建网站,提高开发效率    ElementUI  PC端    MintUI 移动端

2. 快速上手

2.1 安装elment ui

cnpm install element-ui -S

2.2 在main.js中引入并使用组件

import ElementUI from 'element-ui'import 'element-ui/lib/theme-default/index.css' //该样式文件需要单独引入Vue.use(ElementUI);这种方式引入了ElementUI中所有的组件

2.3 在webpack.config.js中添加loader

CSS样式和字体图标都需要由相应的loader来加载,所以需要style-loader、css-loader默认并没有style-loader模块,所以需要单独安装    cnpm install style-loader --save-dev

2.4 使用组件

2.5 使用less

安装loader,需要两个:less、less-loader    cnpm install less less-loader -D在webpack.config.js中添加loader

3. 按需引入组

3.1 安装babel-plugin-component

cnpm install babel-plugin-component -D

3.2 配置.babelrc文件

"plugins": [["component", [    {      "libraryName": "element-ui",      "styleLibraryName": "theme-default"    }]]]

3.3 只引入需要的插件

三、 自定义全局组件(插件)

全局组件(插件):就是指可以在main.js中使用Vue.use()进行全局引入,然后在其他组件中就都可以使用了,如vue-router    import VueRouter from 'vue-router'    Vue.use(VueRouter);普通组件(插件):每次使用时都要引入,如axios    import axios from 'axios'

四、 Vuex

1. 简介

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单来说,用来集中管理数据,类似于React中的Redux,都是基于Flux的前端状态管理框架

2. 基本用法

2.1 安装vuex

cnpm install vuex -S

2.2 创建store.js文件,在main.js中导入并配置store.选项

import store from './store.js' //导入store对象new Vue({  store, //配置store选项,指定为store对象,会自动将store对象注入到所有子组件中,在子组件中通过this.$store访问该store对象  el: '#app',  render: h => h(App)})

2.3 编辑store.js文件

Vuex的核心是Store(仓库),相当于是一个容器,一个store实例中包含以下属性的方法:    state       定义属性(状态、数据)    getters     用来获取属性    actions     定义方法(动作)    commit      提交变化,修改数据的唯一方式就是显式的提交mutations    mutations   定义变化    注:不能直接修改数据,必须显式提交变化,目的是为了追踪到状态的变化
/** * vuex配置 */import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex);//定义属性(数据)var state={    count:6}//定义gettersvar getters={    count(state){        return state.count;    },    isEvenOrOdd(state){        return state.count%2==0?'偶数':'奇数';    }}//定义actions,要执行的操作,如流程判断、异步请求等const actions = {    increment(context){//包含:commit、dispatch、state        console.log(context);        // context.commmit()    },    // increment({commit,state}){    //     commit('increment'); //提交一个名为increment的变化,名称可自定义,可以认为是类型名    // },    decrement({commit,state}){        if(state.count>10){            commit('decrement');        }    },    incrementAsync({commit,state}){        //异步操作        var p=new Promise((resolve,reject) => {            setTimeout(() => {                resolve();            },3000);        });        p.then(() => {            commit('increment');        }).catch(() => {            console.log('异步操作');        });    }}//定义mutations,处理状态(数据)的改变const mutations={    increment(state){        state.count++;    },    decrement(state){        state.count--;    }}//创建store对象const store=new Vuex.Store({    state,    getters,    actions,    mutations})//导出store对象export default store;

2.4 编辑App.vue

在子组件中访问store对象的两种方式:    方式1:通过this.$store访问    方式2:通过mapState、mapGetters、mapActions访问,vuex提供了两个方法:        mapState    获取state        mapGetters  获取getters        mapActions  获取actions

3. 分模块组织Vuex

|-src    |-store        |-index.js        |-getters.js        |-actions.js        |-mutations.js        |-modules  //分为多个模块,每个模块都可以拥有自己的state、getters、actions、mutations            |-user.js            |-cart.js            |-goods.js            |....

完!

参考Vue教学视频:

转载地址:http://rpwux.baihongyu.com/

你可能感兴趣的文章
15分钟构建超低成本数据大屏:DataV + DLA
查看>>
1月9日云栖精选夜读 | Mars 算法实践——人脸识别
查看>>
SparkSQL Catalyst解析
查看>>
jSearch(聚搜) 1.0.0 终于来了
查看>>
盘点2018云计算市场,变化大于需求?
查看>>
极光推送(一)集成
查看>>
MySQL 8.0 压缩包版安装方法
查看>>
@Transient注解输出空间位置属性
查看>>
Ansible-playbook 条件判断when、pause(学习笔记二十三)
查看>>
5种你未必知道的JavaScript和CSS交互的方法(转发)
查看>>
线程进程间通信机制
查看>>
galera mysql 多主复制启动顺序及命令
查看>>
JS prototype 属性
查看>>
中位数性质——数列各个数到中位数的距离和最小
查看>>
WebApp之Meta标签
查看>>
添加Java文档注释
查看>>
Python3批量爬取网页图片
查看>>
iphone-common-codes-ccteam源代码 CCEncoding.m
查看>>
微信公众平台开发(96) 多个功能整合
查看>>
[转]MVC4项目中验证用户登录一个特性就搞定
查看>>