c语言查单词小程序,【附源码】小程序初窥之简单查单词

新年假期百无聊赖,于是就看了一下微信小程序的开发方法,花了两天时间入了个门,这里记录一下。

阅读之前,先确定你知道基本的 html+css+js 语法,这样就能更好地和我一样,以一个新手的视角来理解小程序。

目标

目标是编写一个查单词的小程序,很明显需要一个输入框(如果有一个placehoder就更好了),然后再加上一个按钮,点击之后如果成功就显示结果,如果失败就提示失败。查词api使用扇贝api。

所以最后为了简单起见,界面的最终形态就是这样:

1dbd6d4a2a724a5e274fa9fca64033cd.png

文件结构

小程序里的最主要的文件有四种: .js .json .wxml .wxss

简单理解就是:

.js 用于控制页面逻辑。

.json 用于页面配置,不必须,也可以全局配置,但是页面配置权重高于全局配置。

.wxml 类似于 .html ,用于设置页面内容

.wxss 类似于 .css ,用于设置页面样式,不必须,代码也可以直接写在 .wxml 内

由此,这个迷你项目的项目结构就如下图所示:

522696acbc3ddc38fd5b7a297ffc1d68.png

唯一的页面是 index , app.js app.json project.config.json 应用于全局。

开始编码

基本设置

首先,我们要告诉小程序有哪些页面。 其次,需要设置小程序的导航栏标题,因为只有一页,所以只需要设置这一页的内容就可以了,所以统一写在 app.json 里,当然,你也可以新建一个 index.json 。

// app.json

{

"pages": [

"src/pages/index/index"

],

"window": {

"navigationBarBackgroundColor": "#ffffff",

"navigationBarTextStyle": "black",

"navigationBarTitleText": "简单查单词",

"backgroundColor": "#eeeeee",

"backgroundTextStyle": "light",

"enablePullDownRefresh": false

}

}

复制代码

页面内容

首先我们需要一个输入框,从微信文档可以看到,我们需要一个 input 控件。通过 placeholder 属性添加占位符,然后通过 bindinput 与输入事件绑定,每当有输入事件的时候,就调用 wordInput 函数。这里的 focus 与 confirm-type 含义你可以查看文档来了解。

第二步我们需要一个按钮,点击调用处理函数。所以这里我们用 bindtap 绑定一个 btnClick 函数。

最后我们需要显示翻译和例句,使用 {{}} 来绑定变量,此处的控件为 text ,它的具体的使用可以看这里

由此,我们得到了如下代码

查询

{{text}}

{{sentext}}

复制代码

页面样式

这个不多说了,大家都能看懂

/* index.wxss */

input{

border: 1px solid grey;

margin: 5%;

padding: 5px;

border-radius:3px;

}

button{

/* width: 80%; */

margin: 5%;

}

.textView{

margin: 5%;

}.senView{

margin: 5%;

}

复制代码

编写函数

获取输入框内容

之前我们已经为 bindinput 这个输入事件绑定了 wordInput 函数,现在就来实现它。这个函数的目标是捕捉输入的内容,并保存下来。

在 index.js 里,我们写下第一个函数,先注册一个变量,然后通过函数赋值。

// index.js

Page({

/**

* 页面的初始数据

*/

data: {

text:"",

sentext:"",

checkWord:null

},

wordInput: function(e){

console.log(e);

this.setData({checkWord:e.detail.value});

}

})

复制代码

由此,我们将每一次输入结果实时地保存了起来。

网络请求

根据api文档,我们要先写两个网络请求函数,发送待翻译的信息,接收结果。这次在 app.js里写这个函数,这样未来如果有需要可以复用。这里的参数 cb 是一个函数,用于接收返回值。

// app.js

App({

getInfo: function (words,cb){

const requestTask = wx.request({

url: 'https://api.shanbay.com/bdc/search/',

data: {

word: words

},

header: {

'content-type': 'application/json'

},

success: function (res) {

cb(res.data);

}

})

},

getSen: function (wordsid,cb){

const requestTask = wx.request({

url: 'https://api.shanbay.com/bdc/example/',

data: {

vocabulary_id: wordsid,

"type": "sys"

},

header: {

'content-type': 'application/json'

},

success: function (res) {

cb(res.data);

}

})

}

})

复制代码

按钮点击事件

上面我们已经说过,我们为按钮点击事件绑定了一个 btnClick 函数,这个函数将负责调用 app.js 里的两个请求函数,获取返回值,在页面上显示内容。这里要注意的是,因为请求函数位置问题,所以要写 var app= getApp() 和 var thispage = this 。

