2. 开发前须知

我的后台管理系统项目运用了如下框架/插件:

  1. Vue 2.x —— 项目所使用的 js 框架,我所使用的版本是:2.1.10
  2. vue-router 2 —— Vue 2.x 配套路由,我所使用的版本是:2.3.0
  3. Element —— UI 框架,饿了么出品,我所使用的版本是:1.2.8
  4. Echarts —— 图表插件,百度出品,我所使用的版本是:3.4.0
  • 在 UI 框架的选择上,除了 ElementiView 也不错,大家可以按需选择。
  • 对于所使用的框架/插件,尽可能先快速过一遍文档,这样可以知道有什么现成的东西可以使用,避免自己做多余的工作。

3. 构建项目框架

准备

对于大陆用户,建议将 npm 的注册表源设置为国内的镜像,如 淘宝 NPM 镜像,可以大幅提升安装速度。

运行如下语句即可使用淘宝镜像:

  1. npm install -g cnpm --registry=https://registry.npm.taobao.org

使用方法为:将 npm 改为 cnpm
示例:npm install => cnpm install

安装

根据 官方指南 执行如下命令行语句:

  1. # 安装 vue
  2. $ cnpm install vue
  3. # 全局安装 vue-cli,该工具提供开箱即用的构建工具配置
  4. $ cnpm install --global vue-cli
  5. # 创建一个基于 webpack 模板的新项目 my-project(项目名称)
  6. $ vue init webpack my-project
  7. # 进入项目目录
  8. $ cd my-project
  9. # 安装依赖
  10. $ cnpm install
  11. # 运行项目(不需要使用到下载功能时,没有必要使用 cnpm)
  12. $ cnpm run dev
  13. # 或者(效果一样)
  14. $ npm run dev

安装 vue-cli webpack 模板

Use ESLint to lint your code? (Y/n) 这一项,如果不打算使用语法检测,可以直接选择 n,如果决定安装但是又暂时不想启用,后文有如何禁用的说明。

这时你的浏览器会自动打开 localhost:8080 页面,说明项目环境搭建成功,我们已经有了一个基于 webpack 模板的项目框架。

模板项目

可能遇到的问题

问题:
运行 npm run dev 后报错:

  1. To use this template, you must update following to modules:
  2. npm: 2.15.1 should be >= 3.0.0

遇到这个问题说明你的 nodejs 版本也不高,因此最好更新 node 版本及 npm 版本。

解决:

  • 升级 node 的话直接重新安装一个新版本,安装包 这里 下载。
  • 升级 npm 的话可以直接运行命令行语句:
    1. cnpm install npm@latest -g

    参考:node 安装及 npm 升级方法

项目结构

# 备注项为 webpack 模板内置。
## 备注项为按照个人喜好新增的文件夹/文件。

  1. .
  2. ├── build/ # webpack config files / webpack 配置文件
  3. └── ...
  4. ├── config/
  5. ├── index.js # main project config / 项目主要配置
  6. └── ...
  7. ├── src/ # 主要的项目开发文件都在这个目录下:
  8. ├── main.js # app entry file / 应用入口文件
  9. ├── App.vue # main app component / App 父组件
  10. ├── components/ # ui components / 可复用的 ui 组件
  11. └── ...
  12. ├── assets/ # module assets (processed by webpack) / 模块资源(经过 webpack 处理,如文件合并,图片压缩等)
  13. └── ...
  14. ├── page/ ## 以页面为单位的 .vue 文件
  15. ├── index.vue ## 一级 router-view,顶部导航栏和左侧侧边导航栏
  16. ├── 404.vue ## 404 页面
  17. ├── menu1/ ## 二级 router-view,导航切换后的页面内容
  18. └── ...
  19. └── menu2/ ## 按照菜单项创建文件夹对文件进行组织管理
  20. └── ...
  21. └── router/
  22. └── index.js # 路由配置文件
  23. ├── static/ # pure static assets (directly copied) / 纯静态资源(直接拷贝使用,不经过 webpack 处理)
  24. ├── .babelrc # babel config
  25. ├── .eslintrc.js # eslint config
  26. ├── .editorconfig # editor config
  27. ├── index.html # index.html template
  28. ├── package.json # build scripts and dependencies
  29. └── ...

参考:webpack 模板项目结构

相关文档

官网安装指南
vue-cli
vuejs-templates: webpack

4. 框架/插件使用

可能遇到的问题

问题:
当你随便写了一点代码然后点击保存后,浏览器中会显示如下报错信息:

Eslint 报错

那是因为项目默认开启了 Eslint 功能,代码编写不规范就会报错。

解决:
可以这样禁用 Eslint:
build/webpack.base.conf.js

  1. module: {
  2. rules: [
  3. // {
  4. // test: /\.(js|vue)$/,
  5. // loader: 'eslint-loader',
  6. // enforce: "pre",
  7. // include: [resolve('src'), resolve('test')],
  8. // options: {
  9. // formatter: require('eslint-friendly-formatter')
  10. // }
  11. // },
  12. {
  13. test: /\.vue$/,
  14. loader: 'vue-loader',
  15. options: vueLoaderConfig
  16. },
  17. ...
  18. ]
  19. },

