前后端分离


Node.JS
node js 介绍
Node js是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台。详情可以参考这个博主的博客https://blog.youkuaiyun.com/m0_55534317/article/details/126101820
Node js 的安装
安装包已上传至我的资源文件中,或者在官网直接下载都可以,下载一路下一步就可以,安装好后会自动配置全局的环境变量,打开cmd命令行输入 node -v可以显示版本号即为安装成功。

Node js 的卸载
打开命令行 输入 where node 会显示你的安装路径

在win打开的菜单栏输入Node js 打开文件位置 里面有卸载程序


在以下路径下还有下载的东西,删除干净
C:\Users\DELL\AppData\Local

npm
npm 介绍
npm是Node.js默认的软件包管理工具,就相当于与后端的maven一样,会随着nodejs的安装自动安装。
在命令行使用 npm -v 命令 ,可以查看npm的版本号。

npm 配置
使用管理员身份运行命令行,在命令行中,执行如下指令:(路径是NodeJS的安装目录)
npm config set prefix "D:\devsoft\nodejs"
切换npm为淘宝镜像,使用管理员身份运行命令行,在命令行中,执行如下指令:
npm config set registry https://registry.npm.taobao.org
cnpm
cnpm 介绍
cnpm是中国版的npm使用淘宝的镜像,在网络下载不佳的时候cnpm就排上了用场。
cnpm 安装
npm install -g cnpm --registry=https://registry.npmmirror.com
Vue ui
Vue ui 介绍
vue ui是一个vue项目的脚手架用于快速构建Vue项目,是前端开发一个必不可少的一个工具。
前端工程化是通过vue官方提供的脚手架Vue-cli来完成的,用于快速的生成一个Vue的项目模板。
Vue-cli主要提供了如下功能:统一的目录结构、本地调试、热部署、单元测试、集成打包上线
运行Vue-cli需要依赖NodeJS,NodeJS是前端工程化依赖的环境。
所以我们需要先安装NodeJS,然后才能安装Vue-cli
Vue ui 安装
使用管理员身份运行命令行,在命令行中,执行如下指令:
npm install -g @vue/cli
如果网络不佳的话可以使用cnpm(前提是已经安装好cnpm)
cnpm install -g @vue/cli
等待一会儿,安装完毕后会有一个时间,表示安装成功。

安装完毕之后可以使用以下命名进行查看,如果显示版本号即为成功:
vue --version

Vue ui 的使用
在前端项目的工作空间中,打开命令行数据 vue ui 命令会打开项目构建页面接下来进行这些操作:
① 也可以使用命令常见好项目在项目中进入 vue create vue-project01
② 在命令行中输入 vue ui 打开图形界面

③ 在ui界面创建项目




创建项目的过程,需要联网进行,这可能会耗时比较长的时间,请耐心等待。 windows的命令行,容易卡顿,我们可以随便敲击一下键盘。

如果出现如下字样,就说明前端工程已经创建完毕了。

创建完毕后,就可以直接关闭页面和命令行了,到此工程创建完毕。

Vue
Vue 介绍
-
MVVM是Model-View-ViewModel的简写,它本质上就是MVC的改进版;MVVM就是将其中的View的状态和行为抽象化,让我们将视图UI和业务逻辑分开。
- M: 即Model,模型,指的就是数据
- V: 即View, 视图,指的就是页面
- VM:即View-Model,指的是模型和数据的双向绑定(即view和Model互相影响,Model变了,view随之改变;view变了,Model也随之改变)
-
基于MVVM模式的前端框架三巨头:Vue、React、AngularJS,国内目前非常火的就是:Vue

Vue 开发工具(VS Code)
VS Code安装
直接在我的上传资源下载或 VS Code官网:https://code.visualstudio.com,点击 DownLoad for Windows下载windows版本。一路下一步就可以,改成无中文无空格的路径就可以。
VS code 插件下载
安装完VS Code需要下载以下几个插件:在左边的最后一个扩展里面搜索以下插件名字,点击 install
如果右下角提醒你重启,就重启不然不变语言,或者卸载了再重新安装。
①Chinese (Simplified) Language Pack

②Code Spell Checker

③VueHelper
④Vetur
⑤IntelliJ IDEA Keybindings
在VS Code 打开Vue项目
修改端口
在VS Code启动之后,他会占用8080端口,这跟我们后台tomcat的端口就冲突了,我们修改为7000
在vue.config.js文件中,添加端口号的配置,然后重启一下vue项目即可

开发流程
我们以main.js作为文件的主入口,此文件会引入我们开发的根组件App.vue
我们可以在根组件中编写代码,也可以在其它自定义组件中开发,再引入到根组件中
组件:我们开发代码的主战场,一般包含三部分:template(定义HTML)、script(定义js)、style(定义css)

安装组件
① 在当前工程的目录下,在命令行执行指令
npm install element-ui@2.15.3;
npm install axios;
② 在main.js中引入ElementUI组件库
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

