美文网首页ins-vue
Vue应用框架整合与实战--框架整合(通用)篇

Vue应用框架整合与实战--框架整合(通用)篇

作者: youins | 来源:发表于2018-08-01 14:40 被阅读0次

    vuex

    --> 官方网站

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

    安装

    cnpm install vuex --save
    

    引用

    在一个模块化的打包系统中,您必须显式地通过 Vue.use() 来安装 Vuex:

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      modules: {
      }
    })
    

    案例

    • 模块化


      image
    • 模块内关键函数


      image

    vue-router

    --> 官方网站

    用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。

    安装

    cnpm install vue-router --save
    

    引用

    如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能:

    import Vue from 'vue'
    import Router from 'vue-router'
    import HelloWorld from '@/components/HelloWorld'
    
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'HelloWorld',
          component: HelloWorld
        }
      ]
    })
    

    案例

    • 路由配置


      image
    • 路由跳转限制


      image
    • 路由监听


      image

    Axios

    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

    - 从浏览器中创建 XMLHttpRequests
    - 从 node.js 创建 http 请求
    - 支持 Promise API
    - 拦截请求和响应
    - 转换请求数据和响应数据
    - 取消请求
    - 自动转换 JSON 数据
    - 客户端支持防御 XSRF
    

    安装

    cnpm install axios --save
    

    引用

    import axios from 'axios'
    
    export default {
      post(url, params) {
        return new Promise((resolve, reject) => {
          axios.post(url, params)
            .then(response => {
              resolve(response);
            }, err => {
              reject(err);
            })
            .catch((error) => {
              reject(error)
            })
        })
      }
    }
    

    案例

    • 基本配置


      image
    • restful api封装


      image
    • 业务接口封装


      image
    • vuex中调用业务接口

    调取步骤: vue组件动作触发网络请求,调用store去分发消息类型以及消息附带数据,store模块中对应actions中的函数接到消息通知,触发网络请求。

    /**
    
     * vuex 订气订单状态模块
    
     * @module order.js
    
     */
    import gas_order_api from '@/api/gas_order_api'
    
    export default{
      state: {
        // 所有商品的列表
        product_list: []
      },
      getters: {
        productList: state => {
          return state.product_list
        }
      },
      mutations: {
        mutaBuildProductList(state, payload){
          state.product_list = [];
    
          payload.forEach((item,index)=>{
            item['amount'] = 0;
            state.product_list.push(item);
          });
        },
        mutaRestProductList(state){
          state.product_list = [];
        }
      },
      actions: {
        actBuildProductList({commit},data) {
          return new Promise((resolve, reject) => {
    
            gas_order_api.getGasProductList(data['address_id']).then(res=>{
    
              if (res.data && res.data.result === 'ok'){
                // 更新天然气规格参数列表
                commit('mutaBuildProductList', res.data.data);
              }
              else {
                commit('mutaRestProductList');
              }
              resolve(res);
            }).catch(error => {
              reject(error);
            })
          })
        }
      }
    }
    

    font-awesome

    --> 官方网站

    Font Awesome 字体为您提供可缩放矢量图标,它可以被定制大小、颜色、阴影以及任何可以用CSS的样式。

    安装

    cnpm install font-awesome --save
    

    引用

    // 导入font-awesome
    import 'font-awesome/css/font-awesome.css'
    
    new Vue({
      el: '#app',
      template: '<App/>',
      components: { App }
    })
    

    案例

    <i class="fa fa-camera-retro fa-lg"></i> fa-lg
    <i class="fa fa-camera-retro fa-2x"></i> fa-2x
    <i class="fa fa-camera-retro fa-3x"></i> fa-3x
    <i class="fa fa-camera-retro fa-4x"></i> fa-4x
    <i class="fa fa-camera-retro fa-5x"></i> fa-5x
    

    mockjs

    --> 官方网站

    简介

    • 前后端分离

    • 不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。

    • 数据类型丰富

    • 通过随机数据,模拟各种场景。

    总结起来就是在后端接口没有开发完成之前,前端可以用已有的接口文档,在真实的请求上拦截ajax,并根据mockjs的mock数据的规则,模拟真实接口返回的数据,并将随机的模拟数据返回参与相应的数据交互处理,这样真正实现了前后台的分离开发。

    与以往的自己模拟的假数据不同,mockjs可以带给我们的是:在后台接口未开发完成之前模拟数据,并返回,完成前台的交互;在后台数据完成之后,你所做的只是去掉mockjs:停止拦截真实的ajax,仅此而已。

    安装

    npm install mockjs --save-dev
    

    应用

    首先在入口js(main.js)里引入mockjs

    require('./mock.js')
    

    然后新建一个mock.js

    // 引入mockjs
     
    const Mock = require('mockjs');
     
    // 获取 mock.Random 对象
     
    const Random = Mock.Random;
     
    // mock一组数据
     
    const produceNewsData = function() {
     
      let articles = [];
     
      for (let i = 0; i < 100; i++) {
     
        let newArticleObject = {
     
          title: Random.csentence(5, 30), // Random.csentence( min, max )
     
          thumbnail_pic_s: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
          
          author_name: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
          date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
        }
        articles.push(newArticleObject)
      }
      return {
        articles: articles
      }
    }
     
    // Mock.mock( url, post/get , 返回的数据);
    
    Mock.mock('/news/index', 'post', produceNewsData); 
    

    相关文章

      网友评论

        本文标题:Vue应用框架整合与实战--框架整合(通用)篇

        本文链接:https://www.haomeiwen.com/subject/cafrvftx.html