第八节:导入 web 层和实现商品分类查询

这篇博客介绍了如何搭建基于Vue的后台管理前端,使用Vuetify框架进行UI设计,并通过Nginx解决本地域名访问和端口问题。文章详细阐述了Vuetify的优点,以及在商品分类查询中的实现过程,包括数据导入、URL异步请求、实体类、控制器和服务的创建。同时,讲解了域名解析和反向代理配置,以实现通过域名直接访问本地项目。
摘要由CSDN通过智能技术生成

此博客用于个人学习,来源于网上,对知识点进行一个整理。

1. 搭建后台管理前端:

1.1 导入项目并且安装依赖:

先将项目压缩包解压缩,放到工作目录中,package.json 中依然定义了我们所需的一切依赖,我们只需要打开终端,进入项目目录,输入:npm install 命令,即可安装这些依赖。在 package.json 文件中有 scripts 启动脚本配置,可以输入命令: npm run dev 或者 npm start。

1.2 目录结构:

在这里插入图片描述
webpack:是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。并且提供了前端项目的热部署插件。

1.3 调用关系:

理清 index.html、main.js、App.vue 之间的关系:

在这里插入图片描述

  • index.html:html 模板文件。定义了空的 div ,其 id 为 app 。
  • main.js:实例化vue对象,并且通过 id 选择器绑定到 index.html 的 div 中,因此 main.js 的内容都将在index.html 的 div 中显示。main.js 中使用了 App 组件,即 App.vue,也就是说 index.html 中最终展现的是 App.vue 中的内容。index.html 引用它之后,就拥有了 vue 的内容(包括组件、样式等),所以,main.js 也是 webpack 打包的入口
  • index.js:定义请求路径和组件的映射关系,相当于 <vue-router>。
  • App.vue 中也没有内容,而是定义了 vue-router 的锚点: <router-view> ,vue-router 路由后的组件将会在锚点展示。
  • 最终结论:一切路由后的内容都将通过App.vue在index.html中显示。

访问流程:用户在浏览器输入路径,例如:http://localhost:9001/#/item/brand --> index.js( /item/brand 路径对应 pages/item/Brand.vue 组件) --> 该组件显示在 App.vue 的锚点位置 --> main.js 使用了 App.vue 组件,并把该组件渲染在 index.html 文件中(id 为“app”的 div 中)

2. Vuetify 框架:

2.1 学习 UI 框架的原因:

Vue 虽然会帮我们进行视图的渲染,但样式还是由我们自己来完成。这显然不是我们的强项,因此后端开发人员一般都喜欢使用一些现成的 UI 组件,拿来即用,常见的例如:

  • BootStrap
  • LayUI
  • EasyUI
  • ZUI

然而这些 UI 组件更多的是利用 DOM 操作,借助于 jQuery 实现,而不是 MVVM 的思想。

2.2 Vuetify 的优点:

  • Vuetify 几乎不需要任何 CSS 代码,而其他的 UI 框架例如 element-ui 许多布局样式需要我们来编写。
  • Vuetify 从底层构建起来的语义化组件,简单易学,容易记住。
  • Vuetify 基于 Material Design(谷歌推出的多平台设计规范),更加美观,动画效果酷炫,且风格统一。

重点关注 UI components 即可,里面有大量的 UI 组件。

2.3 项目页面布局:

Layout 组件是我们的整个页面的布局组件,一个典型的三块布局。包含左,上,中三部分:左侧导栏,顶部工具条,中间为主体内容。

在这里插入图片描述
里面使用了 Vuetify 中的2个组件和一个布局元素:

  • 组件:
    • v-navigation-drawer :导航抽屉,主要用于容纳应用程序中的页面的导航链接。
    • v-toolbar :工具栏通常是网站导航的主要途径。可以与导航抽屉一起很好地工作,动态选择是否打开导航抽屉,实现可伸缩的侧边栏。
  • 布局元素:
    • v-content :标记页面布局的元素,可以根据我们指定的app组件的结构动态调整大小,使得可以创建高度可定制的组件。

在这里插入图片描述

  • Layout 映射的路径是 /
  • 除了 Login 以外的所有组件,都是定义在 Layout 的 children 属性,并且路径都是 / 的下面
  • 因此当路由到子组件时,会在 Layout 中定义的锚点中显示
  • 并且 Layout 中的其它部分不会变化,这就实现了布局的共享

3. 使用域名访问本地项目:

3.1 统一环境:

实际开发中,会有不同的环境:

  • 开发环境:自己的电脑
  • 测试环境:提供给测试人员使用的环境
  • 预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试
  • 生产环境:项目最终发布上线的环境

如果不同环境使用不同的 ip 去访问,可能会出现一些问题。为了保证所有环境的一致,我们会在各种环境下都使用域名来访问。

我们将使用以下域名:

  • 主域名是:www.leyou.com,leyou.com
  • 管理系统域名:manage.leyou.com
  • 网关域名:api.leyou.com

但是最终,我们希望这些域名指向的还是我们本机的某个端口。

3.2 域名解析:

一个域名一定会被解析为一个或多个 ip。这一般会包含两步:

  • 本地域名解析:

    浏览器会首先在本机的 hosts 文件中查找域名映射的 IP 地址,如果查找到就返回 IP ,没找到则进行域名服务器解析,一般本地解析都会失败,因为默认这个文件是空的。

    • Windows 下的 hosts 文件地址:C:/Windows/System32/drivers/etc/hosts
    • Linux 下的 hosts 文件所在路径: /etc/hosts

样式:

# My hosts
127.0.0.1 localhost
  • 域名服务器解析:

    本地解析失败,才会进行域名服务器解析,域名服务器就是网络中的一台计算机,里面记录了所有注册备案的域名和 ip 映射关系,一般只要域名是正确的,并且备案通过,一定能找到。

3.3 解决域名解析问题:

可以修改本地的 hosts 文件,实现对域名的解析。修改本地的 host 为:

127.0.0.1 api.leyou.com
127.0.0.1 manage.leyou.com

这样就实现了域名的关系映射了。

但还有更好的方案,通过 switchhosts 软件去修改我们的本地 host 文件。

在这里插入图片描述

添加了两个映射关系(中间用空格隔开,其他映射关系是后面功能的内容):

  • 127.0.0.1 api.leyou.com :我们的网关 Zuul
  • 127.0.0.1 manage.leyou.com:我们的后台系统地址

原因:我们配置了项目访问的路径,虽然 manage.leyou.com 映射的 ip 也是127.0.0.1,但是 webpack 会验证 host 是否符合配置。

在这里插入图片描述
在 webpack.dev.conf.js 中取消 host 验证:disableHostCheck: true。

在这里插入图片描述

3.4 解决端口问题:

域名问题解决了,但是现在要访问后台页面,还得自己加上端口: http://manage.leyou.com:9001 。我们希望的是直接域名访问: http://manage.leyou.com 。这种情况下端口默认是80,如何才能把请求转移到9001端口呢?

这里就要用到反向代理工具:Nginx。

nginx 可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:

  • 反向代理
  • 负载均衡
  • 动态路由
  • 请求过滤

1)作为 Web 服务器:

Web 服务器分2类:

  • web 应用服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值