面试题答案
一键面试路由配置
- 使用合适的路由模式:采用
history
模式,避免URL中出现#
,使URL更符合SEO规范,例如:
const router = new VueRouter({
mode: 'history',
routes: [
// 路由配置项
]
});
- 合理设置路由参数:确保路由参数有意义且简洁,利于搜索引擎识别,如
/product/:productId
中的productId
应能直观反映产品相关信息。 - 配置元信息:在路由配置中添加
meta
字段,用于存储页面标题、描述等SEO相关信息,例如:
routes: [
{
path: '/about',
name: 'About',
component: About,
meta: {
title: '关于我们 - 公司介绍',
description: '本页面详细介绍了公司的发展历程、团队成员等信息'
}
}
]
组件优化
- 懒加载组件:对于大量动态加载内容,使用Vue的异步组件(懒加载),减少初始加载的JavaScript体积,提高页面加载速度,例如:
const Home = () => import('./components/Home.vue');
- SSR(服务器端渲染)或SSG(静态站点生成):
- SSR:使用
vue - server - renderer
实现服务器端渲染,让搜索引擎能直接抓取到完整的HTML内容。在服务器端根据路由渲染出初始HTML,然后发送给客户端,客户端再进行激活(hydration)。 - SSG:借助
vue - cli - plugin - ssr
或nuxt.js
等工具生成静态HTML文件,适合内容相对固定的页面。提前在构建时生成页面,提高页面首次加载速度和SEO友好性。
- SSR:使用
- 避免过度使用JavaScript渲染:尽量在HTML中直接呈现关键内容,减少JavaScript动态生成的内容,因为搜索引擎可能无法很好地解析JavaScript生成的内容。
服务器端配置
- 设置正确的HTTP头:
- 设置
Cache - Control
头:合理设置缓存策略,对于静态资源设置较长的缓存时间,如:
- 设置
Cache - Control: public, max - age = 31536000
- **设置 `Content - Type` 头**:确保服务器返回的内容类型正确,对于HTML页面设置为 `text/html`。
2. 处理重定向:如果有必要的重定向(如301永久重定向),在服务器端配置好,确保搜索引擎能正确跟随重定向到目标页面,例如在Nginx中配置:
server {
listen 80;
server_name olddomain.com;
return 301 https://newdomain.com$request_uri;
}
- 服务器性能优化:优化服务器配置,提高响应速度,例如启用HTTP/2协议,压缩传输数据等。
前端代码优化
- 优化HTML结构:
- 正确使用HTML标签:使用合适的语义化标签,如
<header>
、<nav>
、<main>
、<article>
、<section>
、<footer>
等,帮助搜索引擎理解页面结构。 - 合理设置标题标签:页面标题
<title>
应简洁且包含关键词,与路由配置中的meta.title
对应。同时,合理使用<h1>
-<h6>
标签,一个页面通常只有一个<h1>
标签,用于突出页面主题。
- 正确使用HTML标签:使用合适的语义化标签,如
- 优化图片:
- 压缩图片:使用工具(如ImageOptim、Compressor.io等)对图片进行压缩,减小文件大小,提高加载速度。
- 设置合适的图片属性:使用
alt
属性为图片提供描述,便于搜索引擎理解图片内容,例如<img src="product.jpg" alt="产品图片 - 红色运动鞋">
。
- JavaScript代码优化:
- 减少内联JavaScript:将JavaScript代码分离到单独的文件中,便于维护和缓存。
- 优化脚本加载顺序:将非关键脚本设置为异步加载(
async
)或延迟加载(defer
),例如:
<script src="script.js" defer></script>
维护成本和扩展性考虑
- 模块化和组件化:采用模块化和组件化开发,将功能拆分成独立的模块和组件,便于维护和扩展。例如,将SEO相关的功能封装成独立的组件或模块,如
SeoMeta.vue
组件,专门处理页面的元信息。 - 文档化:对SEO优化的配置和代码进行详细的文档说明,包括路由元信息的含义、服务器端配置的作用等,方便后续开发人员理解和维护。
- 使用工具和框架:借助成熟的工具和框架(如
vue - router
、nuxt.js
等),这些工具已经内置了很多SEO相关的优化机制,并且有活跃的社区支持,便于扩展和维护。同时,定期更新工具和框架版本,以获取更好的SEO优化效果和性能提升。