发布时间:2025-04-08 11:24 浏览次数:295
半个月前给客户做了一个老小程序的 SEO 的初步优化计划,合计费时约 2 天左右,个中细节比较多, 这里举例两个比较重要,但是又不算难改的优化点。
前端优化:跳转的 URL 可以直接打开
简单可以测试为,分享出去的卡片,均可以直接打开(请务必测试是否登录,神坑)。
这里牵扯到两个问题。
页面渲染逻辑
query 所携带的参数
组件内 URL 问题
第一个问题会牵扯到后端接口下发的内容,比如这样的场景:
后端下发了一个列表数据,种种原因导致列表中就包含了点击列表后详情所要展示的所有内容,然后分享出去的是详情。这种情况基本是一个分享一个炸,自然微信小程序的页面爬虫也是个个 GG。这种情况就得前后端一起优化,独立一个 /x/detail 的接口,通过 id 等方式可获取详情的详情数据,并且注意,分享页务必接口设定无需登录。
然后就是这个 id 之类的东西如何带进去,这就是第二个问题。
有时候可能会因为一些特殊原因在 localStorage 或干脆直接挂在 getApp() 实例内存上,临时储存上个页面的 key,然后下个页面出来后在 onLoad 中拿这个 key 去使用。如果你有这个操作或者历史遗留问题,务必将其放在下个页面的 path 上,挂载在 query 后面。原因就是爬虫不会从上页面给你带内存数据,更不会验证本地缓存是否有效。
第三个问题也很常见,因为小程序 SEO 中有一条是能用 navigator 则用 navigator, 而很有可能 nav 的功能被你封装在了一个组件内,常见比如 card 类组件,其本身就是一个 view(记得换成 navigator)下包含了其他元素。而点击操作之前可能是 bindtap 后根据组件携带的 item 计算出来的 path,而 item 是父级页面获取的接口 list 元素。如果出现这种情况,那么首先把组件的根 view 换成navigator,删除 bindtap 与相应事件,给 navigator 的 url 属性写上 item.url(或类似),然后在父级页面获取 list 的地方,多一个步骤,把 list 给 map 一下,或者 forEach 一下,给 list 的元素分别加上 url,这个 url 的计算在这里直接进行即可。
服务端优化:使用页面路径推送能力
这个就跟搜索引擎的站长提交链接地址一样,只不过这里提交的是小程序页面 path 与 query。多的不说,直接 NodeJS 代码参考下即可。
function pushWeixinPages() {
// 默认起始 ID
let id = 0
// 这里放个本地文件保存上次推送的页面 ID,建议 ID 为数据库自增索引
// 本地保存是为了服务器重启不至于又来一遍
fs.readFile('./menu_id', async (error, menu_id) => {
console.log(error)
if(error) {
// 如果本地没有记录文件,则新建一个从零开始
fs.writeFileSync('./menu_id', '0')
} else {
id = menu_id.toString()
// 某页面数据库储存的数据
let push_sql = `
SELECT [selector] FROM [from] where [where] order by id;
`
// console.log(push_sql)
// 执行数据库语法,请自行封装
let ret = await util.sqlHandle(push_sql)
// 推送的页面数组
let pages = []
ret.forEach(({ id }, idx) => {
// 添加每一项进数组
pages.push({
path: '/pages/detail/index',
query: `id=${id}`
})
// 最后一项的时候,本地存一下进度 ID
if(idx === ret.length - 1) {
fs.writeFileSync('./menu_id', menu.id)
}
})
// 获取微信 access_token,请自行封装
let { data } = await local.get('/wx/access_token')
// 推给微信
await axios.post(`https://api.weixin.qq.com/wxa/search/wxaapi_submitpages?access_token=${data.access_token}`, {
pages,
})
// 其他,愿意的话可以做做安全判断
}
})
}
其他语言参考处理即可,具体业务具体逻辑。
其他优化方面
顺便提一下,以下几方面:
onShareAppMessage 时候配置 title 与 image
sitemap
web-view 不收录完事。
小程序页面效果--如何实现滚动列表左右半透明为了更好的体验左右滑动,而且更加美观,我们常常会做如下效果:通过伪类+渐变实现左右半透明的滚动列表,微信小程序同样也适用,渐变的兼容性不太好,所以我们需要针对不同的浏览器写不同的代码。
内置对象Request & Response可以在 Context 的实例上获取到当前请求的 Request( ctx.request ) 和 Response( ctx.response ) 实例。ctx.response.body= 和 ctx.body= 是等价的。
半个月前给客户做了一个老小程序的 SEO 的初步优化计划,合计费时约 2 天左右,个中细节比较多, 这里举例两个比较重要,但是又不算难改的优化点。前端优化:跳转的 URL 可以直接打开简单可以测试为,分享出去的卡片,均可以直接打开(请务必测试是否登录,神坑)。这里牵扯到两个问题。页面渲染逻辑query 所携带的参数组件内 URL 问题第一个问题会牵扯到后端接口下发的内容,比如这样的场景:后端下发了一个列表数据,种种原因导致列表中就包含了点击列表后详情所要展示的所有内容,然后分享出去的是详情。
最近有几个小程序用到了图表,把我一顿折腾。所以来讲一下使用图表时所遇到的问题。我们所用到的是 ECharts 的微信小程序版本 ;它提供了一个小程序原生的组件,然后我们只需要在相关页面引用改组件就好了。使用前准备先下载 ecomfe/echarts-for-weixin 中 ec-canvas 整个文件夹里面的文件引用:然后在你的页面中 的 json文件中 引用。当然你也可以作为全局组件写在app.json 中。
增强微信小程序API,远离回调地狱增强微信小程序API为什么要增强微信小程序API微信小程序因其双线程框架,导致大部分API都是异步API,比如,最常用的wx.request。而小程序的API的设计,都是采用回调形式。这样,业务过于复杂的时候,就会陷入回调地狱中,而且代码的可读性也变差。材料准备提到异步编程,Promise就该闪亮登场了。Promise微信小程序有众多的API,总不能用到哪个,封装哪个,这样太繁琐了,还是得统一封装一下,复制一套微信小程序API,代理异步方法,封装成Promise。
小程序开发的未来方向在全球科技创新的浪潮中,小程序以其独特的优势和潜力,正逐渐成为连接用户与服务的桥梁。深圳,这座科技创新的前沿城市,更是小程序开发的热土。小程序被看作是未来科技发展的重要方向,其应用场景正在不断扩展,从电商、教育到医疗等行业,都看到了小程序带来的便捷和高效。专家预测,随着AI技术的融入,小程序将更加智能化,提供更加个性化的服务。深圳的小程序开发行业有着得天独厚的优势。这里聚集了大量的高科技企业和创新人才,为小程序的开发提供了强大的支持。同时,政府的扶持政策也为这个行业注入了活力。
深圳,这座充满创新与活力的城市,是小程序开发的热土。想要打造一个高效、用户友好的小程序?以下步骤将指引你从零开始,成功构建你的小程序。市场研究和用户洞察了解你的目标市场和用户需求是第一步。通过问卷调查、用户访谈等方式,收集关于用户期望和市场需求的信息。明确小程序目标与功能确定你的小程序要解决的问题,明确业务目标和提供的服务类型。清晰的产品定位是成功的关键。选型技术栈和开发平台选择适合的开发工具和平台,如微信小程序、支X宝小程序等。
小程序作为一种新兴的应用程序,具有用户体验好、流量入口丰富、营销渠道新颖等优势,能够为企业带来更多的商业机会和竞争优势。以下是一些关键原因:流量入口成为竞争焦点微信拥有超过10亿的日活跃用户,相较于日活用户仅1亿的百度,其流量优势显而易见。小程序通过微信这一庞大平台,为企业提供了巨大的流量入口。小程序推动互联网变革公主号让每个人都有机会成为自媒体,商家可以根据产品定位和目标人群进行精准匹配,激活和变现流量。小程序进一步推动了互联网的变革,为企业提供了更多的营销机会。