通过api返回示例,我们看到:在查询单词意思时,需要发送英文翻译 word ,得到返回值中的 data->cn_definition->defn 和 data->id ;在查询例句时,需要发送上面获得的 id ,得到返回值中的 data->annotation 和 data->translation 。在这里值得注意的是,例句部分,扇贝在对应单词处加了

标签,这里可以用正则去掉。

于是我们的 index.js 就变成了:

// index.js

var app= getApp();

Page({

data: {

text:"",

sentext:"",

checkWord:null

},

wordInput: function(e){

console.log(e);

this.setData({checkWord:e.detail.value});

},

btnClick: function (){

var thispage = this;

app.getInfo(this.data.checkWord,function (data){

if (data.data.cn_definition){

console.log(data.data.id);

thispage.setData({ text: data.data.cn_definition.defn });

app.getSen(data.data.id,function (data){

var sen = (data.data)[0].annotation;

sen = sen.replace(/]+>/g, "");

var tran = (data.data)[0].translation;

var showText = "例句:"+"\n"+sen+"\n"+tran;

thispage.setData({ sentext: showText});

console.log(sen);

})

}else{

thispage.setData({ text: "查询不到这个单词" });

thispage.setData({ sentext: "" });

}

})

}

})

复制代码

这样,我们就完成了整个小程序的编码工作。

原文作者:PTHFLY

声明:本文来源于网络,版权归作者所有,不代表本专栏观点,有什么问题请联系我,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python连接mysql_Python爬虫进阶教程(八):MySQL 数据库连接

