Vue、Vuex、MintUi、ElementUi 基础

举报
小米粒-biubiubiu 发表于 2020/12/02 23:47:27 2020/12/02
【摘要】 一、搭建vue的开发环境 (1)安装node.js (2) 安装脚手架工具,官方命令行工具   npm install  --global  vue-cli     /    cnpm install  --global  vue-cli (3) 创建项目   vue init webpack vue-demo01  创建过程 看到 ESlin...

一、搭建vue的开发环境

(1)安装node.js

(2) 安装脚手架工具,官方命令行工具

  npm install  --global  vue-cli     /    cnpm install  --global  vue-cli

(3) 创建项目

  vue init webpack vue-demo01

 创建过程 看到 ESlint 字样,输入n ,不开启代码检查,否则代码多少空格都会报错

 cd vue-demo01

安装依赖

cnpm install    / npm  install

npm  run  dev   /  cnpm run  dev

安装 cnpm    

http://npm.taobao.org/

 

另一种创建项目的方法

vue init webpack-simple vuedemo02 

可以省去繁琐的步骤,并且没有Eslint 语法检查

vs code 安装 vue2.0 插件

 

(4)vue-cli 3.0 

如果想使用vue-cli 3.0  创建项目可以先删除 原来的vue-cli 2.0

cnpm  uninstall  -g  vue-cli 

npm install  -g @vue/cli

创建项目

vue create hello-world

运行:cnpm  run serve

编译 :cnpm  run  build

图形创建工具

vue  ui

二、使用vue-resource请求数据

vue官方数据请求工具

(1)安装 vue-resource  注意: 要加--save ,这样package.json中就会加上依赖

cnpm  install  vue-resource --save

(2)main.js 中导入

import  VueResource from 'vue-resource'

Vue.use(VueResource)

(3)在组件中直接使用


  
  1. var api = 'https://www.baidu.com/'
  2.            this.$http.get(api).then((response)=>{
  3.                 alert(response)
  4.                 this.list = response.body.result
  5.            },function(error){
  6.            })

三、使用axios请求数据

安装 axios

cnpm install axios --save

axios 是第三方的依赖,所以不需要使用Vue.use()方法

直接在想使用axios 的组件中导入使用即可

import Axios from 'axios'


  
  1. var api = 'https://www.baidu.com/';
  2. Axios.get(api).then(function(response){
  3. alert(response)
  4. }).catch(function(error){
  5. alert(error)
  6. })

  
  1. Axios.get(api).then((response)=>{
  2. this.list = response.body.result
  3. }).catch((error)=>{
  4. alert(error)
  5. })
  6. 建议function 改成箭头函数,免得this的指向有问题

四、fetch-jsonp  请求数据

五、父子组件

父组件传值到子组件

(1)父组件调用子组件的时候,绑定动态属性

 <v-header :title="title" :run="run"></v-header>

(2)子组件中通过 props 接收父组件传来的值

父组件主动获取子组件的属性

(1)调用子组件的时候定义一个ref

    <v-header :title="title" :run="run" ref="header"></v-header>

    <button @click="getSubMsg()">主动获取子组件属性或者方法</button>

(2)在父组件里面通过

this.$ref.header.属性

this.$ref.header.方法

子组件主动获取父组件的属性

(1)  直接在子组件中使用 

 <button @click="getParent()">获取父组件的属性或者方法</button>

六、非父子组件传值

(1)新建一个js文件,然后引入vue,实例化vue,最后暴露出这个实例


  
  1. import Vue from 'vue'
  2. var VueEvent = new Vue()
  3. export default VueEvent

(2)在要广播的地方引入刚才定义的实例


  
  1. import VueEvent from '../modal/VueEvent'
  2.  <button @click="sendMq()">首页广播事件</button>

 

(3)通过VueEvent.$emit('名称','数据')


  
  1.  <button @click="sendMq()">首页广播事件</button>
  2.  sendMq(){
  3.           VueEvent.$emit('to-news',this.title)
  4.         }

(4)在接收数据的地方通过VueEvent.$on('')


  
  1. import VueEvent from '../modal/VueEvent'
  2.   mounted() {
  3.       VueEvent.$on('to-news',function(data){
  4.            console.log(data)
  5.       })
  6.   },

七、Vue-Router的使用

1.安装

cnpm install vue-router --save

2.引入并使用

Vue.use(VueRouter)

3.配置路由

(1)创建组件  引入组件

(2)定义路由


  
  1.  const routes = [
  2. {
  3.       path: '/',
  4.       name: 'HelloWorld',
  5.       component: HelloWorld
  6.     },
  7.     {
  8.       path: '/Home',
  9.       name: 'Home',
  10.       component: Home
  11.     }
  12. ]

