项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server

项目线上预览:http://stuer.ericwu.cn

前言

因为要开发本科毕设,做一个校友交流平台,正好想记录下整个开发过程,同时也分享给各位。当然那些需求调研的,前期设计的就省略啦。

项目大概是一个全栈的项目,使用的IDE是vscode(期间涉及一些插件、配置推荐),大概的项目技术栈:

  1. vue + vue-router + vuex + vue-i18n + element-ui + egg + sequelize

前端就用vue-cli3来搭建,后端就用egg-init来搭建,比较简单,官方文档也比较详细。

项目技术栈

前端:

后端:

其他:

搭建前端

在这里使用官方推荐的脚手架:vue-cli3,可以对照着官网教程看我的文章

1.全局安装vue-cli3

  1. npm install -g @vue/cli-service-global

2.创建项目

  1. vue create stuer

注意:vue-cli3命令要用到你系统的默认命令行,不然选择的配置会不正确。比如我windows系统使用cmd命令行才行,使用git bash命令行就出问题。当然官方也提示了:

通过方向键移动到我们想要的配置那一行enter选择就行,最下面一行是手动配置选项。

这里因为我之前已经手动配置一套配置了:Vue + Vuex + VueRouter + Eslint + Prettier + Babel,所以这次可以直接选择这套配置。
当然手动选择的话,也就同样选择这些配置就好

当完成后,你的整个目录大概是这样子:


值得一提的是,vue-cli3官方还提供了vue-ui,可以让你以图形界面的方式管理、创建、配置、监控你的项目,非常Nice。(建议使用图形界面方便点)

项目搭建好后可以运行下看是否搭建成功

  1. npm run serve

3.配置Eslint和Prettier

Eslint一款代码规范工具,搭配prettier可以发挥eslint的威力,可以极大的规范我们的代码,同时提升我们的开发效率 。

先给vscode安装eslint的和prettier的插件,我安装了下列这些,可以看到里面有eslint和prettier了。

然后配置vscode中的配置文件 setting.json,这里我给下我的配置。

里面设置了eslint和prettier的选项,不过这些规则主要是作为基础规则。

设置完这个后,当我们保存代码时就会自动格式化,并且还会按照.eslintrc.js和.prettierrc的具体配置文件来格式化代码。

  1. // .setting.json
  2. {
  3. "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
  4. "workbench.iconTheme": "vscode-icons",
  5. "workbench.colorTheme": "Monokai",
  6. "editor.fontSize": 16,
  7. "editor.wordWrap": "on",
  8. "update.channel": "none",
  9. "eslint.validate": ["javascript", "javascriptreact", "html", "vue"],
  10. "prettier.eslintIntegration": true,
  11. "prettier.singleQuote": true,
  12. "prettier.printWidth": 120,
  13. "prettier.endOfLine": "lf",
  14. "eslint.autoFixOnSave": true,
  15. "editor.formatOnSave": true,
  16. "editor.renderControlCharacters": true,
  17. "vetur.format.defaultFormatterOptions": {
  18. "js-beautify-html": {
  19. // force-aligned | force-expand-multiline
  20. "wrap_attributes": "force-aligned"
  21. },
  22. "prettyhtml": {
  23. "printWidth": 100,
  24. "singleQuote": false,
  25. "wrapAttributes": false,
  26. "sortAttributes": false
  27. },
  28. "prettier": {
  29. "singleQuote": true,
  30. "trailingComma": "all"
  31. }
  32. },
  33. "git.enableSmartCommit": true,
  34. "cSpell.enabledLanguageIds": [
  35. "c",
  36. "cpp",
  37. "csharp",
  38. "go",
  39. "javascript",
  40. "javascriptreact",
  41. "json",
  42. "latex",
  43. "markdown",
  44. "php",
  45. "plaintext",
  46. "python",
  47. "text",
  48. "typescript",
  49. "typescriptreact",
  50. "yml"
  51. ],
  52. "window.zoomLevel": 0,
  53. "gitlens.keymap": "alternate",
  54. "gitlens.advanced.messages": {
  55. "suppressShowKeyBindingsNotice": true
  56. },
  57. "search.location": "sidebar",
  58. "workbench.activityBar.visible": true,
  59. "files.autoSave": "off",
  60. "files.eol": "\n",
  61. "editor.tabSize": 2,
  62. "vsicons.dontShowNewVersionMessage": true
  63. }