禁用 Eslint

直接注释掉相关规则就可以了。

Element

npm 安装 Element:

  1. cnpm i element-ui -S

引入 Element:
官方文档:引入 Element
可以完整引入也可以按需引入,为了项目的大小考虑,还是选择按需引入比较好。

按照官方的使用说明做,就能成功将 Element 引入项目,这里就不照搬文档了。

在根据官方指南安装了 babel-plugin-component 并修改了 .babelrc 文件后,针对 按需引入 的方式举个例子:

#1 拷贝需要使用的组件代码

  1. <el-dropdown>
  2. <span class="el-dropdown-link">
  3. 下拉菜单<i class="el-icon-caret-bottom el-icon--right"></i>
  4. </span>
  5. <el-dropdown-menu slot="dropdown">
  6. <el-dropdown-item>黄金糕</el-dropdown-item>
  7. <el-dropdown-item>狮子头</el-dropdown-item>
  8. <el-dropdown-item>螺蛳粉</el-dropdown-item>
  9. <el-dropdown-item disabled>双皮奶</el-dropdown-item>
  10. <el-dropdown-item divided>蚵仔煎</el-dropdown-item>
  11. </el-dropdown-menu>
  12. </el-dropdown>

从上面的代码段中可以看出,我们需要引入三个组件:el-dropdownel-dropdown-menuel-dropdown-item

#2 引入组件
在 main.js 中写入以下内容:

  1. // 引入组件
  2. import { Dropdown, DropdownMenu, DropdownItem } from 'element-ui' // 使用驼峰方式书写组件名即可
  3. // 使用组件
  4. Vue.use(Dropdown)
  5. Vue.use(DropdownMenu)
  6. Vue.use(DropdownItem)

按需引入 Element 组件

完整组件列表以 components.json 为准,也可以查看 项目地址\node_modules\element-ui\lib 目录下的文件(文件名即组件名)。

Echarts

参考文档:在 webpack 中使用 ECharts
npm 安装 ECharts:

  1. cnpm install echarts --save

引入 ECharts:
全部引入:

  1. var echarts = require('echarts'); // 默认使用 require('echarts') 得到的是已经加载了所有图表和组件的 ECharts 包,因此体积会比较大
  2. // 基于准备好的dom,初始化echarts实例
  3. var myChart = echarts.init(document.getElementById('main'));
  4. // 绘制图表
  5. myChart.setOption({
  6. ...
  7. });

按需引入:
echarts-line.vue(基于 echarts 的折线图组件示例)

  1. <template>
  2. <!--需要唯一的 id 来初始化图表-->
  3. <div class="echarts-line" :id="id">
  4. </div>
  5. </template>
  6. <script>
  7. // 引入 ECharts 主模块
  8. var echarts = require('echarts/lib/echarts');
  9. // 引入折线图
  10. require('echarts/lib/chart/line');
  11. // 引入提示框和标题组件
  12. require('echarts/lib/component/tooltip');
  13. require('echarts/lib/component/title');
  14. export default {
  15. name: 'echarts-line',
  16. props: {
  17. id: String
  18. },
  19. mounted(){
  20. this.drawLine(this.id);
  21. },
  22. methods: {
  23. drawLine(id){
  24. // 基于准备好的dom,初始化echarts实例
  25. var myChart = echarts.init(document.getElementById(id));
  26. // 绘制图表
  27. myChart.setOption({
  28. title: { text: 'ECharts 入门示例' },
  29. tooltip: {},
  30. xAxis: {
  31. data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  32. },
  33. yAxis: {},
  34. series: [{
  35. name: '销量',
  36. type: 'bar',
  37. data: [5, 20, 36, 10, 10, 20]
  38. }]
  39. });
  40. }
  41. }
  42. }
  43. </script>
  44. <!-- Add "scoped" attribute to limit CSS to this component only -->
  45. <style>
  46. .echarts-line {
  47. width: 100%;
  48. height: 320px;
  49. }
  50. </style>

可以按需引入的模块列表见 github.com/ecomfe/echa…

jQuery

有些人可能还无法离开 jQuery 的使用(例如我,不过建议是如果使用了 vue 进行开发,就没有必要使用 jQuery 了),并且也已经习惯了使用 Ajax(目前官方推荐的异步请求库为 Axios,vue-resource 已经停止更新维护)。

要想全局使用 jQuery 的话,可以这样做:
#1 下载 jquery 文件
将 jquery 文件放于 static 目录下,如:static/js/jquery-3.0.0.min.js

