当前位置: 首页 > news >正文

微信小程序—智能小蜜(基于智能语义解析olami开放平台)

概述

该程序支持功能有查天气、查诗词、查百科、算算术、查日历、看笑话、看故事、聊天等,通过用户输入语句智能解析用户意图输出相应答案。

详细

代码下载:http://www.demodashi.com/demo/11339.html

一、准备工作

 

1、电脑需要安装有微信web开发者工具,如果没有请点击这里安装:下载地址

2、成为微信小程序开发者,需要用到appID,详细流程见微信公众平台流程介绍。

 

二、程序实现

1、扫码体验:

gh_0f55dac70965_258.jpg

2、项目目录如下:

  • main为首页面,实现天气查询(使用modal组件显示弹出框修改城市),和导航子页面诗词、日历、数学、单位转换、24点游戏。

  • joke为笑话页,实现看笑话、看故事。

  • baike为百科页,实现百科知识查询。

  • other为其他页,实现广告页轮播。

  • detail为从main页导航到的子页面,实现功能有诗词、日历、数学、单位转换、24点游戏、聊天等。

QQ图片20170825134746.jpg

3、主要代码说明:

1)、首页:

a、支持天气查询(使用modal组件显示弹出框修改城市);

main.wxml

<modal title="请输入城市名" hidden="{{modalHidden}}" bindconfirm="modalConfirm" bindcancel="modalCancel">
    <view class="setcity">
      <image style="width: 40px; height: 40px; " mode="aspectFit" src="../../image/city.png"></image>
      <input class="input" placeholder="点此手动输入" placeholder-style="color:#6aa84f" maxlength="10" confirm-type="send" bindblur="bindConfirmControl" />
    </view>
  </modal>

main.js

modalConfirm: function (options) {
    var self = this;
    self.setData({
      modalHidden: true
    });
    var city = wx.getStorageSync("city")
    if (typeof city != 'undefined' && city != ''){
      NliProcess("今天" + city + "的天气", self);
    }
  },

  modalCancel: function (options) {
    var self = this;
    self.setData({
      modalHidden: true
    });
    wx.clearStorage();
  },

  bindConfirmControl: function (e) {
    var inputTxt = e.detail.value;
    if (inputTxt != '')
    wx.setStorageSync("city", inputTxt);
  }

b、支持导航到子页面诗词、日历、数学、单位转换、24点游戏。

main.js

appClick: function (options) {
    var id = options.currentTarget.dataset.id;
    wx.navigateTo({
      url: '../detail/detail?id=' + id
    })

  }

main.wxml

<view class="list">
    <block wx:for="{{app_display}}">
      <view class="text-app" data-id="{{item.num}}" bindtap="appClick">
        <image class="img" style="width: 60px; height: 60px; " mode="widthFix" src="{{item.imgurl}}"></image>
        <text class="text-app-info">{{item.display}}</text>
      </view>
    </block>
  </view>

2)、支持搜索诗词、日历、数学、单位转换、24点游戏(使用radio组件实现单项选择器)。

从main页跳转到detail页时,传的参数“id”可在detail.js的onLoad方法中获得。由id(即checkedno)值来设置radio的初始选项。

detail.js

onLoad: function (options) {
    var self = this;
    checkedno = options.id;  
    self.setData({
      checkedno: checkedno,
      failTxt: expList[checkedno]
    })   

  }

detail.wxml

<radio-group class="radio-group" bindchange="radioChange">
  <label class="radio" wx:for="{{radioitems}}">
    <radio value="{{item.name}}" checked="{{index == checkedno}}"/>{{item.value}}
  </label>
</radio-group>

3)、支持查百科。

icon组件type值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear。这里用的search类型。

baike.wxml

<view class="text-search">
    <icon type="search" size="25" color="blue" class="searchIcon" />
    <input class="input" placeholder-style="color:#6aa84f" maxlength="50" placeholder="点此手动输入" value="{{inputTxt}}" confirm-type="send" bindconfirm="bindConfirmControl" bindfocus="bindFocusClear" />
  </view>

