vue项目搭建 (一)

vue项目搭建 (一)

由于一直想要有自己的框架,因而一直在尝试搭建各类结构,结合vue官网及git上大神bailicangdu的项目,再看看网上一些意见,及个人思考,总结的一些,不到之处希望大家可以帮我指证,必定虚心接受

技术栈: vue2+vue-router+vuex+axios+webpack+es6/7

项目布局

vue-cli构建初始项目后,在src中进行增删修改

// 此处是模仿github上  bailicangdu  的
├── src
|   ├── apsi
|   |   ├── api.js                              // 接口详情配置
│   ├── components                              // 组件
|   |   ├── common                              // 公共组件
│   ├── config                                  // 基本配置
│   │   ├── fetch.js                            // 获取数据
│   ├── images                                  // 公共图片
│   ├── plugins                                 // 引用的插件
│   ├── router
│   │   └── router.js                           // 路由配置
│   ├── service                                 // 数据交互统一调配
│   │   ├── getData.js                          // 获取数据的统一调配文件,对接口进行统一管理
│   ├── store                                   // vuex的状态管理
│   │   ├── action.js                           // 配置actions
│   │   ├── getters.js                          // 配置getters
│   │   ├── index.js                            // 引用vuex,创建store
│   │   ├── mutation-types.js                   // 定义常量muations名
│   │   └── mutations.js                        // 配置mutations
│   └── style
│       ├── common.css                          // 公共样式文件
│   ├── App.vue                                 // 页面入口文件
│   ├── main.js                                 // 程序入口文件,加载各种公共组件
├── favicon.ico                                 // 图标
├── index.html                                  // 入口html文件

对上述结构进行详细分析

  • apis
  • api.js
    // 这里写所有的接口,便于后期修改管理,若是变动,只需修改当前即可,而不是牵一发动全身
    // 切换域名
    let baseUrl = null
    if (process.env.NODE_ENV === ‘development‘) { //开发环境
        baseUrl = ‘http://ip:端口号‘
    } else if (process.env.NODE_ENV === ‘production‘) { //生产环境
        baseUrl = ‘http://‘+ window.location.host
    }
       //这样后期知道请求方式,都可以好修改,一目了然
    const apis = {
        getImgs: {
            url: ‘/imgs‘,
            method: ‘get‘,
        },
        getUser: {
            url: ‘/user‘,
            method: ‘post‘,
        },
        ...
    }
    export {
        baseUrl,
        apis,
    }
  • components
  • common 用来存放公共组件,便于使用
  • config
  • fetch.js 在下一次中重点分析
  • store
  • getters.js
      export default {}
  • action.js 正常来说,请求数据 (ajax)写在这里,但当请求相当多时,数据相当不好处理,比正常请求麻烦多了,因而变为 单独建立一个 service文件,用来进行数据请求
      import { setUserInfo } from ‘./mutation-types‘
      import { getUser } from ‘./../service/getData‘
      export default {
      getUserInfo({commit}) {
        const res = await getUser()
        commit(setUserInfo, res)
      },
      }
  • mutations.js
      import { getUser } from ‘./mutation-types‘
      export default {
      [getUser](state, data) {
          state.user = data
      }
      }  
  • mutation-types.js
      export const getUser = ‘getUser‘
  • index.js
      import Vue from ‘vue‘
      import Vuex from ‘vuex‘
      import mutations from ‘./mutations‘
      import actions from ‘./action‘
      import getters from ‘./getters‘
      Vue.use(Vuex)
      const state = {
      user: ‘‘, //用户信息
      }
      export default new Vuex.Store({
      state,
      getters,
      actions,
      mutations,
      })
  • router
  • router.js
  import Vue from ‘vue‘
  import Router from ‘vue-router‘
  Vue.use(Router)
  // 路由懒加载
  const Component1 = () => import(‘./../components/component1‘)
  const Error = () => import(‘./../components/error‘)
  const router = new Router({
      // 使用元信息进行匹配
      routes: [
          {path: ‘/‘, name: ‘Component1‘, meta: { flag: ‘in‘}, component: Component1},
          {path: ‘/error‘, name: ‘Error‘, meta: { flag: ‘in‘}, component: Error},
          {path: ‘*‘,  redirect: {path: ‘/error‘}}
      ]
  })
  // 鉴权
  import store from ‘./../vuex/index‘
  router.forEach((to, from, next) => {
      const menuList = store.state.user.menuList //用户菜单
      const isLogin  = store.state.isLogin // 是否登录
      // 判断是否有资格进入
      let isEnter = false
      if (menuList.includes(to.meta.flag)) {
          flag = true
      } else {
          flag = false
      }

      if (isEnter && isLogin) {
          next()
      } else {
          if (to.path === ‘/error‘) {
              next()
          } else {
              next(‘/error‘)
          }
      }
  })

