<h1> 全栈的自我修养: 环境搭建 </h1>css
Not all those who wander are lost.
彷徨者并不是都迷失方向。
往期文章html
全栈的自我修养: 001环境搭建 (使用Vue,Spring Boot,Flask,Django 完成Vue先后端分离开发)
全栈的自我修养: 002使用@vue/cli进行vue.js环境搭建
全栈的自我修养: 003Axios 的简单使用前端
当你看到这篇文章的时候,暂且认为你对如何作一个网站有了兴趣.vue
本系列文章将从一个完整的项目是如何开发的过程进行编写,期间会涉及前端、后端和一些运维的知识。node
本篇题为 全栈的自我修养
将经过一个项目整合(一前端项目对应三个后端项目
),完成一个简单的DEMOjquery
其中前端项目使用 Vue.js
,这个项目将会用到vue
,vuex
,vue-route
,axios
,elementUI
等linux
后端项目使用为 3 个项目,其中涉及Spring Boot, Mybaits, Flask
等webpack
中间会穿插一些运维的知识如经常使用linux命令, Jenkins
等ios
也会介绍一些工具的使用git
计划分为如下几个项目:
做为第一篇,这里主要介绍Vue
环境的准备工做.
根据实际状况下载对应版本便可
官网地址:https://nodejs.org/zh-cn/down...
安装完成后,在控制台中输入:node -v
便可得知安装的node
版本,使用 npm -v
查看 npm
版本
node -v v14.4.0 npm -v 6.14.5
若是上面已经验证正确安装了 node
和 npm
, 则使用 npm install -g vue-cli
完成 vue-cli
的安装
给项目起名字一直是困扰个人第一个难题,本次将项目暂命名为 epimetheus-frontend
使用 vue-cli
命令生成项目,命令格式为:vue init webpack Vue-Project
, 这里为 vue init webpack epimetheus-frontend
,
epimetheus
文件夹epimetheus
文件夹vue init webpack epimetheus-frontend
根据提示填写项目信息:
? Project name epimetheus-frontend ? Project description A Vue.js project ? Author yunan.zhang <zhangyunan@91jinrong.com> ? Vue build standalone ? Install vue-router? Yes ? Use ESLint to lint your code? Yes ? Pick an ESLint preset Standard ? Set up unit tests Yes ? Pick a test runner jest ? Setup e2e tests with Nightwatch? Yes ? Should we run `npm install` for you after the project has been created? (recommended) yarn
注意上面选择了 yarn
而不是 npm
, 这里对于使用 npm 仍是 yarn, 并无要求,两个的功能都能使用,只是命令略有不一样而已
npm | yarn |
---|---|
npm install | yarn install |
(N/A) | yarn install --flat |
(N/A) | yarn install --har |
(N/A) | yarn install --no-lockfile |
(N/A) | yarn install --pure-lockfile |
npm install [package] | (N/A) |
npm install --save [package] | yarn add [package] |
npm install --save-dev [package] | yarn add [package] [--dev/-D] |
(N/A) | yarn add [package] [--peer/-P] |
npm install --save-optional [package] | yarn add [package] [--optional/-O] |
npm install --save-exact [package] | yarn add [package] [--exact/-E] |
(N/A) | yarn add [package] [--tilde/-T] |
npm install --global [package] | yarn global add [package] |
npm rebuild | yarn install --force |
npm uninstall [package] | (N/A) |
npm uninstall --save [package] | yarn remove [package] |
npm uninstall --save-dev [package] | yarn remove [package] |
npm uninstall --save-optional [package] | yarn remove [package] |
npm cache clean | yarn cache clean |
rm -rf node_modules && npm install | yarn upgrade |
安装过程可能有点慢,安装完成后,以下
# Project initialization finished! # ======================== To get started: cd epimetheus-frontend npm run dev Documentation can be found at https://vuejs-templates.github.io/webpack
这时,咱们能够进入 epimetheus-frontend
, 并在控制台运行 npm run dev
,便可开始运行咱们的项目
epimetheus$ cd epimetheus-frontend epimetheus/epimetheus-frontend$ npm run dev > epimetheus-frontend@1.0.0 dev /Users/zhangyunan/project/scoding/epimetheus/epimetheus-frontend > webpack-dev-server --inline --progress --config build/webpack.dev.conf.js 13% building modules 29/31 modules 2 active ...theus/epimetheus-frontend/src/App.vue{ parser: "babylon" } is deprecated; we now treat it as { parser: "babel" }. 95% emitting DONE Compiled successfully in 2886ms 下午1:49:57 I Your application is running here: http://localhost:8080
从控制台信息能够看出,访问路径为:http://localhost:8080
这样准备工做基本就完成了
这里使用 VSCode
进行开发,你也可使用 Webstorm
, 两个均可以,在使用VSCode
的时候,能够直接在终端使用 code
命令在VSCode打开执行文件或者目录,
例如:
epimetheus/epimetheus-frontend$ code .
则会将当前文件夹 epimetheus/epimetheus-frontend
在 VSCode
中打开,
如何你安装VSCode
后,使用code
命令时,提示 not fund, 能够经过 查看 -> 命令面板 输入code
进行安装
这里使用了 VSCode
,打开项目后如图:
├── build/ # webpack config files │ └── ... ├── config/ │ ├── index.js # main project config │ └── ... ├── src/ │ ├── main.js # app entry file │ ├── App.vue # main app component │ ├── components/ # ui components │ │ └── ... │ └── assets/ # module assets (processed by webpack) │ └── ... ├── static/ # pure static assets (directly copied) ├── .babelrc # babel config ├── .editorconfig # indentation, spaces/tabs and similar settings for your editor ├── .eslintrc.js # eslint config ├── .eslintignore # eslint ignore rules ├── .gitignore # sensible defaults for gitignore ├── .postcssrc.js # postcss config ├── index.html # index.html template ├── package.json # build scripts and dependencies └── README.md # Default README file
其中,咱们主要修改 src 下文件,上面提到项目访问端口为:8080
, 为了防止与其余项目形成冲突,这里将端口改成:7000
, 具体配置在 config/index.js
文件中
这里使用了
官网:http://element-cn.eleme.io/#/...
这里咱们进入刚才的项目目录:并执行 yarn add element-ui
epimetheus/epimetheus-frontend$ yarn add element-ui yarn add v1.15.2 [1/5] 🔍 Validating package.json... [2/5] 🔍 Resolving packages... [3/5] 🚚 Fetching packages... [4/5] 🔗 Linking dependencies... [5/5] 🔨 Building fresh packages... success Saved lockfile. success Saved 6 new dependencies. info Direct dependencies └─ element-ui@2.13.2 info All dependencies ├─ async-validator@1.8.5 ├─ deepmerge@1.5.2 ├─ element-ui@2.13.2 ├─ normalize-wheel@1.0.1 ├─ resize-observer-polyfill@1.5.1 └─ throttle-debounce@1.1.0 ✨ Done in 8.36s.
配置
在 main.js 中写入如下内容:
import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import App from './App.vue'; Vue.use(ElementUI); new Vue({ el: '#app', render: h => h(App) });
配置完成后的 main.js 文件为:
import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import App from './App' import router from './router' Vue.config.productionTip = false Vue.use(ElementUI) /* eslint-disable no-new */ new Vue({ el: '#app', router, render: h => h(App), components: { App }, template: '<App/>' })
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的全部组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
也就是经过 Vuex ,各个组件能够实时的共享状态
官网:https://vuex.vuejs.org/zh-cn/...
安装
首先咱们先安装它 yarn add vuex
epimetheus/epimetheus-frontend$ yarn add vuex yarn add v1.15.2 [1/5] 🔍 Validating package.json... [2/5] 🔍 Resolving packages... [3/5] 🚚 Fetching packages... [4/5] 🔗 Linking dependencies... [5/5] 🔨 Building fresh packages... success Saved lockfile. success Saved 1 new dependency. info Direct dependencies └─ vuex@3.4.0 info All dependencies └─ vuex@3.4.0 ✨ Done in 5.33s.
配置
首先在 src
下建立 store
文件夹并在其下建立 store.js
文件
即 src/store/store.js
, 同时建立 src/assets/util/cookie.js
src/assets/utils/cookie.js 文件内容
该文件主要用于操做cookie
let cookie = { setCookie (cname, value, expiredays) { let exdate = new Date() exdate.setTime(exdate.getTime() + expiredays) exdate.setDate(exdate.getDate() + expiredays) document.cookie = cname + '=' + escape(value) + ((expiredays == null) ? '' : ';expires=' + exdate.toGMTString()) }, getCookie (name) { let reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)') let arr = document.cookie.match(reg) if (arr) { return (arr[2]) } else { return null } }, delCookie (name) { let exp = new Date() exp.setTime(exp.getTime() - 1) let cval = cookie.getCookie(name) if (cval != null) { document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;' } } } export default cookie
src/store/store.js 内容
这里定义了 userInfo
用来保存当前的用户信息,包含一个 name
和 token
import Vue from 'vue' import Vuex from 'vuex' import cookie from '../assets/util/cookie' Vue.use(Vuex) const userInfo = { name: cookie.getCookie('name') || '', token: cookie.getCookie('token') || '' } const store = new Vuex.Store({ state: { userInfo: userInfo }, mutations: { setUserInfo (state) { state.userInfo = { name: cookie.getCookie('name'), token: cookie.getCookie('token'), } } } }) export default store
在 main.js
添加Vuex
配置,
import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import App from './App' import router from './router' import store from './store/store' Vue.config.productionTip = false Vue.use(ElementUI) /* eslint-disable no-new */ new Vue({ el: '#app', router, store, render: h => h(App), components: { App }, template: '<App/>' })
Promise based HTTP client for the browser and node.js
axios 是一个基于 Promise 的 http client, 经过他,咱们向后端进行数据交互,若是你不喜欢它,可使用jquery
的 ajax
代替.
咱们来安装一下
epimetheus/epimetheus-frontend$ yarn add axios yarn add v1.15.2 [1/5] 🔍 Validating package.json... [2/5] 🔍 Resolving packages... [3/5] 🚚 Fetching packages... [4/5] 🔗 Linking dependencies... [5/5] 🔨 Building fresh packages... success Saved lockfile. success Saved 2 new dependencies. info Direct dependencies └─ axios@0.19.2 info All dependencies ├─ axios@0.19.2 └─ follow-redirects@1.5.10 ✨ Done in 4.39s
修改 main.js
文件
加入
import './axios_config/' import Axios from 'axios' Vue.prototype.$http = Axios
https://github.com/zhangyunan...