4)、使用组件swiper实现图片轮播。

other.wxml

<swiper indicator-dots="true" autoplay="true" interval="4000" duration="2000">
  <swiper-item>
    <image src="../../image/img1.png" class="slide-image"/>
  </swiper-item>
  <swiper-item>
    <image src="../../image/img2.png" class="slide-image"/>
  </swiper-item>
  <swiper-item>
    <image src="../../image/img3.png" class="slide-image"/>
  </swiper-item>
  <swiper-item>
    <image src="../../image/img4.png" class="slide-image"/>
  </swiper-item>
</swiper>

以下是背景图片设置方式:

other.wxss

page{
  background-image:url('https://img-blog.csdn.net/20170812173448986?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTgyNzUwNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center');
  background-size: cover;
}

三、运行效果

1、运行截图如下:

QQ图片20170814165016.jpg

 

QQ图片20170814165009.jpg

 

QQ图片20170814165031.jpg

 

QQ图片20170814165022.jpg

 

QQ图片20170814164701.jpg

四、其他补充

1、开发过程中常见问题:

1)、从视图层到逻辑层的数据传递。详情可参考微信小程序—事件

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

Page({
  tapName: function(event) {
    console.log(event)
  }
})

其中event的信息如下:

{
"type":"tap",
"timeStamp":895,
"target": {
  "id": "tapTest",
  "dataset":  {
    "hi":"WeChat"
  }
},
"currentTarget":  {
  "id": "tapTest",
  "dataset": {
    "hi":"WeChat"
  }
},

2)、currentTarget 与 target的区别。微信小程序—冒泡/非冒泡事件

target:触发事件的源组件。

currentTarget:事件绑定的当前组件

如以下例子中,点击 inner view 会先后触发handleTap3和handleTap2(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发handleTap2,点击 outter view 会触发handleTap1。

<view id="outter" bindtap="handleTap1">
  outer view
  <view id="middle" catchtap="handleTap2">
    middle view
    <view id="inner" bindtap="handleTap3">
      inner view
    </view>
  </view>
</view>

3)、做微信小程序时,要严格遵守小程序审核标准,注意:特殊行业所需资质材料

 

代码下载:http://www.demodashi.com/demo/11339.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

转载于:https://www.cnblogs.com/demodashi/p/8491105.html

相关文章:

  • SCCM 2016 分发.msi 软件
  • cnpm新建vue项目
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • Python_函数
  • POJ 2392 Space Elevator(多重背包,排序)
  • ubuntu17.04中启动tnsorboard过程
  • BZOJ3601 一个人的数论
  • 亚马逊推出FreeTime Android应用程序,开放适合儿童资源
  • SpaceX发射机密间谍卫星,系与美国防部签订的第一单合作
  • 无人机给你送餐了,快来签收!
  • 作为“云计算”的延伸,“雾计算”只是一种炒作吗?
  • RT-Thread的线程(任务)处理 rt_thread_create/rt_thread_init区别
  • 命令收集
  • 为实现全局化产品线布局,瑞芯微宣布旗下芯片RK3399 Linux系统开源
  • mongodb--安装和初步使用教程
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【知识碎片】第三方登录弹窗效果
  • Git 使用集
  • jquery cookie
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • yii2权限控制rbac之rule详细讲解
  • 动态魔术使用DBMS_SQL
  • 工作手记之html2canvas使用概述
  • 关于使用markdown的方法(引自CSDN教程)
  • 精彩代码 vue.js
  • 开发基于以太坊智能合约的DApp
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 第二十章:异步和文件I/O.(二十三)
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • # 数论-逆元
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $(selector).each()和$.each()的区别
  • $NOIp2018$劝退记
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .bat批处理出现中文乱码的情况
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net Signalr 使用笔记
  • .考试倒计时43天!来提分啦!
  • @ConditionalOnProperty注解使用说明
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [100天算法】-实现 strStr()(day 52)