配置项目的.eslintrc.js,大家可以去npm上搜eslint-config-前缀开头的,看看别人的配置文件怎么配置的

这里我给出一份我自己弄的 .eslintrc.js  配置文件

  1. module.exports = {
  2. root: true,
  3. env: {
  4. node: true
  5. },
  6. extends: ['plugin:vue/essential', '@vue/prettier'],
  7. parserOptions: {
  8. parser: 'babel-eslint' // 为了新语法eslint不报错
  9. },
  10. rules: {
  11. 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  12. 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  13. indent: ['error', 2], // 缩进控制 2空格
  14. 'no-mixed-spaces-and-tabs': 'error', // 禁止使用 空格 和 tab 混合缩进
  15. 'no-regex-spaces': 'error', // 禁止正则表达式字面量中出现多个空格
  16. 'no-multi-spaces': 'error', // 禁止出现多个空格而且不是用来作缩进的
  17. 'block-spacing': ['error', 'never'], // 单行代码块中紧贴括号部分不允许包含空格。
  18. 'comma-spacing': ['error', { before: false, after: true }], //在变量声明、数组字面量、对象字面量、函数参数 和 序列中禁止在逗号前使用空格,要求在逗号后使用一个或多个空格
  19. 'semi-spacing': ['error', { before: false, after: true }], //禁止分号周围的空格
  20. 'computed-property-spacing': ['error', 'never'], // 禁止括号和其内部值之间的空格
  21. 'no-trailing-spaces': 'error', // 禁用行尾空格
  22. 'no-spaced-func': 'error', // 禁止 function 标识符和圆括号之间有空格
  23. 'space-before-function-paren': 'off', // 禁止 函数圆括号之前有一个空格
  24. 'space-before-blocks': ['error', 'always'], // 禁止语句块之前的空格
  25. 'space-in-parens': ['error', 'never'], // 禁止圆括号内的空格
  26. 'space-infix-ops': ['error', { int32Hint: false }], // 要求中缀操作符周围有空格,设置 int32Hint 选项为 true (默认 false) 允许 a|0 不带空格。
  27. 'space-unary-ops': 'error', // 要求或禁止在一元操作符之前或之后存在空格,new、delete、typeof、void、yield要求有空格,-、+、--、++、!、!!要求无空格。
  28. 'spaced-comment': ['error', 'always'], // 要求在注释前有空白
  29. 'arrow-spacing': 'error', // 要求箭头函数的箭头之前和之后有空格
  30. 'generator-star-spacing': ['error', { before: false, after: true }], // 强制 generator 函数中 * 号前有空格,后无空格。
  31. 'yield-star-spacing': ['error', { before: true, after: false }], // 强制 yield* 表达式中 * 号前有空格,后无空格。
  32. 'no-irregular-whitespace': 'error', // 禁止不规则的空白。
  33. 'template-curly-spacing': ['error', 'never'], // 强制模板字符串中花括号内不能出现空格
  34. 'max-len': ['error', 120], // 每行字符不能超过120个
  35. 'no-multiple-empty-lines': 'error', // 不允许多个空行
  36. 'no-var': 'error', //用let/const代替var
  37. 'no-const-assign': 'error', //不允许改变用const声明的变量
  38. 'prefer-const': 'error', //如果一个变量不会被重新赋值,最好使用const进行声明。
  39. 'no-use-before-define': 'error', //禁止定义前使用
  40. 'no-cond-assign': 'error', // 禁止在条件语句中出现赋值操作符
  41. 'no-constant-condition': 'error', // 禁止在条件中使用常量表达式
  42. 'no-duplicate-case': 'error', // 禁止在 switch 语句中的 case 子句中出现重复的测试表达式
  43. 'default-case': 'error', // 要求 Switch 语句中有 Default 分支
  44. eqeqeq: 'error', // 使用 === 和 !== 代替 == 和 !=
  45. 'no-else-return': 'error', // 如果 if 块中包含了一个 return 语句,else 块就成了多余的了。可以将其内容移至块外。
  46. 'no-fallthrough': 'error', // 禁止 case 语句落空
  47. 'no-unneeded-ternary': 'error', //禁止可以在有更简单的可替代的表达式时使用三元操作符
  48. camelcase: ['error', { properties: 'never' }], // 要求使用骆驼拼写法,
  49. radix: 'error', // 在parseInt()中始终使用基数以消除意想不到的后果。
  50. quotes: ['error', 'single'], // 字符串开头和结束使用单引号
  51. 'prefer-template': 'error', // 使用模板而非字符串连接
  52. 'no-path-concat': 'error', // 当使用 _dirname 和 _filename 时不允许字符串拼接
  53. 'no-useless-concat': 'error', // 禁止没有必要的字符拼接
  54. 'comma-dangle': ['error', 'never'], // 多行对象字面量中要求拖尾逗号
  55. 'no-dupe-keys': 'error', // 禁止在对象字面量中出现重复的键
  56. 'no-prototype-builtins': 'error', // 禁止直接使用 Object.prototypes 的内置属性
  57. 'no-extend-native': 'error', // 禁止扩展原生对象
  58. 'no-new-object': 'error', // 禁止使用 Object 构造函数
  59. 'object-shorthand': ['error', 'always'], //要求对象字面量简写语法
  60. 'no-sparse-arrays': 'error', // 禁用稀疏数组
  61. 'no-array-constructor': 'error', // 禁止使用 Array 构造函数
  62. 'no-dupe-args': 'error', // 禁止在 function 定义中出现重复的参数
  63. 'no-new-func': 'error', // 禁用Function构造函数
  64. 'no-return-assign': 'error', // 禁止在返回语句中赋值
  65. 'new-cap': 'error', // 要求构造函数首字母大写
  66. strict: 'error', // 使用强制模式开关use strict;
  67. 'no-empty': ['error', { allowEmptyCatch: true }], // 禁止空块语句,但允许出现空的 catch 子句
  68. 'no-extra-boolean-cast': 'error', // 禁止不必要的布尔类型转换
  69. 'no-extra-parens': 'error', // 禁止冗余的括号
  70. 'no-extra-semi': 'error', // 禁用不必要的分号
  71. semi: [2, 'always'], // 语句强制分号结尾
  72. 'no-eval': 'error', // 禁用 eval()
  73. 'no-with': 'error', // 禁用 with 语句
  74. 'no-unexpected-multiline': 'error', // 禁止使用令人困惑的多行表达式。
  75. 'no-unreachable': 'error', // 禁止在 return、throw、continue 和 break 语句后出现不可达代码
  76. 'no-unsafe-finally': 'error', // 禁止在 finally 语句块中出现控制流语句
  77. 'valid-typeof': 'error', //强制 typeof 表达式与有效的字符串进行比较
  78. 'no-case-declarations': 'error', // 禁止在 case 或 default 子句中出现词法声明
  79. 'no-new-wrappers': 'error', // 禁止通过 new 操作符使用 String、Number 和 Boolean
  80. 'no-useless-escape': 'error', // 禁用不必要的转义
  81. 'handle-callback-err': 'error', // 强制回调错误处理
  82. 'global-require': 'off',
  83. 'import/no-dynamic-require': 'off',
  84. 'no-alert': 'off',
  85. 'no-shadow': 'off',
  86. 'no-param-reassign': 'off',
  87. 'no-plusplus': 'off',
  88. 'consistent-return': 'off',
  89. 'no-use-before-define': 'off',
  90. 'no-fallthrough': 'off',
  91. 'no-multi-assign': 'off',
  92. 'one-var': 'off',
  93. 'func-names': 'off',
  94. 'no-unused-expressions': 'off',
  95. 'no-unused-vars': 'off',
  96. 'no-underscore-dangle': 'off',
  97. 'arrow-body-style': 'off',
  98. 'arrow-parens': 'off',
  99. 'no-mixed-operators': 'off',
  100. 'prefer-template': 'warn'
  101. }
  102. };