PyMySQL介绍PyMySql包含一个纯python的MySQL客户端库。PyMySQL的目标是成为MySQLdb的替代品,并在CPython、PyPy和IronPython上工作。版本要求python 下列之一CPython > 2.6 or > 3.3PyPy > 4.0IronPython 2.7mysql 下列之一MySQL > 4.1 (tested with on…

使用 gRPCurl 调试.NET 5的gPRC服务

介绍你用过 Curl 吗?这个工具允许你通过 http 来发送数据,现在有一个适用于gGRPC的工具,gRPCurl,在本文中,我将介绍如何下载安装这个工具,然后通过这个工具调试我们.NET 5上面的gGRC程序。安装 gRPCurlgRPC…

此 sqltransaction 已完成;它再也无法使用_手把手教你如何修眉毛,学会再也不用花钱去美容院了...

最近看到有网友在评论中询问怎么修眉毛,刚好小编我对修眉有一点研究,可能比不上专业修眉的,但是最少能看不是,今天拿出来献给大家,希望各位自己学会如何修眉毛,那样的话以后就再也不用花钱去美容院了。在此…

国产OS推广应从娃娃和体制内双管齐下

一直以来,国内桌面操作系统被微软垄断。究其根源,既有微软技术更成熟,软件生态丰富、服务完善、商业化水平更好等因素之外,也有老百姓习惯于使用Windows等因素。老百姓之所以习惯于Windows,则是因为破解版横行和微软早…

c语言铁路托运行李费用图,3.为铁路部门编写计算运费的程序。假设铁路托运行李,规定每张客票托运费计算方法是:行李重量不超过50kg...

满意答案wodfsdfeqd81推荐于 2018.10.08采纳率:51% 等级:12已帮助:5850人using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication40{class Program{static void Main(string[]…

ufo帧率测试网站_一加7游戏续航测试 满电开始玩猜猜能玩多久

业界顶级的90Hz刷新率屏幕打造沉浸式视觉体验;骁龙855移动平台加强性能输出;更加炫酷的曲面屏设计...采用无刘海式真全面屏,屏占比屏幕赠大的同时,电池容量也进一步得到提升。对于省电优化能力卓尔不群的一加7 Pro,让手…

并行模型Actor

并行开发时经常需要关注加锁和原子操作等一系列线程问题,而Actor模型内部状态由它自己维护,内部数据只能自己修改,因此Actor不需要过多关注线程问题。Actor模型Actor由状态(State)、邮箱(Mailbox&#xff0…

linux cache fs,新闻|Linux 上将出现一个新的文件系统:bcachefs

这个有 5 年历史,由 Kent Oberstreet 创建,过去属于谷歌的文件系统,最近完成了全部关键组件。Bcachefs 文件系统自称其性能和稳定性与 ext4 和 xfs 相同,而其他方面的功能又可以与 btrfs 和 zfs 相媲美。主要特性包括校验、压缩、…

cad单位_CAD制图初学入门常用技巧汇总,CAD零基础也不怕!

CAD制图初学入门的小萌新们,最苦恼的莫过于:千辛万苦,好不容易安装的CAD软件,在实际CAD设计绘图中,居然遭遇各种问题。没有CAD制图初学入门教程、缺乏CAD大神指点、CAD图纸资源极度匮乏,CAD小萌新们的成长之…

跟本菜菜一起去体验Microsoft Windows Server Code Name Longhorn Server Core

消失的菜菜又回来了,这段时间由于很多原因没及时更新blog,忘大家见谅…还记得菜菜以前给大家介绍的Microsoft Windows Server Longhorn吗?今天我给大家带来Microsoft Windows Server Code Name "Longhorn” server core.也许很多人都听说过吧?!我在简单的给大家做个简单…

乐视android版本点四下,EUI5.9+Android7.0刷机包

乐视EUI5.9系统刷机包,乐视更新了EUI5.9,不仅有语音助手还有iPhone的小白点悬浮球,功能齐全,界面简单,实在是应该给程序员点个赞!乐视EUI5.9系统刷机包更新内容:设置 新增悬浮球功能管家 新增应…

得出来的视差图左边有黑色补上原图_掌握这10个抠图方法,帮你轻松应对大部分抠图工作!(动图演示...

新手只要掌握今天这10个方法,就足够对付绝大部分的抠图工作了。1、橡皮擦工具橡皮擦工具,更多时候跟“抠图”看似没啥关系,然而,竟然它能起到“擦除”的作用,那么就完全可以用来抠图去背了,它的键盘快捷键是…

win10右键一直转圈_Win10电脑开机一直转圈无法进入系统的解决方法

相信很多用户在安装Win10系统之后,常常会出现一些问题,其中就有电脑开不了机一直在转圈的情况,那么遇到电脑开机一直在转圈怎么办呢?下面笔者就针对这一情况和大家介绍Win10系统电脑开不了机一直在转圈的解决方法。解决方法开机马…

跨平台导PDF,结合wkhtmltopdf很顺手

前言好东西要分享,之前一直在使用wkhtmltopdf进行pdf文件的生成,常用的方式就是先安装wkhtmltopdf,然后在程序中用命令的方式将对应的html生成pdf文件,简单而且方便;但重复的编码使得想在wkhtmltopdf基础上进行封装&am…

ueditor如何设置上传图片的高度宽度_怎么设置天猫主图

天猫主图很多人都设置过,不过,新手第一长主图往往不是很在行,所以也不懂怎么设置?那今天,麦顶电商就给大家科普下关于天猫长主图的知识,想要学习设置长主图的店主,这期的内容也正好适合你们。用…

鸿蒙系统2020正式版,鸿蒙2.0来了!华为开发者大会HDC 2020宣布

原标题:鸿蒙2.0来了!华为开发者大会HDC 2020宣布华为官方宣布,2020年度华为开发者大会“HDC Together”将于9月10日至9月12日在东莞松山湖举办,早鸟门票明天起开售。根据预告,本次大会将带来主题演讲、技术论坛、行业大…

洋哥!我要进大厂!

阅读本文大概需要4分钟。最近不少读者咨询洋哥如何进大厂,回答的多了就想着要不整理出一个系列文章出来。说干就干,第一期先写写应届毕业和刚工作不久的计算机专业的童鞋如何进大厂。先说说必须要做到的几件事:第一,学校内的课程&…

调整png的不透明度_TGA与PNG的优劣对比

一、TGA与PNG的特点(一)PNG 解码混乱 不稳定 有时候不能识别 放在AE里呈像杂质,斑点极多。PNG相当于视频格式中AVI。而TGA 更接近原始格式,更安全稳定,两者质量单独的最优无损情况下效果差不多。图1TGA格式二值化后放到…

这难道不是.NET5的bug? 在线求锤?

hello,最近在对一个使用.NET5项目的认证授权系统进行重构,对.NET 5的授权中间件的源码有些看法。也希望同学们能帮我理解。一个朴素的需求这是一个api项目,默认所有的api都需要授权, 少量散落在Controller各处的api不需要授权访问…

win2008r2用户账户控制什么意思_养老保险统筹账户是什么意思?有什么用?

我国《社会保险法》规定:基本养老保险实行统筹账户和个人账户相结合的方式。对于在职职工来说,养老保险费分为单位缴费和个人缴费两部分;单位一般按照缴费基数的20%划入到统筹账户中,个人按照缴费基数的8%计入到个人账户里&#x…