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模式

  • 相关阅读:
    uva 408 Uniform Generator
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
  • 原文地址:https://www.cnblogs.com/lantuoxie/p/8854830.html
Copyright © 2011-2022 走看看