.prettierrc 文件

  1. {
  2. "tabWidth": 2,
  3. "useTabs": false,
  4. "semi": true,
  5. "singleQuote": true,
  6. "trailingCooma": "none",
  7. "bracketSpacing": true,
  8. "arrowParens": "always",
  9. "endOfLine": "lf"
  10. }

OK,前端项目初始化搭建完成。

4.使用git做版本管理

在github上创建代码仓库,然后把项目代码的初始版本上传上去。

具体略。

搭建后端项目

1.按照官网文档照做就行

  1. npm i egg-init -g
  2. egg-init stuer-server--type=simple
  3. cd stuer-server
  4. npm i

创建好后如下:

2.安装mysql数据库

这个我使用的版本是5.6.42

同时建议装个破解版的navicat,一个mysql的可视化管理界面

3.使用git做版本管理

在github上创建代码仓库,然后把项目代码的初始版本上传上去。

好了,项目初始化搭建就完成了,改天再更。

Vue/Egg大型项目开发(一)搭建项目的更多相关文章

  1. Hadoop项目开发环境搭建(Eclipse\MyEclipse + Maven)

    写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...

  2. Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

    写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...

  3. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  4. iOS项目——项目开发环境搭建

    在开发项目之前,我们需要做一些准备工作,了解iOS扩展--Objective-C开发编程规范是进行开发的必备基础,学习iOS学习--Xcode9上传项目到GitHub是我们进行版本控制和代码管理的选择 ...

  5. vue(一)使用vue-cli搭建项目

    一.安装node.js 去官网下载安装node.js:    https://nodejs.org/en/ 安装完成后,可以在命令行工具(Windows是cmd,苹果是终端控制)输入node -v 和 ...

  6. react实战项目开发(1) 搭建react开发环境初始化项目(Create-react-app)

    前言 Create React App npm install -g create-react-app create-react-app my-app cd my-app npm start 执行命令 ...

  7. Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven)

    写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文. ...

  8. vue.js多页面开发环境搭建

    利用 vue-cli 搭建的项目大都是单页面应用项目,对于简单的项目,单页面就能满足要求.但对于有多个子项目的应用,如果创建多个单页面,显示有点重复,特别是 node_modules 会有多份相同的. ...

  9. Python基础之模块:7、项目开发流程和项目需求分析及软件开发目录

    一.项目开发流程 1.项目需求分析 明确项目具体功能: 明确到底要写什么东西,实现什么功能,在这个阶段的具体要询问项目经理和客户的需求 参与人员: 产品经理.架构师.开发经理 技术人员主要职责: 引导 ...

  10. 使用.NET MVC框架项目开发流程(项目开发流程)

    MVC项目开发流程 整理需求,进行需求分析.项目设计. 整理数据项,建数据库做前期准备,并整理字典. 建立所需数据库表和视图和模型. 页面实现其初步功能(跳过逻辑后台代码),只是实现页面之间的跳转以及 ...