我这个只是很浅的,若是深究,每个又可以无限下去,折腾不起,越深,坑越多,难爬,只好先把基础打扎实些了

  • 总结
  • 下一个专门写网络请求,感觉有很多坑,网上封装的都有些局限,希望我能抛砖引玉,有个更优雅的解决办法
  • 路由这个我只是浅显的点一下,里面还有一些我都不知道的,没用到
  • vuex 希望可以看到 module具体如何使用就好了,特别是这个action,坑太多,累

还希望各位看官多多指正,谢谢了

原文地址:https://www.cnblogs.com/sinosaurus/p/9134693.html

时间: 2024-10-31 21:18:53

vue项目搭建 (一)的相关文章

vue项目搭建

VUE项目搭建 # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project # 安装依赖,走你 $ cd my-project $ npm install $ npm run dev

requirejs + vue 项目搭建

以前都是支持 司徒正美 的,毕竟咱们也是跟着 司徒正美 一起走进了前端的世界.所以一般MVVM都是用avalon的,当然也是考虑到项目需要支持IE6,7,8的考虑.当然在用的时候也有一些小坑和bug,都处理了.今年正美正好升级avalon2.0,加入虚拟dom的时候,不稳定了,就考试寻找其他的mvvm框架. 看了比较流行的一些框架,最后选择了vue.选择他的原因是 文档比较全,而且还有中文的(你懂的),生态圈比较好,有vux, vue-loader, vue-router ,组件化设计的也很好.

vue项目搭建+路由使用

vue脚手架搭建步骤: 1. 全局安装 vue-cli2. npm install --global vue-cli3. 创建一个基于 webpack 模板的新项目4. vue init webpack // 当前目录5. vue init webpack my-project // 新建目录6. 安装依赖,走你7. cd my-project8. npm install9. npm run dev 路由使用: 重要文件(package.json.main.js.router\index.js.

Vue框架(三)——Vue项目搭建和案例

Vue项目环境搭建 1) 安装node,在官网下载好,然后在本地安装 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 2) 换源安装cnpm >: npm install -g cnpm --registry=https://registry.npm.taobao.org 3) 安装vue项目脚手架 >: cnpm install -g @vue/cli 注:2或3终端安装失败时,可以清空 npm缓存 再重复执行失败的步骤 npm cache clean --f

vue项目搭建和开发流程 vue项目配置ElementUI、jQuery和Bootstrap环境

目录 一.VUE项目的搭建 1. 环境搭建 2. 项目的创建和启动 二. 开发项目 1. 配置vue项目启动功能 2. 开发vue项目 (1)项目文件的作用 (2)vue项目开发流程 (3)vue项目的请求生命周期 三.vue项目中的功能 1. 路由相关的标签和方法 2. 路由配置 (1)无路由传参的路由配置方法 (2)路由传参的路由配置方法 3. 页面的跳转功能 (1)标签跳转 (2)逻辑跳转(路由跳转) 四.JS原型 五.vue组件生命周期钩子 六.vue的ajax插件:axios 七.vu

vue 项目搭建

cli 方式安装      集成了内置webpack 模块 安装步骤   1.全局安装 vue-cli $ npm install --global vue-cli 2. 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project 3.安装依赖,走你 $ cd my-project $ npm install $ npm run dev 如果npm安装慢的话 可以使用淘宝镜像 npm install -g cnpm --registry=https:/

vue项目搭建笔记

安装nodejs后, 首先安装淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org 淘宝镜像安装成功后,安装vue脚手架:cnpm install vue-cli -g 参考地址:https://www.cnblogs.com/dreling/p/6892684.html vue项目demo:https://segmentfault.com/p/1210000008583242/read?from=timeline

express + vue 项目搭建

最近建了一个node服务端加vue前端的项目 安装node :npm install node 安装express :npm install express -g (-g全局安装) 构建express项目 :express project-name 接着正常构建vue脚手架 安装vue-cli:npm install vue-cli -g 构建一个vue项目:vue init webpack project-name 然后进入项目 打包npm run build 再回到express项目 安装 

vue项目搭建和运行

在师兄的推荐下入坑vue.js ,发现不知如何运行GitHub上的开源项目,很尴尬.通过查阅网上教程,成功搭建好项目环境,同时对前段工程化有了朦朦胧胧的认知,因此将环境搭建过程分享给大家. 首先,列出来我们需要的东西: node.js环境(npm包管理器) vue-cli 脚手架构建工具 cnpm  npm的淘宝镜像 安装node.js 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了(傻瓜式安装). 安装完成之后,打开命令行工具,输入 node -v,如