vue项目搭建 (一)

时间:2021-09-29 22:52:46

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,坑太多,累

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

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

  1. Vue项目搭建完整剖析全过程

    Vue项目搭建完整剖析全过程 项目源码地址:https://github.com/ballyalex 有帮助的话就加个星星呗~!  项目技术栈:vue+webpack+bower+sass+axios ...

  2. Vue项目搭建与部署

    Vue项目搭建与部署 一,介绍与需求 1.1,介绍 Vue  是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue两大核心思想:组件化和数据驱动.组 ...

  3. vue项目搭建 (二) axios 封装篇

    vue项目搭建 (二) axios 封装篇 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── ap ...

  4. Vue项目搭建流程 以及 目录结构构建

    Vue项目搭建流程 以及 目录结构构建 一个小的Vue项目, 基于微信浏览器的移动端, 做了这么多的练习项目, 这一次准备记录下构建的过程, 以方便以后的调高效率 环境准备 操作系统 我的 windo ...

  5. vue项目搭建介绍01

    目录 vue项目搭建介绍01 vue 项目框架环境搭建: 创建项目: vue 项目创建流程: vue项目搭建介绍01 vue 项目框架环境搭建: vue 项目框架: vue django(类似)(vu ...

  6. vue项目搭建介绍02

    目录 vue项目搭建介绍02 python-pycharm设置: vue创建项目分类: vue-cli构建 自定义构建 基础的vue项目目录: vue项目搭建介绍02 python-pycharm设置 ...

  7. requirejs + vue 项目搭建2

    上篇是年后的项目搭建的,时间比较仓促,感觉有点low 1.gulp-vue 文件对公用js的有依赖,以后别的同事拿去搭其他项目,估计会被喷 2.不支持vue-loader一样写模版语言和es6语法 最 ...

  8. requirejs + vue 项目搭建

    以前都是支持 司徒正美 的,毕竟咱们也是跟着 司徒正美 一起走进了前端的世界.所以一般MVVM都是用avalon的,当然也是考虑到项目需要支持IE6,7,8的考虑.当然在用的时候也有一些小坑和bug, ...

  9. Vue项目搭建

    1.环境搭建 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 安装cnpm npm install -g cnpm --registry=https:// ...

随机推荐

  1. CS0103: The name ‘Scripts’ does not exist in the current context解决方法

    转至:http://blchen.com/cs0103-the-name-scripts-does-not-exist-in-the-current-context-solution/ 更新:这个bu ...

  2. Google Dapper-大规模分布式系统的基础跟踪设施

    [说明:本文是阅读Google论文"Dapper, a Large-Scale Distributed Systems Tracing Infrastructure"之后的一个简要 ...

  3. 【leetcode】Decode Ways(medium)

    A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...

  4. java实现附件预览(openoffice+swftools+flexpaper)

    先附上本人参考的文章,基于的 flexpaper版本 为 1.5,本人由于使用的是 2.1.9 ,故之后说明: 已经支持加载中文文件名 代码下载 1.概述 主要原理 1.通过第三方工具openoffi ...

  5. Ubuntu14.04服务器安装ftp

    随笔记录一下Ubuntu下安装ftp 1.远程连接登录服务器之后,输入sudo apt-get update 并回车.如果不运行该命令,直接安装vsftpd,可能会出现有一些软件包无法下载. 2.输入 ...

  6. iis7 下配置MVC问题

    HTTP 错误 404.0 - Not Found 您要找的资源已被删除.已更名或暂时不可用. 详细错误信息 模块 IIS Web Core 通知 MapRequestHandler 处理程序 Sta ...

  7. jQuery第九章

    第九章 jQuery Mobile 一.HTML5.0简介 谈到Web设计,我们经常把Web分为三个层: (1)结构层:(2)表现层:(3)行为层. 对应的技术分别是: (1)HTML:(2)CSS: ...

  8. engine_init_options.go

    package ) type {         options.PersistentStorageShards = defaultPersistentStorageShards     } }

  9. 调试利器GDB(上)

    什么是GDB: GDB应用: 静态分析工具与动态分析工具: GDB启动方式: GDB启动之后会有一个交互式的命令行,可以输入GDB特定的命令让GDB去工作. gdb test.out意思是这一次gdb ...

  10. js 正则表达式之环视结构

    一.环视 1:环视不“占用”字符,只匹配字符所在的特定位置. 2:正则表达式是从左向右进行匹配的. 二.肯定顺序环视(?=....) 子表达式匹配当前位置的右侧字符 图中:红色表示当前位置,绿色表示正 ...