#2 webpack 配置文件
build/webpack.base.conf.js

  1. ...
  2. var webpack = require("webpack") // 1. 确保引入 webpack,后面会用到
  3. module.exports = {
  4. ...
  5. resolve: {
  6. extensions: ['.js', '.vue', '.json'],
  7. modules: [
  8. resolve('src'),
  9. resolve('node_modules')
  10. ],
  11. alias: {
  12. 'vue$': 'vue/dist/vue.common.js',
  13. 'src': resolve('src'),
  14. 'assets': resolve('src/assets'),
  15. 'components': resolve('src/components'),
  16. "jquery": path.resolve(__dirname, '../static/js/jquery-3.0.0.min.js') // 2. 定义别名和插件位置
  17. }
  18. },
  19. plugins: [
  20. // 3. 配置全局使用 jquery
  21. new webpack.ProvidePlugin({
  22. $: "jquery",
  23. jQuery: "jquery",
  24. jquery: "jquery",
  25. "window.jQuery": "jquery"
  26. })
  27. ]
  28. }

引入 webpack

配置 jquery

相关文档/文章:

ESLint
Element
ECharts
jquery 配置参考
Vue框架引入JS库的正确姿势

原文链接:https://juejin.im/post/58f3799ca22b9d006cfa8d81

 

[转载]Vue 2.x 实战之后台管理系统开发(一)的更多相关文章

  1. 【转载】Vue 2.x 实战之后台管理系统开发(二)

    2. 常见需求 01. 父子组件通信 a. 父 -> 子(父组件传递数据给子组件) 使用 props,具体查看文档 - 使用 Prop 传递数据(cn.vuejs.org/v2/guide/co ...

  2. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建

    上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...

  3. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立

    上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里 ...

  4. vue-manage-system 后台管理系统开发总结

    前言 vue-manage-system,一个基于 Vue.js 和 element-ui 的后台管理系统模板,从2016年年底第一个commit,到现在差不多两年了,GitHub上也有了 5k st ...

  5. 简易版CMS后台管理系统开发流程

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  6. 如何使用Vue.js来搭建一个后台管理系统

    目录 使用的技术 基础但不好版 1.初始化项目 2.实现初始页内容自定义 3.使用路由 原始代码 自建页面 修改路由 4.测试路由跳转 补充 子路由版 嵌套router-view 定义子路由 修改菜单 ...

  7. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发

    进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...

  8. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作

    /****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...

  9. 【共享单车】—— React后台管理系统开发手记:主页面架构设计

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

随机推荐

  1. Android 中 LayoutParams 的用法

    一个控件应当使用它的父控件的 LayoutParams 类型.因此,一个 TableVow 应该使用 TableLayout.Params . 所以,以一个 TableRow 为例: TableRow ...

  2. windows挂载网络盘

    @echo offset filename=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%set filename="DataBak-%filename%"ne ...

  3. Linux mint 安装踩坑记录

    记得之前电脑上的那个Ubuntu是去年寒假的时候安装的,算下来自己用Linux也快一年了.虽然在去年暑假的时候我也曾经想过要把Ubuntu升级到18.04可是当时安装了几次都没有成功,自己也就放弃了. ...

  4. 关于CocoaPods添加第三方库造成项目崩溃

    在很多时候,我们接手了别人的代码,项目中已经使用cocoapods,但是再想通过pods添加第三方库时会造成崩溃,如果你没备份项目的话那你就悲催了,幸好当初用了git了,不然又够忙乎的了. 好,回到正 ...

  5. 洛谷P2664 树上游戏(点分治)

    传送门 题解 因为一个sb错误调了一个晚上……鬼晓得我为什么$solve(rt)$会写成$solve(v)$啊!!!一个$O(logn)$被我硬生生写成$O(n)$了竟然还能过$5$个点……话说还一直 ...

  6. python 将列表嵌套字典的unicode字符串转换为str格式的字符串的方法

    今天在进行django开发的过程中遇到了一个非常棘手的问题, 因为需求原因, 需要将一份数据存为json格式到数据库中, 如下面这种格式: list_1 = [{"name":&q ...

  7. 面向对象之ajax

    1.Ajax发送请求的几个步骤 1. 创建 XMLHttpRequest 对象 var xhr = new XMLHttpRequest();//IE6 使用var xhr= new ActiveXO ...

  8. 知名协作工具 Slack 换新 logo 啦!

    简评:本文系译文.Slack 在自家 Blog 上解释了新的设计 -- 旧版的 logo 有 11 种颜色,在非白色背景的情况下,logo 不仅难看,而且很容易在多个地方上表现不一致. 新年换新装,S ...

  9. NSObject 中执行Selector 的相关方法

    1. 对当前Run Loop中Selector Sources的取消 NSObject中的performSelector:withObject:afterDelay:方法将会在当前线程的Run Loo ...

  10. [原创]SSH 隧道转发

    目录 简介 本地SSH隧道 远程SSH隧道 FAQ 免密码登陆 自动重连 简介 建立ssh隧道常用于, 通过一台公网的主机或者是大家都可以访问的主机做跳转机,来访问内部或者外部不能直接访问的机器. 项 ...