一起养成写作习惯!这是我参与「掘金日新计划 4 月更文应战」的第3天,点击查看活动概况。
往期回忆
『技能派实战』第一期:我的网站上线了
前语
在上一期中,介绍 技能派 网站的基本状况,简单列出了前后端的技能特色。今天继续详细拆解做这样一个资源聚合类的网站需求哪些技能栈。
工程结构
项目全体运用了 SpringBoot + Maven 的黄金组合。
一个大的maven工程分红3个子module,其间2个hunter和web模块是web工程,support模块是普通Java工程。
模块 | 效果 |
---|---|
hunter | 负责数据收集、数据分析、数据聚合、数据耐久化 |
web | 包括前端代码和后端接口,负责网站的全体页面展现 |
support | 支撑模块,供给公共组件,比方常量类、东西类、基类、枚举类、模型目标等 |
blog | 规划中,以单独部署的服务来供给网站的博客服务 |
技能选型
前端
项目没有运用前后端别离的架构,前端采用了Bootstrap响应式的页面框架,通过在Springboot项目中集成Thymeleaf模板引擎的方法渲染HTML页面。
Tips:
对于非前端专业的开发者,在网上挑选适宜的Bootstrap模板,下载到本地,把html文件和其他静态文件导入到Springboot工程中,将html中的静态数据替换成接口返回的数据,能够到达事半功倍的效果。
如上图
- 静态资源分类放到static目录下
- html文件放到templates目录下
- 公共页面如header、footer放到templates/common目录下
- 过错页面如404、500放到templates/error目录下
后端
hunter
hunter 工程首要用到了各种数据收集的东西。
技能派首要是供给网络上各个渠道的优质资源的信息展现,以链接跳转方法拜访原页面。
从技能派的定义能够分析出,这样一个网站要做的第一步便是数据收集。
依据各技能类渠道收集数据的难易程度(敞开程度)不同,能够大概分红四类数据源:
- 最易获取:供给 Open API
- 较易获取:供给 RSS源或Feed源
- 较难获取:前后端别离渠道,能够通过开发者模式获取到Api接口
- 最难获取:通过模板引擎渲染页面,能够页面解析器获取页面数据
第一种状况,用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哟