zoukankan      html  css  js  c++  java
  • Vue构建项目

    构建Vue项目

    按照官网教程安装

    //先安装脚手架
    cnpm i -g vue-cli
    
    //查看项目目标列表: webpack browserify pwa 等项目模板
    vue list
    
    //使用webpack模板创建项目
    vue init webpack my-project
    
    //进去新创建的文件夹
    cd my-project
    
    //打开package.json 看scripts字段
    //dev 可以使用npm run dev 或者 npm start 开启开发模式
    //build 可以使用npm run build 打包项目,生成最终
    //还有其他的命令根据创建项目的时候的选择决定
    
    

    webpack模板默认安装了vuevue-routerpostcssbabel,如果需要其它的可以自己再安装。

    安装sass

    cnpm i --save-dev node-sass sass-loader
    

    安装好后就可以在.vue文件style便签设置 <style scoped lang="scss">就可以开启scss功能

    安装axios

    cnpm i --save axios
    

    main.js文件中引入axios并将其指定为Vue.prototype.$http = axios

    //main.js
    //全局的Vue,所有组件都是这个Vue的实例
    import Vue form 'vue';
    import axios from 'axios';
    
    //由于所有Vue的组件都继承于这个全局的Vue,所有的组件都能够通过$http拿到axios
    //自定义全局属性要带'$'
    Vue.prototype.$http = axios;
    
    

    安装vuex

    cnpm i --save vuex
    

    main.js文件中引入Vuex,使用Vue.use(Vuex)且创建store,然后将store添加到全局 new Vue({store})

    import Vue from 'vue'
    import Vuex from 'vuex'
    import App from './App'
    
    Vue.use(Vuex)
    
    const store = new Vuex.Store({
      state: {
        count: 0
      }  
    })
    
    new Vue({
      el: '#app',
      component: App,
      store,
      template: "</App>"
    })
    

    项目结构

    • /src
      • /assets
      • /components
      • /containers
      • /modules
      • /router
      • /scss
      • App.vue
      • main.js

    /assets

    主要放图片字体等静态文件

    /components

    公用组件,所有页面都可以公用的组件,或者单例组件,像弹出窗按钮、等可以多次复用的组件

    /containers

    页面组件router中的路由组件,相对路由来划分这个文件夹的结构

    比如路由/user/change_psw/login

    • /containers
      • User.vue
      • /user
        • ChangePsw.vue
      • Login.vue
    import User from '@/containers/User';
    import ChangePsw from '@/containers/user/ChangePsw';
    import Login from '@/containers/Login';
    
    const router = [
      {
        // 匹配 /user
        path: '/user',
        component: User,
        children: [
          {
            // 匹配 /user/change_psw
            path: 'change_psw',
            component: ChangePsw
          }
        ]
      }, {
        // 匹配 /login
        path: '/login',
        component: Login
      }
    ]
    

    /modules

    Vuex的状态管理,这里按每个页面划分,当然还可以别的方法,这里只供参考

    • /modules
      • modules.js
      • index.js
      • user.js

    modules.js负责将所有模块收集起来(类似reduce的合成),index.jsuser.js分别管理页面index和页面user的全局状态

    //modules.js
    import index from './index'
    import user from './user'
    
    export default {
      index,
      user
    }
    
    //index.js
    export default {
      namespaced: true,
      state: {
        a: 1
      }
    }
    
    //user.js
    export default {
      namespaced: true,
      state: {
        a: 2
      }
    }
    

    除了这些模块的状态,还有一个全局的状态,如果全局的状态有点大,可以将其独立成一个文件。

    若超大,再开文件夹,再细化。同理,页面状态也可以。

    最后在mian.js装载这些模块

    import modules from '@/modules/modules';
    import Vuex from 'vuex';
    import Vue from 'vue';
    
    const store = new Vuex.Store({
      modules,
      // ...定义全局的状态
    })
    
    new Vue({
      store,
      // ... 其他的配置
    })
    

    /router

    如果项目比较大,可以按模块来划分这个文件夹的结构。小项目,一个文件即可。

    • /router
      • buy-ticket.js
      • index.js

    和别的文件一样,index.js是所有模块路由的总和,buy-ticket.js是买票模块的路由

    由于vue的路由是可以嵌套的,我们完全可以拆分路由,然后再合并。

    //buy-ticket.js
    
    export default [
      {
        //路由配置
      },
      {
        //路由配置
      }
    ]
    
    //index.js 借助数组扩展符 或者 成为嵌套路由children的值
    
    import Vue from 'vue';
    import Router from 'vue-router';
    import buyTicketRouters from '@/router/buy-ticket';
    import Index from '@/containers/Index';
    import Ticket from '@/containers/Ticket';
    
    Vue.use(Router);
    
    export default new Router({
      routes: [
        {
          path: '/',
          components: Index
        },
        ...buyTicketRouters,
        //采用children
        {
          path: '/ticket'
          components: Ticket,
          children: buyTicketRouters
        }
      ]
    })
    

    具体项目,要按项目的功能来拆分,以上只供参考。

    /scss

    这个样式项目结构,一言难尽,可以了解我的scss相关的文章

    Sass项目结构之 7-1模式

  • 相关阅读:
    String.Split()函数
    Java的位运算符具体解释实例——与(&amp;)、非(~)、或(|)、异或(^)
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    Java中Scanner的使用方法
    C++经典面试题
    人脸识别算法初次了解
    ShareSDK的简化压缩和使用样例
    hdu 1316 How Many Fibs? (模拟高精度)
    AABB包围盒、OBB包围盒、包围球的比較
    Windows 7系统安装MySQL5.5.21图解
  • 原文地址:https://www.cnblogs.com/lantuoxie/p/8854830.html
Copyright © 2011-2022 走看看