一起养成写作习惯!这是我参与「掘金日新计划 4 月更文应战」的第3天,点击查看活动概况。

往期回忆

『技能派实战』第一期:我的网站上线了

前语

在上一期中,介绍 技能派 网站的基本状况,简单列出了前后端的技能特色。今天继续详细拆解做这样一个资源聚合类的网站需求哪些技能栈。

工程结构

项目全体运用了 SpringBoot + Maven 的黄金组合。

『技术派实战』第二期:工程结构和技术选型

一个大的maven工程分红3个子module,其间2个hunterweb模块是web工程,support模块是普通Java工程。

模块 效果
hunter 负责数据收集、数据分析、数据聚合、数据耐久化
web 包括前端代码和后端接口,负责网站的全体页面展现
support 支撑模块,供给公共组件,比方常量类、东西类、基类、枚举类、模型目标等
blog 规划中,以单独部署的服务来供给网站的博客服务

技能选型

前端

项目没有运用前后端别离的架构,前端采用了Bootstrap响应式的页面框架,通过在Springboot项目中集成Thymeleaf模板引擎的方法渲染HTML页面。

Tips:

对于非前端专业的开发者,在网上挑选适宜的Bootstrap模板,下载到本地,把html文件和其他静态文件导入到Springboot工程中,将html中的静态数据替换成接口返回的数据,能够到达事半功倍的效果。

『技术派实战』第二期:工程结构和技术选型

如上图

  1. 静态资源分类放到static目录下
  2. html文件放到templates目录下
  3. 公共页面如header、footer放到templates/common目录下
  4. 过错页面如404、500放到templates/error目录下

后端

hunter

hunter 工程首要用到了各种数据收集的东西。

技能派首要是供给网络上各个渠道的优质资源的信息展现,以链接跳转方法拜访原页面。

从技能派的定义能够分析出,这样一个网站要做的第一步便是数据收集。

依据各技能类渠道收集数据的难易程度(敞开程度)不同,能够大概分红四类数据源:

  1. 最易获取:供给 Open API
  2. 较易获取:供给 RSS源或Feed源
  3. 较难获取:前后端别离渠道,能够通过开发者模式获取到Api接口
  4. 最难获取:通过模板引擎渲染页面,能够页面解析器获取页面数据

第一种状况,用HttpClient直连的方法,拼装请求参数调用 Open API即可。

第二种状况,运用RSS或Feed源解析东西,技能派运用的Rome。

第三种状况,用HttpClient直连的方法,拼装请求参数调用API即可。

第四种状况,用页面解析东西,技能派运用的老牌HTML解析器Jsoup和Web自动化东西Selenium。

墙裂推荐一下Selenium,不仅是测验同学要学会Web自动化测验,开发同学也能够用来开发一些自动化流程,提高工作效率

web

web 工程首要供给页面所需的接口和邮箱订阅的推送能力。

具体代码不详细讲了,都是基本的业务代码,这里列一下最容易弄错的邮件和thymeleaf的装备。

1. 邮件
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
spring:
    mail:
      default-encoding: utf-8
      host: smtp.qq.com
      port: 587
      username: xxxxx@xxx.com # 发送邮件的邮箱
      password: 1234567891234567  # 16位授权码
      properties:
        mail:
          smtp:
            auth: true
            socketFactory:
              class: javax.net.ssl.SSLSocketFactory
            starttls:
              enable: true
      protocol: smtp
2. Thymeleaf 模板引擎
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
spring:
    thymeleaf:
      cache: true
      check-template: true
      check-template-location: true
      enabled: true
      encoding: UTF-8
      excluded-view-names: ''
      mode: HTML
      prefix: classpath:/templates/
      suffix: .html
    mvc:
      static-path-pattern: /static/** # 静态资源路径

下期预告

在下一期中,详细讲解技能派用到的限流、重试、缓存、守时使命等技能。

喜欢的同学请多多点赞,多多保藏我的网站www.jspai.cc哟