发布时间:2025-04-08 11:25 浏览次数:250
内置对象
Request & Response
可以在 Context 的实例上获取到当前请求的 Request( ctx.request ) 和 Response( ctx.response ) 实例。
ctx.response.body= 和 ctx.body= 是等价的。
[!] 需要注意的是,获取 POST 的 body 应该使用 ctx.request.body ,而不是 ctx.body
Controller
框架提供了一个 Controller 基类,并推荐所有的 Controller 都继承于该基类实现。这个 Controller 基类有下列属性:
ctx - 当前请求的 Context 实例。
app - 应用的 Application 实例。
config - 应用的 配置 。
service - 应用所有的 service 。
logger - 为当前 controller 封装的 logger 对象。
Service
框架提供了一个 Service 基类,并推荐所有的 Service 都继承于该基类实现。 Service 基类的属性和 Controller 基类属性一致,访问方式也类似
中间件
编写中间件
一个中间件是一个放置在 app/middleware 目录下的单独文件,它需要 exports 一个普通的 function,接受两个参数:
options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来。
app: 当前应用 Application 的实例。
// app/middleware/error_handler.js
module.exports = () => {
return async function errorHandler(ctx, next) {
try {
await next();
} catch (err) {
// 所有的异常都在 app 上触发一个 error 事件,框架会记录一条错误日志
ctx.app.emit('error', err, ctx);
const status = err.status || 500;
// 生产环境时 500 错误的详细错误内容不返回给客户端,因为可能包含敏感信息
const error = status === 500 && ctx.app.config.env === 'prod'
? 'Internal Server Error'
: err.message;
// 从 error 对象上读出各个属性,设置到响应中
if (status === 422) {
ctx.body = {
code: ctx.ERROR_CODE,
data: error,
msg: '参数错误'+status
};
}
if (status === 500) {
ctx.body = {
code: 500,
data: '',
msg: '服务端错误-----'+error
};
}
ctx.status = 200;
}
};
};复制代码
使用
在应用中使用中间件
在应用中,我们可以完全通过配置来加载自定义的中间件,并决定它们的顺序。
如果我们需要加载上面的 gzip 中间件,在 config.default.js 中加入下面的配置就完成了中间件的开启和配置:
// 加载 errorHandler 中间件
config.middleware = ['errorHandler']复制代码
小程序页面效果--如何实现滚动列表左右半透明为了更好的体验左右滑动,而且更加美观,我们常常会做如下效果:通过伪类+渐变实现左右半透明的滚动列表,微信小程序同样也适用,渐变的兼容性不太好,所以我们需要针对不同的浏览器写不同的代码。
内置对象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亿的百度,其流量优势显而易见。小程序通过微信这一庞大平台,为企业提供了巨大的流量入口。小程序推动互联网变革公主号让每个人都有机会成为自媒体,商家可以根据产品定位和目标人群进行精准匹配,激活和变现流量。小程序进一步推动了互联网的变革,为企业提供了更多的营销机会。