vue后台前端框架搭建

既然要搭建一个电商系统,那么自然少不了,框架搭建的事情,web开发发展到今天,前后端分离已是不争的事实。我们这个系统暂时就使用大家耳熟能详的VUE来做前端框架吧,至于后端,我们采用SpringMVC、Spring、MyBatis的方式来搞定它吧。

也许你要说后端有点老旧,但是猿人君要告诉你,技术有一个长期的发展过程,现在还有不少的线上系统,使用的就是这个技术,你不了解这些,相信你在日后会遇到很多问题。架构是可以演进的,猿人君故意选择了一个使用广泛,看起来老旧的结构来带你完成领域逻辑的事情。至于之后的演进和调整,会在实战系列完成之后推出,尽请期待。

废话就不多说了,我们一起来思考一个问题,一个系统是怎么搭建起来的?我们是先搭建后台系统还是先搭建前台系统?你可以想一想之前的设计,前台的数据来源是什么?自然是来源于后台系统维护的数据。所以我们还是先搭建后台系统吧。

徒手搭建一个系统,一穷二白的情况下,怎么办呢?从零开始去搞定所有的事情,自然是比较困难的。最简单的办法,自然是找一个可以使用的手脚架,来解决这个问题。嗯,现在开源的东西还是比较流行,这里给你推荐一个大家经常使用的东西——vue-element-admin。

为什么选择这样一个开源的后端框架,给你一个网址,https://panjiachen.gitee.io/vue-element-admin/,不妨去看一下。

猿实战01——vue后台前端框架搭建

vue-element-admin是一个比较流行的开源后台框架,提供了丰富的UI组件,以及较好的文档支持,还支持i8n的国际化解决方案,基本上能够满足我们项目开发的UI需要。框架是基于element-ui进行二次开发的,那么至少在文档上,能够跟上社区的节奏,参考资料也很多,就它了吧。

接下来,我们就开始来讲怎么玩耍的事情了。总的来讲,我们的后台系统是根据vue-element-admin二次开发而来,有一定的基础门槛,在这里,我们也不会太去讲,vue的基础使用,webpack 的基础配置,热更新原理是什么,webpack速度优化等等,有需求的请自行 google,相关文章已经很多了。我们可以看一下项目结构。

猿实战01——vue后台前端框架搭建

API和VIEW

简单的截取下API和VIEW的部分模块,方便你更加直观的理解。

猿实战01——vue后台前端框架搭建
猿实战01——vue后台前端框架搭建

如图可见模块有很多,而且随着业务的迭代开发,我们的模块还会会越来越多。所以这里建议根据业务模块来划分 views,并且将views 和 api 两个模块一一对应,从而方便维护。如下图:

猿实战01——vue后台前端框架搭建
猿实战01——vue后台前端框架搭建

如 basedataManage模块下放的都是基础数据的api,这样不管项目怎么累加,api和views的维护还是清晰的,当然也有一些全区公用的api模块,比如上传组件什么的单独存放就行。
Components

这里的 components 放置的都是全局公用的一些组件,如,分页组件,上传组件,富文本等等一些列组件。一些页面级的组件建议还是放在各自views文件下,方便管理。如图:

猿实战01——vue后台前端框架搭建

Store

用于存放公共访问的数据,但是比如商品发布、品牌管理这种独立的两个模板,就根本没有必要使用 Store来存储data,每个页面里存放自己的 data 就行。当然有些数据还是需要用 vuex 来统一管理的,如登录token,用户信息,还是需要使用Store来存储的。

ESLint

撸代码这种事情,代码规范还是很重要的。有一个良好的代码规范,可以帮你避免很多低级错误,也能保证代码的可读性。个人推荐你使用vscode eslint的方式来搞定。Eslint可以在你保存代码的时候,帮你自动完成一些代码修复工作。

要达到这种效果,有一些准备工作还是需要你来做的,比如先在vscode中安装插件。

猿实战01——vue后台前端框架搭建

安装并配置完成 ESLint 后,我们继续回到 VSCode 进行扩展设置,依次点击 File > Preferences > Settings ,搜索EsLint,找到Edit in settings.json打开,添加如下配置:

{
       // 开启
     "eslint.enable": true,
     // 保存
     "eslint.autoFixOnSave": true,
     "eslint.run": "onType",
     "eslint.options": {
         "extensions": [".js",".vue"]
     },
     "eslint.validate": [
         // 此处保存时,自动修复
         "javascript",
         "javascriptreact",
         { "language": "vue", "autoFix": true },
         "html",
         "vue"
     ],
     "vetur.validation.template": false,
     "vetur.format.defaultFormatter.html": "js-beautify-html",
     "vetur.format.defaultFormatter.js": "vscode-typescript",
     "vetur.format.defaultFormatterOptions": {
             "js-beautify-html": {
                 "wrap_attributes": "auto"
             },
             "prettyhtml": {
                 "printWidth": 100,
                 "singleQuote": false,
                 "wrapAttributes": false,
                 "sortAttributes": false
             }
    },
   "editor.codeActionsOnSave": {
       "source.fixAll.eslint": true
    },
   "eslint.codeAction.showDocumentation": {
       
 
       "enable": true
    }
    }

这样每次保存的时候,就可以达到代码修复的效果。

请求地址配置

打开文件,.env.development在这里我们可以定义统一的后端访问地址。打开文件后VUE_APP_BASE_API,修改为后端接口请求访问地址为:http://localhost:9201 。
猿实战01——vue后台前端框架搭建

这样所有的请求,在使用相对路径的时候,都默认发给后端的9201端口,如果你的后端端口不同,你也可以做一些调整。

请求的统一封装

打开文件:/utils/request.js,我们结合项目业务,使用了拦截器的方式中根据response中返回的状态值进行统一处理。

// response interceptor
service.interceptors.response.use(
  /**
   * If you want to get http information such as headers or status
   * Please return  response => response
  */
 
  /**
   * Determine the request status by custom code
   * Here is just an example
   * You can also judge the status by HTTP Status Code
   */
  response => {
    const res = response.data
 
    if (res.code === 20000 || res.success === true) {
      return res
    }
 
    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 20000 || res.success === false) {
      Message({
        message: res.message || \\'Error\\',
        type: \\'error\\',
        duration: 5 * 1000
      })
 
      // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        // to re-login
        MessageBox.confirm(\\'You have been logged out, you can cancel to stay on this page, or log in again\\', \\'Confirm logout\\', {
          confirmButtonText: \\'Re-Login\\',
          cancelButtonText: \\'Cancel\\',
          type: \\'warning\\'
        }).then(() => {
          store.dispatch(\\'user/resetToken\\').then(() => {
            location.reload()
          })
        })
      }
      return Promise.reject(new Error(res.message || \\'Error\\'))
    } else {
      return res
    }
  },
  error => {
    console.log(\\'err\\'   error) // for debug
    Message({
      message: error.message,
      type: \\'error\\',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

跨域问题

我们决定使用前后端分离的方式来搭建我们的系统,那么自然不可避免的会跨域问题,这个问题我们可以通过后端的cors来解决,在后续的后端框架搭建的文章中会给出具体的解决方案。

路由配置

配置文件,打开/router/index.js,项目的路由跳转配置就在这里了,左侧的页面菜单你能看到的部分,都在这里了。

猿实战01——vue后台前端框架搭建

最后我们一起来看一看效果吧。运行命令(建议采用淘宝镜像),国内的会快上不少。

npm install –registry=https://registry.npm.taobao.org

npm run dev

猿实战01——vue后台前端框架搭建

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/procedure/9539.html

发表评论

登录后才能评论