内容简介:小程序开放了云开发能力,为开发者提供了一个可以很快速构建小程序后端服务的能力,作为一名对新技术不倒腾不快的前端,对此也是很感兴趣的;而Taro 是凹凸实验室推出的,基于React 语法规范 的多端开发解决方案,较之于mpvue 或者wepy,由于年轻,坑还比较多,但是很适合我这种倾向用React 开发的人(具体对比可以参考小程序开发框架技术分析选型)。我结合这两者,使用cheerio和superagent 抓取了用例.jp, 开发了一个
小程序开放了云开发能力,为开发者提供了一个可以很快速构建小程序后端服务的能力,作为一名对新技术不倒腾不快的前端,对此也是很感兴趣的;
而Taro 是凹凸实验室推出的,基于React 语法规范 的多端开发解决方案,较之于mpvue 或者wepy,由于年轻,坑还比较多,但是很适合我这种倾向用React 开发的人(具体对比可以参考小程序开发框架技术分析选型)。
我结合这两者,使用cheerio和superagent 抓取了用例.jp, 开发了一个 《日语用例助手》 ,由于只是练手,写得比较粗糙,还是很无耻地希望求个star
入门踩坑
云开发篇
- 环境搭建
云开发可以通过下列两种方式创建:
-
使用quickstart(云开发快速启动模版)创建项目
这种方式会在目录下同时创建名为miniprogram ,带有云开发调用范例的小程序基础模板和名为cloudfuntions 的存放云函数的目录, 由此即可开始全新的项目;
-
基于现有的小程序使用云开发
在小程序目录下创建一个文件夹作为你的云函数目录,然后在project.config.json 文件中新增字段"cloudfunctionRoot": "你的云函数目录",即可以在微信开发者 工具 中看到目录的图标变成了云,在此目录下创建云函数即可;
- 云函数编写
使用微信开发者工具在云函数目录下创建一个云函数时,会根据名称创建一个目录,目录中包含一个index.js 和package.json。
在小程序中使用如下方式调用云函数
wx.cloud.callFunction({ name: '云函数名称', data: { key1: 'value1', key2: 'value2' } }).then((res) => { console.log(res); }).catch((e) => { console.log(e); }); 复制代码
index.js的入口函数如下所示:
//云函数入口函数 exports.main = async (event, context) => { // 参数获取在event 中获取,如使用上面的调用函数后,获取data使用 event.key1、event.key2即可 const { key1, key2 } = event; return { query: { key1, key2 } } } 复制代码
每个云函数可视为一个单独的服务,如果需要安装第三方依赖,只需要在该目录点击右键,选择 在终端中打开
, 并 npm install
依赖即可
需要注意的是,每个云函数都是独立的,所需要的依赖都需要在对应的目录下进行 npm install
,但这样就会使得项目变得十分庞大且不优雅。因此,接下来我介绍一下tcb-router
- 使用tcb-router 管理路由
tcb-router 是腾讯云团队开发的,基于 koa 风格的小程序·云开发云函数轻量级类路由库,主要用于优化服务端函数处理逻辑。
使用tcb-router的方法很简单
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) } }) 复制代码
Taro篇
- 环境搭建
npm install -g @tarojs/cli taro init myApp 复制代码
- 遇到的坑
- Api 支持不足
由于Taro 对微信的一些新api 并没有支持到,比如使用云开发时需要用到 wx.cloud
,Taro 并没有支持,但亲测是可以直接使用 wx
变量,但是会被eslint 提醒,看着十分不悦,可以在 .eslintrc
文件中增加以下代码;
"globals": { "wx": true }, 复制代码
爬虫篇
superagent 是一个非常实用的http请求模块,用来抓取网页十分有用,使用也十分简单,以下是我在抓取 yourei.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); }); }); } 复制代码
cheerio 是一个轻型灵活,类jQuery的对HTML元素分析操作的工具。在进行一些server端渲染的页面以及一些简单的小页面的爬取时,cheerio十分好用且高效。
在使用 superagent
抓取了网页内容后,可以使用如下方式解析页面代码
// 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, }; }); 复制代码
总结
- Taro
如果你是React 开发者,需要开发多端小程序,或者原有React 项目想迁移到小程序,Taro 是个不错的选择,但还有很多坑没有填好,希望它的发展越来越好
- 云开发
如果你是个人开发者,想尝试小程序开发又不想或者难以自己搭建服务器,云开发是个好选择,容易上手且十分敏捷。
但云开发后续有可能收费,如果没有自己的服务器,云开发可以作为过渡时期使用,个人持观望其发展的态度,而且小程序支持同时使用请求云函数及自有服务器,并不冲突,因此可以作为一些轻量的辅助;
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 「小程序JAVA实战」小程序搜索功能(54)
- 「小程序JAVA实战」小程序视频封面处理(47)
- 「小程序JAVA实战」小程序开源搜索组件(52)
- 「小程序JAVA实战」小程序的关注功能(64)
- 「小程序JAVA实战」小程序注册界面的开发(29)
- 「小程序JAVA实战」小程序数据缓存API(53)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Complexity and Approximation
G. Ausiello、P. Crescenzi、V. Kann、Marchetti-sp、Giorgio Gambosi、Alberto M. Spaccamela / Springer / 2003-02 / USD 74.95
This book is an up-to-date documentation of the state of the art in combinatorial optimization, presenting approximate solutions of virtually all relevant classes of NP-hard optimization problems. The......一起来看看 《Complexity and Approximation》 这本书的介绍吧!