前言
迷你计划开放了云开发功能,使开发人员能够快速构建迷你计划后端服务。作为不太忙于新技术的前端,我也对此非常感兴趣。
塔罗(Taro)是一种基于凹入和凸实验室启动的语法规范的多端开发解决方案。与Wepy相比,它很年轻并且有更多的陷阱,但它非常适合倾向于使用像我这样的发展的人。
我将这两个使用并爬上了用例。JP并开发了“日本用例助理”。
坑1。云开发第1.1章环境构建
可以通过以下两种方式创建云开发:1。使用(云开发快速启动模板)创建一个项目:
此方法将创建一个小程序基本模板,名为“云开发调用样本”和目录中名为“云功能”的目录,然后启动一个全新的项目。
2。根据现有小问题使用云开发:
在小程序目录下创建一个文件夹作为你的云函数目录,然后在project.config.json 文件中新增字段"cloudfunctionRoot": "你的云函数目录",即可以在微信开发者工具中看到目录的图标变成了云,在此目录下创建云函数即可;
1.2云功能写作
当使用微信开发人员工具在云功能目录中创建云函数时,将基于名称创建一个目录,其中包含一个.js和.json。
在中,使用以下方法调用云功能:
wx.cloud.callFunction({
name: '云函数名称',
data: {
key1: 'value1',
key2: 'value2'
}
}).then((res) => {
console.log(res);
}).catch((e) => {
console.log(e);
});
.js的输入功能如下:
//云函数入口函数
exports.main = async (event, context) => {
// 参数获取在event 中获取,如使用上面的调用函数后,获取data使用 event.key1、event.key2即可
const { key1, key2 } = event;
return { query: { key1, key2 } }
}
每个云功能都可以视为单独的服务。如果您需要安装第三方依赖项,则只需要右键单击目录,选择“终端”和NPM依赖项。
应该注意的是,每个云功能都是独立的,并且所需的依赖项需要在相应的目录中为NPM,但这将使项目非常大且毫无意义。因此,接下来我将介绍TCB-。
1.3使用TCB-路由
TCB-是一个基于KOA样式云开发云功能轻量级路由库的迷你程序,主要用于优化服务器端功能处理逻辑。
使用TCB-的方法很简单:
const TcbRouter = require('tcb-router');
exports.main = (event, context) => {
const app = new TcbRouter({ event });
app.router('路由名称', async (ctx) => {
//原有的event需要通过ctx._req.event 获取
const { param1, param2 } = ctx._req.event;
ctx.body = { key1: value1 };
});
})
目前,小程序的调用方法还需要更改为:
wx.cloud.callFunction({
name: '云函数名称',
data: {
$url: '路由名称',
// 其他数据
param1: 'test1',
param2: 'test2'
},
success: res => {},
fail: err => {
console.error(`[云函数] [${action}] 调用失败`, err)
}
})
2. Taro第2.1章环境建设
npm install -g @tarojs/cli
taro init myApp
2.2遇到的陷阱1。API支持不足
由于塔罗不支持微信上的某些新API,例如使用WX。当使用云开发时,芋头不支持它,但是亲自测试您可以直接使用WX变量,但会提醒它,这是非常不愉快的。您可以将以下代码添加到。文件:
"globals": {
"wx": true
},
2。无法使用#map以外的方法来操纵JSX数组。
3。不允许在JSX ()中传递JSX元素(TARO/NO-JSX-IN-)。
3。爬行者第3.1章
这是一个非常实用的HTTP请求模块,它对于爬网页非常有用,并且也非常易于使用。以下是我在爬行.jp时使用的代码:
// const superagent = require('superagent');
// ...
function crawler(url, cb) {
return new Promise((resolve, reject) => {
superagent.get(url).set({
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}).end(function (err, res) {
if (err) {
reject(err);
return;
}
resolve(res);
});
});
}
3.2
它是一种轻巧,灵活的基于类的工具,用于分析HTML元素。在爬一些末端渲染页面和一些简单的小页面时,它非常有用和有效。
抓取网页内容后,您可以以以下方式解析页面代码:
// const cheerio = require('cheerio');
// ...
const result = crawler(apiUrl).then((res) => {
// 使用load 之后,$ 即可同jquery 一样使用选择器来选择元素了
const $ = cheerio.load(res.text);
const categories = [];
$('[data-toggle]').each((i, ele) => {
// 可以使用.text()、.html() 等方式获取元素的内容
categories.push($(ele).attr('href'));
});
return {
list: categories,
};
});
摘要1。芋头
如果您是开发人员,需要开发多端小程序,或者原始项目希望被移至小程序,那么塔罗是一个不错的选择,但是仍然有许多陷阱尚未填补。我希望它会越来越好。
2。云发展
如果您是个人开发人员,并且想尝试MINI 开发,但不想自己构建服务器,云开发是一个不错的选择,易于使用且非常敏捷。