③ Vue文件(界面)

④在根组件中引入组件

⑤在main.js中开启axios全局路径
// 设置axios全局api
import axios from 'axios'
// 请求基准路径的配置 后台
axios.defaults.baseURL = 'http://127.0.0.1:8080/'

⑥启动项目查看结果
启动,项目右边的三个点可以打开npm脚本,添加项目到工作空间,选择信任

查看结果

配置路由
路由用于实现在前端的多个视图之间进行跳转

| vue路由组成部分 | 作用 |
|---|---|
| VueRouter | 路由核心类,负责根据路由请求在路由视图中动态渲染选中的组件 |
| router-link | 请求连接组件,浏览器会将其渲染为超链接标签 |
| router-view | 动态视图组件,动态视图组件,用来渲染展示与路由路径对应的组件 |

定义路由表
在router/index.js中定义路由表
const routes = [
{
path: '/',
name: 'student',
component: () => import('../views/StudentView.vue')
},
{
path: '/student',
name: 'student',
component: () => import('../views/StudentView.vue')
},
{
path: '/teacher',
name: 'teacher',
component: () => import('../views/TeacherView.vue')
}
]

添加路由路径
在StudentView和TeacherView侧边栏文字上添加路由对应的path路径
<el-menu-item index="1-1">
<router-link to="/student"> 学生管理</router-link>
</el-menu-item>
<el-menu-item index="1-2">
<router-link to="/teacher"> 教师管理</router-link>
</el-menu-item>

修改App.vue

打包部署
我们开发好的前端程序,最终需要部署到nginx服务器上去运行,这里有两个步骤:打包和部署
打包
将我们开发好的程序,打成可运行的目录dist

部署
Nginx是一款轻量级的Web服务器,可以把我们大前端程序放到里面运行,默认端口是80
Ngnix (前端服务器)
Nginx 介绍
Nginx是一款轻量级的Web服务器,可以把我们大前端程序放到里面运行,默认端口是80
Nginx 安装
通过我上传的资源可以下载,解压直接使用即可,双击直接启动就可以,可以在资源管理器中查看到进程或者直接访问 http://localhost:80 会显示服务器主页,可能会启动失败,一个原因就是端口冲突的原因,可以在cmd中输入以下名进行查看80端口的占用情况:
netstat -ano | findstr "80" //查询指定端口占用情况
如果端口冲突了,可以在Nginx配置文件中修改端口



项目部署
① 了解Nginx 目录作用

② 将dist目录中的文件复制到nginx的html目录下

③ 双击nginx.exe启动软件

④ 在浏览器访问localhost:80,查看效果
http://localhost:80
跨域
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。最简单的说就是从当前域名的网站下不能请求非同源的地址,同源是指,域名,协议,端口均相同。

前端跨域
Vue 设置跨域

Nginx 设置跨域
location /api {
rewrite ^/api/?(.*)$ /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080; # 转发地址
}

后端设置跨域
在当前项目中如果只设置前端跨域 那项目就只能通过get请求 , post请求会跨域失败 无法实现post相关请求和功能
定义一个过滤器配置运行跨域
package com.itheima.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 解决全站乱码问题,处理所有的请求
*/
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse rep, FilterChain filterChain) throws IOException, ServletException {
//将父接口转为子接口
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) rep;
//不需要过滤的url
String path = request.getServletPath();
String[] urls = {".html", ".js", ".css", ".ico", ".jpg", ".png"};
boolean flag = true;
for (String str : urls) {
if (path.indexOf(str) != -1) {
flag = false;
break;
}
}
//需要过滤的资源走这个逻辑
if (flag) {
//解决post请求中文数据乱码问题
if (request.getMethod().equalsIgnoreCase("post")) {
request.setCharacterEncoding("utf-8");
}
//解决跨域问题
/* 允许跨域的主机地址 */
response.setHeader("Access-Control-Allow-Origin", "*");
/* 允许跨域的请求方法GET, POST, HEAD 等 */
response.setHeader("Access-Control-Allow-Methods", "*");
/* 重新预检验跨域的缓存时间 (s) */
response.setHeader("Access-Control-Max-Age", "3600");
/* 允许跨域的请求头 */
response.setHeader("Access-Control-Allow-Headers", "*");
/* 是否携带cookie */
response.setHeader("Access-Control-Allow-Credentials", "true");
//处理响应乱码
response.setContentType("application/json;charset=utf-8");
}
filterChain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}

Tomcat(后端服务器)
详情请参考 另外的博客 IDEA 与 Tomcat
本文详细介绍了前后端分离的开发环境搭建,包括Node.js的安装与卸载、npm和cnpm的使用、Vue项目的创建与配置、Vue开发工具VSCode的安装及插件、端口修改和开发流程。此外,还讲解了Nginx的部署、跨域问题的解决方法,以及Tomcat后端服务器的基础知识。

被折叠的 条评论
为什么被折叠?