(3) 实例化 VueRouter


  
  1.  const  router = new VueRouter(
  2. {
  3.   routes   // 缩写 相当于 routes : routes
  4. }
  5. )

(4)挂载


  
  1. new Vue({
  2.   el: '#app',
  3.   router,
  4.   components: { App },
  5.   template: '<App/>'
  6. })

(5)根组件的模板里面放上这句话

    <router-view></router-view>

八、动态路由

1.配置动态路由

routes:[

// 动态路径参数 以冒号开头

{parh:'/user/:id',component: User}

]

2. 在对应的页面

this.$route.params 获取 动态路由的值

3.编程式导航

 4. history 模式

九、路由嵌套

1.配置路由


  
  1. {
  2.  path: '/user',
  3. component: User,
  4. children: [
  5.      {path: 'useradd',component: UserAdd}
  6.      {path: 'userlist',component: UserList}
  7. ]
  8. }

2.父路由里面配置子路由显示的地方

<router-view></router-view>

 

十、MintUi  和  Element Ui

MintUi 基于 vue 的  移动端 ui 框架

cnpm install mint-ui --save

import MintUI from 'mint-ui'

import 'mint-ui/lib/style.css'

Vue.use(MintUI)

Element Ui 基于 vue 的 pc 端 ui 框架

cnpm i element-ui -S

import ElementUI from 'element-ui';

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

Vue.use(ElementUI)

其他更多用法参照 官方文档

十一 、vuex

 vuex 是一个专为 vue.js 应用程序开发 的 状态管理模式

1.vuex 解决了组件之间同一状态的共享问题,(解决了不同组件之间的数据共享)

2.组件里面数据的持久化

小型项目不建议用vuex,而使用 localstroage 和 sessionstroage

state 单一状态树 用来存放数据‘

getter 相当于计算属性

Mutation 用来改变 state 里面的 数据

Action  用来触发 mutation 来改变state的数据,提交的是 mutation,而不是直接变更

状态,可以包含任意的异步操作

3. 安装vuex

cnpm  install  vuex  --save

4. vuex 的使用

(1)src 目录下面创建一个 vuex 的文件夹

(2)vuex文件夹里面创建一个store.js

(3)在store.js引入 vue 及 vuex,并且 Vue.use(Vuex)

(4)定义数据


  
  1. /**
  2. * 1.state在vuex中用于存储数据
  3. */
  4. var state ={
  5. count: 1
  6. }

(5)定义方法


  
  1. /**
  2. * 2.mutation里面放的是方法,方法主要用于改变state的数据
  3. */
  4. var mutations={
  5. incCount(){
  6. ++state.count;
  7. }
  8. }

(6)实例化vuex.store 并 暴露


  
  1. /**
  2. * 3.vuex 实例化 Vuex.store
  3. */
  4. const store = new Vuex.Store({
  5. state:state,
  6. mutations:mutations
  7. })
  8. export default store;

(7)组件里面使用vuex

1.引入 store

 import  store  from  ’../vuex/store.js‘

2.注册


  
  1.  export  default {
  2.     data(){
  3.     return {
  4.      msg:'aaa',
  5.      value: null,
  6.    }
  7.    },
  8.   store,
  9.   methods:{
  10.    incCount(){
  11.     // 触发 前面定义的 mutation 里面定义的方法,改变 state的数据
  12.      this.$store.commit('incCount');     
  13.    } 
  14.   }
  15. }

3.获取 state 里面的数据

this.$store.state.数据

4. 触发 前面定义的 mutation 里面定义的方法,改变 state的数据

     this.$store.commit('incCount');     
5.getter 的用法


  
  1. /**
  2. * getter 有点类似计算属性,改变state里count数据的时候会触发getters里面的方法获取新的值
  3. */
  4. var getters = {
  5. computedCount:(state) => {
  6. return state.count*2
  7. }
  8. }

在组件里面使用的时候,首先引入并注册,

然后 使用 this.$store.getters.computedCount

6.action 的用法


  
  1. var  actions={
  2.    incMutationsCount(context){  
  3.      context.commit('incCount')
  4.   }
  5. }

在组件里面使用action的时候使用

this.$store.dispatch('incMutationsCount') 

注意: 使用的时候都要暴露


  
  1. const store = new Vuex.Store({
  2. state:state,
  3. mutations:mutations,
  4. getters:getters,
  5. actions:actions
  6. })

7.注意事项:


  
  1. var mutations={
  2. incCount(){
  3. ++state.count;
  4. },
  5. // this.$store.commit('addList',list) 当需要传值的时候,这里定义的方法必须加上state参数
  6. addList(state,data){
  7. state.list = data;
  8. }
  9. }

 

文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31905135/article/details/104537350

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。