随机推荐

  1. jmeter 入门学习-通过代理录制测试脚本

    通过jmeter代理录制脚本后,会产生大量的无用的请求,尽管在代理中已经过滤了一部分图片或者CSS.JS文件. 手动查看主要的请求:这里主要关注登陆请求,要确定有效的URL请求 删除除/Login.a ...

  2. fiddler修改Requests之前的数据和response 之后的数据

    1. 开启抓包 file--->capture traffic 2. 在页面底部黑框输入bpu http://www.runoob.com/?s=mysql 3. 在浏览器URL输入http:/ ...

  3. 如何组织AxTOCControl里面的数据

    如何组织AxTOCControl里面的数据,实际上是组织AXMapControl的数据,将添加的数据进行整理.代码在最后面. 思路参考自: https://blog.csdn.net/u0124887 ...

  4. zrange 复杂度 O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数

    redis 的 zrange 效率 - 简书 https://www.jianshu.com/p/40a66ff92768 ZRANGE key start stop [WITHSCORES] — R ...

  5. VMware+CentOS7学习记录

    CentOS命令记录 1.su root 进入最高权限 2.cd  /位置       即进入该文件 3.中文与英文之间的切换:win+空格 添加中文的步骤:https://blog.csdn.net ...

  6. mysql8.0.13免安装版配置

    一.下载 下载地址:https://dev.mysql.com/downloads/mysql/ 二.解压到某个目录,例如:D:/mysql/mysql-8.0.13-winx64 三.配置环境变量 ...

  7. jedis & common pool

    http://mvnrepository.com/artifact/redis.clients/jedis http://mvnrepository.com/artifact/org.apache.c ...

  8. Python文件常用操作方法

    Python文件常用操作方法 一.对File对象常用操作方法: file= open(file, mode='r', buffering=-1, encoding=None, errors=None, ...

  9. #学号 20175201张驰 《Java程序设计》第2周学习总结

    教材学习内容总结: 一.第二章: 1:标识符与关键字 2:基本数据类型:四种整数类型(byte.short.int.long).两种浮点数类型(float.double).一种字符类型(char).一 ...

  10. 使用genism训练词向量【转载】

    转自:https://blog.csdn.net/qq_16912257/article/details/79099581 https://blog.csdn.net/thriving_fcl/art ...