精华内容
下载资源
问答
  • 云开始学什么
    千次阅读 多人点赞
    2022-05-23 15:33:30

    前言

    今年是亚马逊云科技成立的第16个年头,也是云计算行业诞生的16周年。作为云计算时代的“领头羊”,亚马逊2006年推出了名为Amazon Web Services(AWS)的新产品。AWS背后的想法是提供一个平台,同亚马逊内部使用的平台一样,将其作为服务向公众发布。通过将平台作为服务向公众发布,亚马逊进入了一个称为公有云的市场。作为云计算的领头公司有着得天独厚的优势,所以在亚马逊平台进行云计算相关知识的学习,是一个非常好的选择。而且现在平台还提供了重磅福利,亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。亚马逊AWS 海外区域账户免费套餐
    仅以此篇记录我在亚马逊云平台的技术成长之路,简单阐述一下是怎么从一个一无所知的小白一步一步成长起来的,是亚马逊平台陪着我一路成长和提升。

    基础篇

    在学习了解亚马逊云科技平台之前,我们需要先学习一个概念就是云计算。云计算通过互联网按需提供IT资源,并且采用按使用量付费的定价方式。你可以根据需要从云提供商那里获得技术服务,例如计算能力、存储和数据库,而无需购买、拥有和维护物理数据中心及服务器。
    亚马逊云科技平台是帮助企业和开发人员使用Web服务来构建可扩展的复杂应用程序。
    我们可以将云计算平台用于多种领域,例如应用程序的托管,内容的分发,搭建网站,企业IT,数据库等等。
    从一开始的一无所知,在亚马逊官网学习之后,对云计算有了初步的了解,在我们深入学习之前我们需要明确我们为什么要学习云计算,云计算又有什么优点。

    • 敏捷性:它可以让你轻松使用各种技术,从而可以更快地进行创新,并构建几乎任何你想要的东西。您可以快速启动云资源,在云服务器进行一系列的学习和操作。
    • 节省成本:云计算可以将您的固定支出转变为可变支出,并且只需按实际使用量进行付费。由此,可变的经济支出比固定的经济支出节省很多。
    • 短时间内进行全局部署:借助云平台,您可以扩展到地理区域,并在几分钟内进行全局部署。例如:AWS的基础设施遍布世界各地,你只需要点击几下鼠标即可在多个物理位置部署应用程序。

    进阶篇

    对亚马逊云科技平台有了初步的了解之后,我们就可以进行一些深入的学习和操作了。我当时在亚马逊平台发现的宝藏资源就是培训和认证课程,亚马逊提供的数字培训和课堂培训。数字化培训可以让您在线学习并自己掌握学习进度,向专家老师学习最佳实践,轻松提升自身本领。除此之外,还有虚拟培训,让你可以随时随地的学习课程。课程适用范围很广,不管你是刚入门的小白还是正在提升的IT程序员,AWS培训和认证课程都可以帮助你提升自己。
    而且亚马逊云平台的培训课程也是十分的细致,按角色培训(架构师、云从业者、开发人员…),按解决方案培训(高级联网、数据分析、机器学习…)。
    在这里插入图片描述
    我当时学习机器学习就是在亚马逊平台寻找的培训课程,课程质量非常高,对于机器学习方面技能的提升有很大的帮助。课程链接放在这里,便于大家参考学习:AWS Skill Builder。如果你是新手,寻找更加明确的起点帮助你确定以后自己的职业,或者是积累机器学习相关方面的知识,建议你是从AWS学习计划开始;如果你已经掌握了一部分的相关知识,那你就可以通过AWSj进阶指南深入学习探索机器学习,并且为 AWS Certified Machine Learning – Specialty 认证考试做好准备。我呢,一开始就是一个“小白”,肯定是从头开始学起。学习课程之前需要注册一个亚马逊账号,只需要通过一个邮箱就可以了,非常简单也不需要过多的阐述。接下来就是进入我们的正题,学习机器学习课程。
    在这里插入图片描述
    本课程内容一共分为了13小节,13小节一共是36h时长,可以说是非常简短的一个课程,但是意义巨大,条理非常清晰,每一小节都有明确的主题和内容介绍,每一小节中也会分为几个小的部分。不要小看这个小小的课程,对我的帮助是非常巨大的。让我从一开始一个一无所知的小白,渐渐明白了什么是人工智能,明白了什么是机器学习,明白了什么是深度学习。机器学习是专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。并不是我一开始简单认为的机器学习就是学习机器人。后来又详细学习了机器学习术语和过程,这里介绍的非常详细,让我学到了很多。
    在这里插入图片描述
    再后来就是详细学习了Amazon SageMaker(一站式机器学习平台),Amazon SageMaker通过整合专门为机器学习构建的广泛功能集,帮助数据科学家和开发人员快速准备、构建、训练和部署高质量的机器学习模型。官网也是有详细的分步指南,而且可以免费试用Amazon SageMaker,有兴趣的小伙伴完全可以尝试学习一下。
    亚马逊还有一些认证考试,对自己的技能水平的一种检验方式。其中包括了AWS认证云从业者、AWS认证解决方案架构师,AWS认证数据库等等,而且也是有详细的考试认证指南,包括适合哪些人员参加,考试指南,考试样题等。
    例如 AWS Certified Cloud Practitioner 认证考试面向能够有效证明AWS云知识总体掌握情况的个人。本开始验证应试者的能力包括解释AWS云的价值、了解安全最佳实践、了解 AWS 云成本、经济性和账单实践 、描述和识别核心 AWS 服务的定位,包括计算、网络、数据库和存储 等等。考察的内容AWS云概念、 AWS 云中的安全性和合规性、了解核心 AWS 服务 、了解 AWS 云的经济性。考试题型分为单选题和多选题,还有一些不计分题目,需要注意的是考试中是不会标明这些不计分的题目的。所以想要通过考试认证的小伙伴,一定要认真学习,提升自己才能顺利地通过考核。 认证的结果并不是最重要的,而是你前期的准备,你可以学到很多东西,让自己有很大的提升,毕竟知识才是无价的嘛。

    番外篇

    学习技术不仅仅使自己孤身一人地研究技术文档,动手实操,与他人交流也是非常重要的,可能他人很多对一方面知识独特的见解是你一直没有想到的。印象很深的是2021年亚马逊云科技峰会(上海站),虽然我只是参加的线上峰会但也是收获满满。2021年,亚马逊科技峰已经在中国举办了八年了,也算是中国云计算市场最早期的布道者。第八届亚马逊云科技峰会上,亚马逊全球副总裁、亚马逊云科技大中华区执行董事张文翊提到了很多重要的观点。第一点就是首次全面阐述了亚马逊云科技的中国战略,表明了希望利用全球优势和资源帮助中国企业上云的态度。第二点就是深入发展的规划,介绍亚马逊科技在人才培养和环境可持续发展方面的目标和计划,说白了是让更多人来把好的技术方案落地。我需要重点关注的就是亚马逊人才培养方面的发展,万一以后就入职了呢,嘿嘿~
    在这里插入图片描述
    也结识过几位亚马逊云在职者,与其中一位也有过很多的交流。他向我介绍了他的一些发展经历,遇到的一些困难和机遇。他说他的工作最吸引人的地方就是需要站在客户的角度换位思考,比如遇到一些初创公司的客户,就需要把自己当成是一名创业者,用一些通俗易懂的语言和简单的例子来向客户介绍出亚马逊云科技平台的优势,让客户能够诚心实意的选择亚马逊云科技平台。他也有一些挑战和困难,就是亚马逊的工作节奏很快,技术发展也十分迅速,自己需要在工作之余学习新的技术,跟上团队的步伐。其实他说的这些不仅仅是亚马逊在职的人需要做到的,我觉得是我们每个互联网人必备的品质,唯有不断地学习,不断地成长才能得到更好地发展,才能实现自己的价值。

    结语

    就全球市场来看亚马逊云科技长期处于领先地位,大概占据全球三分之一市场份额。云时代的到来,正是因为亚马逊于2006发布全球第一个云计算服务Amazon S3后,至此开启了云计算新时代,全球IT架构发现重大变革,传统IT结构向云构架转变。到如今云计算已成为全球重要基础设施,云无处不在,学习云计算相关知识就显得尤为重要,而亚马逊就是非常好的一个选择。
    亚马逊云科技专为开发者们打造了多种学习平台:

    1. 入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源。
      AWS 入门基础课程
    2. 架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。
      AWS架构中心
    3. 构建者库:了解亚马逊云科技如何构建和运营软件。
      Amazon Builders’ Library
    4. 用于在亚马逊云科技平台上开发和管理应用程序的工具包:
      用于在 AWS 上进行构建的工具

    【专属福利】
    福利一:100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。
    重磅福利一
    福利二:最新优惠大礼包,200 数 据 与 分 析 抵 扣 券 , 200 数据与分析抵扣券,200 200机器学习抵扣券,200$微服务与应用开发抵扣券。
    重磅福利二
    福利三:解决方案CloudFormation一键部署模版库
    重磅福利三

    更多相关内容
  • EPS32连接阿里-入门学习QQ群10677398081.如何建立编译环境和准备工作2.如何编译第一个工程3.如何配置阿里 辛苦编写未经允许禁止转发 大家好本人第一次使用CSDN写技术文档,如有不足之处多多指教,开门见山,本人...
  • 如何学习云原生

    2021-03-16 15:37:36
    如何学习云原生 什么原生 原生以容器、微服务、DevOps,持续交付等技术为基础建立的一套技术产品体系。...如何从零开始学习云原生 原生技术体系非常的庞大,我们可能经常听到docker,k8s(kubernetes)等相关

    如何学习云原生

    什么是云原生

    云原生以容器、微服务、DevOps,持续交付等技术为基础建立的一套云技术产品体系。这是一种新型技术体系,是云计算未来的发展方向。从1999年到2024年,本地部署和市场云化此消彼长,企业上云的速度随着虚拟化等技术的发展大大加快,未来可能将成为各大企业的一项基础能力。所以作为一名刚入行或资深的工程师,我觉得都应该对云原生相关的概念和技术了解,提升自己的核心竞争力。

    如何从零开始学习云原生

    云原生技术体系非常的庞大,我们可能经常听到docker,k8s(kubernetes)等相关的名词,其实并不止于此。

    先来看一张图:
    在这里插入图片描述

    这是来自CNCF(原生计算基金会)的云原生全景图,链接:https://landscape.cncf.io/,这里描述了云原生相关领域的项目,主要还是围绕着容器编排,治理,监控等建立起来的生态,全景图已经包含了云原生应用所关联的方方面面,可以给我们一个学习的方向与指示。

    但是大家也不要害怕,看到这么多密密麻麻的项目,大家也不用对每个项目都进行深入的研究,毕竟如果能研究并实现出其中一个项目就已经很牛逼了。但是如果只是为了了解基本的概念那就更简单了。

    学习路线

    这里不会详细到具体的linux或者计算机网络的底层知识,如果发现在学习其中有对应的疑惑的时候找对应的书籍或资料学习即可。接下来会介绍一下云原生的学习路线和一些推荐学习资源,每个人的学习方式不同,这里的学习路线只是一个个人学习思路参考,希望可以帮助到大家。

    1. kubernetes

      云原生中最重要的就是Kubernetes,简称k8s。所以我们的学习核心就是k8s,根据k8s辐射到云原生学习的其他领域,k8s可以说是云原生时代的操作系统,内部的设计是非常的复杂,每一个设计都有他运用的领域,我们可以先尝试去理解里面的一些基本概念,比如Node,Pod,Service,等资源对象,慢慢的去了解k8s的网络原理,存储原理,核心组件的运行机制,k8s的拓展等等深入的知识。

      推荐一些学习k8s资源:

      • 可以在线学习k8s的网站:https://www.katacoda.com/courses/kubernetes
      • k8s的新华字典:Kubernetes权威指南
      • 七牛云团队的k8s书籍:Kubernetes in Action
      • CNCF 官方大使张磊的教学:https://time.geekbang.org/column/intro/100015201
    2. 容器运行时

      由于所有的项目都是跑在容器里面,所以我们在学习k8s的pod的时候我们就知道我们需要学习一下容器的运行时,比如大名鼎鼎的docker,containerd等。这时候我们就开始设计到landscape的这一块内容了
      在这里插入图片描述

      推荐docker的学习资料:

      • Docker技术入门与实战,学习下一些docker的操作命令,知道如何去操作镜像,打包镜像等即可
    3. 容器仓库

      在我们学习docker的时候,知道了如何打包镜像后,这时候我们可能会有我们自己的一些项目镜像,但是我们又不想上传到dockerHub等公开仓库,我们可能会思考可不可以像gitlab一样搭建属于我们自己的镜像仓库呢?那么这时候我们就来到了landscape的这一块区域,我们可以学习着去搭建一个Harbor去存储我们的私有镜像。

    在这里插入图片描述

    1. 服务发现

    学习完容器相关的东西,我们回到我们的k8s,我们发现k8s的数据都存储在etcd中,甚至还能自己服务注册与服务发现,我们想了解一下服务注册,服务发现,配置中心,注册中心等相关的内容,于是我们就来到了landscape的这一块内容:

    在这里插入图片描述

    这里强烈推荐一波etcd,用过都说好,etcd的学习书籍:

    • 云原生分布式存储基石:etcd深入解析
    1. 代理/网关

      继续学习我们的k8s,当我们学习Service的时候,对ingress比较感兴趣,想深入了解一下网络代理,ingress网关或者api网关的时候,我们就可以根据landscape的这一部分内容进行深入的研究,比如envoy,apisix,traefik,mosn等项目。
      在这里插入图片描述

    2. 分布式存储

      在学习k8s的时候,碰到一些有状态应用,我们需要保存下一些数据信息,这时候我们可能用到一些分布式存储,这时候我们可以从landscape这一块中找寻我们需要的:
      在这里插入图片描述

    3. 可观测性

      在我们的项目都在k8s运行起来后,我们可能需要对项目的一些可观测性有需求,比如ELK日志,Promerheus监控,Skywalking,zipkin链路追踪等,我们同样可以开始学习landscape的这一块的内容:
      在这里插入图片描述

      分享资料:

      • 深入浅出Prometheus:原理、应用、源码与拓展详解
    4. 服务网格

      k8s的功能已经非常强大了,但是他主要是提供服务编排等能力,在服务治理相关能力上却显得不足了,所以我们可以学习服务网格相关的服务治理能力。

    在这里插入图片描述

    istio作为后 Kubernetes 时代的微服务治理框架,是非常值得我们去学习与关注的,推荐资料:

    • 深入浅出Istio:Service Mesh快速入门与实践(版本可能老了,可以了解)

    • 宋净超大神:https://www.servicemesher.com/istio-handbook/

    • 赵化冰大神:https://zhaohuabing.com/istio-practice/

    小总结

    云原生涉及的内容非常多,上文只是一个抛砖引玉,给各位想学习云原生领域知识的小伙伴一个导火线,实际云原生内容不止上文所列出的内容,可能学到头秃都学不完,大家可以围绕k8s找到自己感兴趣的方向去学习,祝大家在云原生领域都有所成就!

    展开全文
  • 3台云腾讯云开始hadoop学习之路

    千次阅读 2022-03-08 18:37:04
    hadoop集群学习笔记 ip 主机名 101.42.249.193 hadoop102 101.42.249.25 hadoop103 101.42.248.97 hadoop104 服务器环境准备 0.修改主机名称 ```powershell [root@hadoop100 ~]# vim /etc/hostname...

    3台云腾讯云开始hadoop学习之路笔记一

    大三党开始学习hadoop之路了,新手学习hadoop,有啥错误请大佬指教。由于自己电脑配置不够,只能买3台腾讯云服务器来学习了。以下笔记都是记录我在某破站 尚硅谷学习的过程,开始笔记,加深记忆。

    三台腾讯云的ip,主机名配置

    ip主机名
    101.42.xxx.xxhadoop102
    101.42.xxx.xxhadoop103
    101.42.xxx.xxhadoop104

    最终搭建结果

    hadoop102hadoop103hadoop104
    HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
    YARNNodeManagerResourceManager NodeManagerNodeManager

    云服务器环境准备

    0.修改主机名称

    [root@hadoop100 ~]# vim /etc/hostname
    hadoop102
    

    1.hadoop102虚拟机配置要求如下

    • 安装epel-release

    注:Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)

    [root@hadoop102 ~]# yum install -y epel-release
    

    注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作

    • net-tool:工具包集合,包含ifconfig等命令
    [root@hadoop102 ~]# yum install -y net-tools 
    
    • vim:编辑器
    [root@hadoop102 ~]# yum install -y vim
    

    2.关闭防火墙,关闭防火墙开机自启

    [root@hadoop102 ~]# systemctl stop firewalld
    [root@hadoop102 ~]# systemctl disable firewalld.service
    

    ​ 注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙

    3.创建sdy用户,并修改sdy用户的密码

    [root@hadoop102 ~]# useradd sdy
    [root@hadoop102 ~]# passwd sdy
    

    4.配置sdy用户具有root权限,方便后期加sudo执行root权限的命令

    [root@hadoop102 ~]# vim /etc/sudoers
    

    ​ 修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)     ALL
    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    sdy   ALL=(ALL)     NOPASSWD:ALL
    

    注意:sdy这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了sdy具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以sdy要放到%wheel这行下面。

    5.在/opt目录下创建文件夹,并修改所属主和所属组

    [root@hadoop102 ~]# mkdir /opt/module
    [root@hadoop102 ~]# mkdir /opt/software
    
    [root@hadoop102 ~]# chown sdy:sdy /opt/module 
    [root@hadoop102 ~]# chown sdy:sdy /opt/software
    

    6.卸载虚拟机自带的JDK

    [root@hadoop102 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 
    
    • rpm -qa:查询所安装的所有rpm软件包
    • grep -i:忽略大小写
    • xargs -n1:表示每次只传递一个参数
    • rpm -e –nodeps:强制卸载软件

    7.重启虚拟机

    [root@hadoop100 ~]# reboot
    

    8.配置服务器主机名称映射hosts文件(hadoop102为例)

    • 打开/etc/hosts
    [root@hadoop102 ~]# vim /etc/hosts
    

    添加如下内容,然后重启

    10.0.x.xx hadoop102
    101.42.xx.xx hadoop103
    101.42.xx.xx hadoop104
    

    注意:本机ip映射需填内网ip,本机对应其他ip映射需填公网ip

    在hadoop102安装JDK

    1.用SecureFXPortable传输工具将JDK导入到opt目录下面的software文件夹下面
    在这里插入图片描述

    2.解压JDK到/opt/module目录下

    [sdy@hadoop102 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
    

    3.配置JDK环境变量

    • 新建/etc/profile.d/my_env.sh文件
    [sdy@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh
    
    • 添加如下内容
    #JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
    

    在这里插入图片描述

    • source一下/etc/profile文件,让新的环境变量PATH生效
    [sdy@hadoop102 ~]$ source /etc/profile
    

    4.测试JDK是否安装成功

    [sdy@hadoop102 profile.d]$ java -version
    java version "1.8.0_212"
    Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
    

    在hadoop102安装Hadoop

    1.用SecureFXPortable文件传输工具将hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹下面

    在这里插入图片描述

    2.解压安装文件到/opt/module下面

    [sdy@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
    

    3.将Hadoop添加到环境变量

    • hadoop安装路径在/opt/module/hadoop-3.1.3

    • 打开/etc/profile.d/my_env.sh文件

    [sdy@hadoop102 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh
    
    • 在my_env.sh文件末尾添加如下内容:
    #HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    

    在这里插入图片描述

    4.让修改后的文件生效

    [sdy@hadoop102 hadoop-3.1.3]$ source /etc/profile
    

    5.测试是否安装成功

    [root@hadoop102 software]# hadoop version
    

    在这里插入图片描述

    hadoop目录结构

    1.查看Hadoop目录结构

    在这里插入图片描述

    2.重要目录

    • bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本
    • etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
    • lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
    • sbin目录:存放启动或停止Hadoop相关服务的脚本
    • share目录:存放Hadoop的依赖jar包、文档、和官方案例
    展开全文
  • 从零开始带你全面体系化地学习剪辑详解Pr工作逻辑和操作技巧,本课程累积于新片场十年影视制作经验,并参考Pr官方用户手册,力图带给你更全面、更体系化的Pr剪辑知识,有很多教程能教你做各种视频效果但很少能从视频...
  • 零基础入门小程序开发函数

    写在前面

    1,讲解视频

    https://edu.csdn.net/course/detail/26572

    2,配套笔记

    配套笔记会在csdn上免费给到大家,欢迎关注,笔记会持续更新。
    https://blog.csdn.net/qiushi_1990

    3,支持石头哥😊

    3-1,源码和配套资源获取

    目前源码和配套的一些资源暂时不免费,如果有需要的同学可以私聊石头哥,拿米来换。

    3-2,笔记电子书

    笔记我也有整理一套电子书,大家也可以私聊石头哥获取电子书版的配套笔记。电子书笔记方便后期查询知识点。

    4,问题解答(●’◡’●)

    另外石头哥提供配套解答服务。当然了,知识付费时代石头哥解答是要米的,毕竟石头哥精力有限,石头哥也是要吃面包的。石头哥有推出包月,包年解答服务。你在学习过程中有任何问题,或者工作中遇到任何编程问题,都可以来找石头哥
    石头哥目前可以解答如下问题

    • 小程序方面的问题
    • 云开发方面的问题
    • Java,springboot,Javaweb方面的问题
    • 毕设方面的问题
    • 安卓app开发方面的问题
    • html+css+JavaScript方面的问题
    • 前端开发的问题
    • 后端开发的问题
    • 面试找工作方面的问题

    一,认识小程序云开发

    1-1,云开发简介

    • 小程序·云开发是微信团队联合腾讯云推出的专业的小程序开发服务。

    • 开发者可以使用云开发快速开发小程序、小游戏、公众号网页等,并且原生打通微信开放能力。

    • 开发者无需搭建服务器,可免鉴权直接使用平台提供的API进行业务开发
      小程序

    • 云开发又简称tcb,是微信官方给我们提供的基于腾讯云的云服务器。目前云开发包含:云数据库,云函数,云存储,云调用。后面章节会具体给大家讲解这几个。

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html

    1-2,云开发和传统服务器对比

    云开发相对于传统服务器的优势如下表

    通过上面的对比,我们可以看出,如果你想快速创建一个小程序的后台,用云开发是不错的选择。

    1-3,Serverless开发模式

    要想深入了解小程序云开发,就需要知道什么是Serverless开发模式,因为我们的小程序云开发就是采用的这个模式
    官方视频有讲到:https://developers.weixin.qq.com/community/business/doc/000e8697e481208a2e3b31d6a5680d
    所以我们接下来要深入了解下Serverless开发模式

    1-3-1,前端开发模式的演进

    上图说完了这几个阶段,可以看到,每一次前端开发模式的变化,都因某个变革性的技术而起。先是 AJAX,而后是 Node.js。那么下一个变革性的技术是什么?不言而喻,个人觉得下一代前端开发模式就是 Serverless

    其实 Serverless 早已和前端产生了联系,只是我们可能没有感知。
    1、CDN: 相信大家都使用过 CDN,我们开发完成之后,直接将静态文件部署到 CDN 上,通过 CDN 进行内容分发、网络加速,在这个过程中,前端不需要关心 CDN 有多少个节点、如何做负载均衡,也不需要知道 CDN 的 QPS 是多少。所以从这个角度来说,CDN 是一种 serverless 的实现。
    2、再比如对象存储,和 CDN 一样,我们只需要将文件上传到对象存储,就可以直接使用了,不需要关心它如何存取文件、如何进行权限控制,所以对象存储对前端来说是 Serverless。
    3、甚至一些第三方的 API 服务,也是 Serverless,因为我们使用的时候,不需要去关心服务器。

    1-3-2,什么是Serverless


    从技术角度来说,Serverless 就是 FaaS 和 BaaS 的结合。
    简单来讲,FaaS(Function as a Service) 就是一些运行函数的平台,比如云开发里的云函数,阿里云的函数计算、AWS 的 Lambda 等。

    BaaS(Backend as a Service)则是一些后端云服务,比如云开发数据库、对象存储、消息队列等。利用 BaaS,可以极大简化我们的应用开发难度。

    Serverless 则可以理解为运行在 FaaS 中,使用了 BaaS 的函数。

    1-3-3,Serverless 的主要特点

    1、事件驱动----函数在 FaaS 平台中,需要通过一系列的事件来驱动函数执行。
    2、无状态----因为每次函数执行,可能使用的都是不同的容器
    3、无运维----使用serverless我们不需要关心服务器,也不需要关心运维,这也是serverles思想的核心;
    4、低成本----使用 Serverless 成本很低,因为我们只需要为每次函数的运行付费。函数不运行,则不花钱,也不会浪费服务器资源过度

    1-3-4,serverless 开发流程


    通过上图就可以看出
    1,传统开发流程。
    在传统开发流程中,我们需要前端写页面,后端工程师写接口。后端写完接口之后,把接口部署了,再进行前后端联调。联调完毕后再测试、上线。上线之后,还需要运维工程师对系统进行维护。整个过程涉及多个不同角色,链路较长,沟通协调也是一个问题。

    2、而基于 Serverless,后端变得非常简单了,以往的后端应用被拆分为一个个函数,只需要写完函数并部署到 Serverless 服务即可,后续也不用关心任何服务器的运维操作。后端开发的门槛大幅度降低了。因此,只需要一个前端就可以完成所有的开发工作。
    当然,前端基于 Serverless 去写后端,最好也需要具备一定的后端知识。涉及复杂的后端系统或者 Serverless 不适用的场景,还是需要后端开发

    1-3-5,serverless带来的价值

    1.降低运营复杂度

    Serverless架构使软件应用和服务器实现了解耦,服务器不再是用户开发和运营应用的焦点。在应用上线前,用户无须再提前规划服务器的数量和规格。在运维过程中,用户无须再持续监控和维护具体服务器的状态,只需要关心应用的整体状态。应用运营的整体复杂度下降,用户的关注点可以更多地放在软件应用的体验和改进以及其他能带来更高业务价值的地方。
    2.降低运营成本
    服务器不再是用户关注的一个受管资源,运营的复杂度下降,应用运营所需要投入的时间和人力将大大降低。在最好的情况下,可以做到少数几个应用管理员即可管理一个处理海量请求的应用系统。

    3、缩短产品的上市时间
    在Serverless架构下,应用的功能被解构成若干个细颗粒度的无状态函数,功能与功能之间的边界变得更加清晰,功能模块之间的耦合度大大减小。这使得软件应用的开发效率更高,应用开发的迭代周期更短。

    1-3-6,基于 Serverless 的小程序开发

    1、目前国内使用 Serverless 较多的场景可能就是小程开发了。具体的实现就是小程序云开发,支付宝小程序和微信小程序都提供了云开发功能。
    2、在传统的小程序开发中,我们需要前端进行小程序端的开发;后端进行服务端的开发。小程序的后端开发和其他的后端应用开发,本质是是一样的,需要关心应用的负载均衡、备份冗灾、监控报警等一些列部署运维操作。如果开发团队人很少,可能还需要前端去实现服务端。
    但基于云开发,就只需要让开发者关注于业务的实现,由一个前端就能够完成整个应用的前后端开发。因为云开发将后端封装为了 BaaS 服务,并提供了对应的 SDK 给开发者,开发者可以像调用函数一样使用各种后端服务。应用的运维也转移到了提供云开发的服务商。
    下面分别是使用支付宝云开发的一些例子,函数就是定义在 FaaS 服务中的函数。

    负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务
    备份冗灾:就是为了防止出现自然或者社会灭害带来的对存储设备的损害而造成对数据丢失,而采取的备份.

    1-3-7,通用 Serverless 架构


    其中最底层就是实现复杂业务的后端微服务(Backend)。然后 FaaS 层通过一系列函数实现业务逻辑,并为前端直接提供服务。对于前端开发者来说,前端可以通过编写函数的方式来实现服务端的逻辑。

    同时不管是在后端、FaaS 还是前端,我们都可以去调用云计算平台提供的 BaaS 服务,大大降低开发难度、减少开发成本。小程序云开发,就是直接在前端调用 BaaS 服务的例子。

    一句话总结serverless - less is more
    使用 Serverless,我们不需要再过多关注服务端的运维,不需要关心我们不熟悉的领域,我们只需要专注于业务的开发、专注于产品的实现。我们需要关心的事情变少了,但我们能做的事情更多了。

    二,微信开发者工具的安装与使用

    工欲善其事必先利其器,我们在开发小程序之前,首先需要安装小程序开发者工具,今天就来教大家安装小程序开发者工具。

    2-1,其实很简单,只需要进入小程序官网,然后点击工具,如下图所示。



    当然了,也可以直接通过下面链接去下载
    https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

    2-2,下载安装包如下


    不管你是window还是mac电脑,只需要双击安装包实现安装即可。

    等待安装即可

    安装完成

    2-3,进入开发者工具


    第一次进入时,如下

    点击上图的加号,我们来创建一个新项目

    完成上图的配置后,点击新建。即可创建项目。创建好以后的项目如下图所示。

    这样我们就完成了小程序开发者工具的安装了,后面我们就可以开始小程序的代码编写了。

    三,注册小程序

    我们前面虽然可以用测试号创建小程序,但是测试号有很多功能会受限,比如我们接下来要讲的云开发,必须是注册小程序后才可以使用,所以今天我们就来讲讲小程序的注册.

    其实官方给的注册步骤很详细了


    官方注册文档:https://developers.weixin.qq.com/miniprogram/introduction/

    微信小程序注册地址:https://mp.weixin.qq.com/
    进去以后点击立即注册

    进入注册页面时,跟着提示一步步来就可以了

    注意点:

    • 如果只是学习的话,注册个人小程序即可.
    • 如果想商用,想使用微信支付,取用户手机号等复杂功能,可以注册企业小程序,不过企业小程序必须有营业执照才可以注册
    • 一个邮箱只能注册一个小程序
    • 一个身份证可以注册5个,个人小程序
    • 一个企业的营业执照可以注册50个企业小程序

    四,云开发环境的创建与初始化

    今天我们就来正式的创建自己的第一个云开发项目,在创建云开发之前,有下面几个注意事项

    • 1,必须注册小程序后才可以开通云开发
    • 2,一个小程序可以创建两个云开发环境

    4-1,创建一个初始项目

    我们要开通云开发服务,必须先要进入小程序开发者工具才可以。最新版的开发者工具在创建项目时又多了一个模板选择,如果你用的是最新版的开发者工具,模板选择里就选择不使用模板即可。

    最新版的开发工具不使用模板

    如果你用的是最新版的开发者工具,创建项目时会多一个模板选择,这里一定要记得选择不使用模板。

    和创建普通小程序一样,如上图所示,需要注意的就是这里必须要填写自己的appid,不可以用测试号. appid的获取如下图所示.

    关于appid

    如果你不使用自己的appid创建项目,就会出现下面的问题,所以一定要先去注册一个小程序,然后用自己的appid。

    由于云开发官方更新的太快,有些同学可能会遇到下面这样的问题


    没有 不使用云服务 选型。这个时候该怎么办呢。石头哥也已经更新课程,给大家提供的解决方案。

    4-2,没有“不使用云服务”选型解决方案(选看)

    如果你出现上面的问题,再看这节,如果没出现这样的问题,直接跳过就行。

    我在配套资料里为大家准备了一个空白项目的模板。大家只需要把这个模板下载到桌面,并解压。

    然后点击导入,把项目导入即可。

    然后如下所示,记得appid换成你自己的。

    4-3,开通云开发

    • 1,点击下图箭头所示,如果你第一步创建项目时,没有使用自己的appid,这里不会有下图箭头所示的云朵.
    • 2,给云开发环境取名

      等待创建

      创建成功
    • 3,获取云开发环境id

    4-4,初始化云开发环境(***重要)

    在app.js里写入环境id,注意这里要用你自己的云开发环境id

    • 初始化云开发环境前,先去云开发控制台,拿到云开发环境id,如下图

      这里的环境id建议直接复制,不要手写,很容易写错。

    • 拿到环境id以后,就去app.js里做云开发环境初始化,如下

    用时候云开发创建好以后,初始化可能需要一点时间,所以如果这里初始化有报错,记得关闭开发者工具,等几分钟再重新打开即可.

    五,云开发~云数据库

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/init.html

    5-1,在数据库里新建集合(数据表)

    我们这里以新建一个商品列表为例

    5-2,数据库权限管理

    要想让用户查询到我们创建的商品数据,需要把权限改为所有用户可读

    5-3,数据库的增删改查

    5-3-1,查询 get()

    • 传统写法
    • ES6简洁写法

      推荐第二种写法

    5-3-2,条件查询 where()

    5-3-3,查询单条数据doc()

    doc是用来查询单条数据的。比如商品详情页。
    doc里面用到的参数就是我们数据里的_id字段

    5-3-4,添加数据 add()

    通过add可以实现数据的添加,

    5-3-5,更新数据update()

    修改数据库里已存在的数据,结合doc进行修改单条数据

    5-3-6,删除数据remove()

    删除数据,结合doc删除单条数据

    5-4,增删改查综合案例

    • 1,能查看商品列表
    • 2,更动态添加商品
    • 3,能进入商品详情页
    • 4,能删除某个商品
    • 5,能修改某个商品的价格

    5-4-1 列表跳详情 data-

    • 1,在wxml里定义data- 要绑定的数据
    • 2, 在js页面里的点击方法里拿到绑定的数据
    • 比如打印结果如下
      在这里插入图片描述

    5-4-2,列表跳详情并携带商品id

    • 1,列表跳页到详情页
    • 2,拿到列表跳页时携带的id数据

    5-4-3,查询商品列表

    5-4-4,添加商品并刷新商品列表

    5-4-5,更新商品数据

    用户输入新价格,调用update方法进行更新数据

    我们更新成功的时候,会有如下所示的日志打印。

    只有stats里的updated是1的时候,才代表成功的更新了一条数据。
    如果这条商品不是你创建的,当你对这条商品做更新操作时,打印的updated就是0。

    这个时候代表没有更新成功。这是因为操作时的权限问题,要解决这个问题,就要借助云函数了,这里我们先放在这里,在后面云函数章节会做具体讲解。

    5-4-6,弹窗提示确认是否删除

    用户删除数据是一个危险操作,所以操作之前最好给用户一个友好提示。
    官方弹窗文档:https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showModal.html

    5-4-7,删除商品

    5-4-8,更新和删除时的权限问题

    如果这条商品不是你创建的,当你对这条商品做删除或者更新操作时,虽然也会返回成功,但是可以看到我们更新或者删除的条数是0。

    其实这个时候也意味着没有更新或者删除成功,这里是因为操作权限的问题,因为这条数据不是你创建的。所以你只能对这条数据做查询操作,而不能做修改和删除操作。要想解决这个问题,就要借助云函数了。后面云函数讲解的部分,我会做具体讲解的。

    我们还是先接着学习数据库操作的高级操作

    5-6,常用快捷键

    我们在开发时为了提高代码编写效率,通常会使用一些快捷键。我们小程序开发工具里常用的快捷键如下。
    设置—》快捷键设置
    在这里插入图片描述
    然后点击如下快捷键即可查看所有的快捷键

    如果感觉默认的快捷键不喜欢,可以自己重新设置快捷键。由于自带的快捷比较多,我这里不一一列举了,我把一些常用的快捷键拿出来给大家大致讲一讲,我这里以window电脑为例,如果你mac电脑,可以自己去看下开发者工具默认的快捷键。多看几遍把常用的记住就行了。

    快捷键组合描述
    Ctrl+a全选
    Ctrl+c复制选中内容
    Ctrl+v粘贴复制的内容
    Ctrl+z撤销当前编辑
    Ctrl+s保存并编译项目
    Ctrl+b重新编译项目
    Ctrl+x截切选中的内容
    Ctrl+/添加注释
    Ctrl+Shift+k删除当前行
    Ctrl+Shift+f全局搜索
    Ctrl+f当前页面内搜索
    Ctrl+Shift+h全局搜索并替换文本
    Ctrl+h当前页面内搜索并替换文本
    Shift+Alt+F格式化代码
    Shift+Alt+⬆向上复制当前行
    Shift+Alt+⬇向下复制当前行
    Alt+⬆把当前行向上移动一行
    Alt+⬇把当前行向下移动一行

    有的电脑上快捷键可能会有细微差距,以开发者工具默认自带的快捷键为准。

    5-7,数据库排序orderBy

    orderBy方法在做排序的时候,接受两个参数

    • 1,根据那个字段排序
    • 2,排序规则(升序或者降序)。升序用asc,降序用desc

    如我们根据商品价格从低到高升序排列

    如我们根据商品价格从高到低降序排列

    5-8,返回指定条数的数据limit

    limit用来指定查询结果集数量上限,比如我们有100条数据,只想返回前20条,我们可以通过limit(20)来指定只返回20条数据。

    例如,只返回3条数据的写法如下

    • 注意:limit 在小程序端默认及最大上限为 20,在云函数端默认及最大上限为 1000

    5-9,分页方法skip

    skip指定查询返回结果时从指定序列后的结果开始返回,常用于分页。比如我们有100条数据,想从第10条开始返回数据,可以通过skip(10)来实现

    • skip结合我们上面学的limit方法可以实现分页效果

    比如我们有100条数据,每次返回20条数据。那么就可以分5页返回。

    • 第1页 limit(20).skip(0)
    • 第2页 limit(20).skip(20)
    • 第3页 limit(20).skip(40)
    • 第4页 limit(20).skip(60)
    • 第5页 limit(20).skip(80)

    5-10,Command数据库操作符

    我门上面学完了数据库的增删改查,但是这些都是最基础最简单的操作,如果我们想实现复杂的数据查询操作,该怎么办呢
    比如

    • 查询价格大于100的商品?
    • 查询年龄小于18岁的学生?
    • 如何同时修改多条数据?
    • 如何同时删除多条数据?

    我们如果想实现上面这些复杂的操作,就需要用到数据库里的 Command数据库操作符,就是下面这位

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/Command.html

    5-10-1,gt查询大于指定值的数据

    比如查询价格大于5的所有商品

    5-10-2,gte查询大于等于指定值的数据

    比如查询大于等于5元的商品

    5-10-3,lt查询小于指定数值的数据

    比如查询价格小于5的所有商品

    5-10-4,lte查询小于等于指定数值的数据

    比如查询价格小于等于5元的所有商品

    5-10-5,and同时满足多个条件的查询

    比如查询价格大于5小于10元的所有商品

    六,云开发~云函数

    6-1,认识云函数

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions.html

    我们先来看下官方给出的云函数简介

    其实通俗来讲,云函数也是运行在服务器上的,只不过和我们传统开发语言相比。微信官方为我们提供的傻瓜式的一键部署。也就是说你只需要把心思花在业务逻辑代码的编写上即可。无需关心写好如何部署,无需关心安全问题,无需关心鉴权问题。

    我们下面以获取openid为例,来看看云函数,php,Java的实现对比

    • php获取用户openid

      如果用php来获取openid必须经历下面几步
    • 1,去小程序后台拿到appid和appSecret
    • 2,请求微信的对应接口
    • 3,获取数据后进行解码
    • 4,购买服务器,配置服务器
    • 5,购买域名,域名备案,配置https
    • 6,部署php代码到服务器
    • 7,小程序端调用php接口

    Java获取openid和上面的php步骤一样,也是需要上面7步。而我们用云函数获取openid呢,就只需要简单的3步就行了,代码量也能显著减少

    6-1-1,云函数获取openid

    用云函数的话,只需要3步

    • 1,编写云函数
    • 2,一键部署云函数
    • 3,调用云函数

    来看下云函数代码,只需要10行代码,即可轻松搞定

    6-2,云函数的优势

    我们用云函数和上一章的云数据库进行下对比

    操作云函数云数据库
    返回数据上限100条20条
    更新数据都可以更新只有自己创建的才可以更新
    删除数据都可以删除只有自己创建的才可以删除
    运行环境运行在云端Node.js环境运行在小程序本地
    实现功能丰富度非常丰富只能实现数据库增删改查
    • 来看下官方文档是如何描述云函数的
      云函数属于管理端,在云函数中运行的代码拥有不受限的数据库读写权限和云文件读写权限。需特别注意,云函数运行环境即是管理端,与云函数中的传入的 openId 对应的微信用户是否是小程序的管理员 / 开发者无关。

    6-3,云函数调用演示

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/functions/Cloud.callFunction.html

    6-3-0,初始化云函数的环境

    • 1,创建一个文件夹cloud和pages平行
      在这里插入图片描述
    • 2,在project.config.json里面配置云函数所在目录为cloud
      在project.config.json里面添加如下配置
      然后点击保存,我们的cloud文件夹前面就有一个云朵

      就代表我们云函数初始化成功啦。
    • 新一个云函数
      在这里插入图片描述
    • 如果只创建一个云函数的时候,会出现下面的问题。

      解决方案:只需要在cloud文件夹下新建一个空白文件即可。

    6-3-1,云函数获取openid

    调用云函数有两种写法

    • 1,传统的success和fail
    • 2,用promise写法then和catch

    6-3-2,数据的导入和导出

    • 数据导出,做数据备份

      比如导入为json数据如下
    • 数据导入,为了快速的大量的创建一些数据。
      为了方便付费用户,我这里提前准备好了108条数据,付费用户直接去下载即可

      把下载好的这108条数据的json文件,导入到数据库如下

    6-3-3,云函数获取数据

    注意:云函数只要有变动,就要重新部署,否则云函数不生效。

    遇到了一个问题,如下

    出现原因:如果你有两个云开发环境,偶尔会出现上图所示的问题。
    解决问题:有两种

    • 1,在云函数里指定你要使用那个云开发环境
    • 2,使用DYNAMIC_CURRENT_ENV常量 (提倡使用这个)

      我们这里会和小程序里直接调用数据库的查询进行下对比

    6-3-4,云函数修改数据

    本地小程序直接调用数据库修改会有问题

    • 只能修改自己创建的数据,别人创建的数据,就没有办法修改了。

    • 如何解决呢? 用云函数来修改就可以解决这个问题啦。

    • 1,先创建云函数update0129

    • 2,调用云函数就行修改

    6-3-5,云函数删除数据

    • 1,创建一个删除商品的云函数remove0129
    • 2,调用这个云函数进行删除操作

    6-3-6,提交数据到云函数

    • 1,创建云函数,并部署
    • 2,调用云函数

    6-4,使用云函数常见问题

    6-4-1,云函数里面没有初始化环境变量


    解决方案如下:
    使用DYNAMIC_CURRENT_ENV

    代码片段

    cloud.init({
      env: cloud.DYNAMIC_CURRENT_ENV 
    })
    

    七,云开发~云存储

    首先来看下官方对云存储的介绍:
    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/storage.html

    说白了,云存储就是可以用来存储视频,音频,图片,文件的一个云存储空间。如果你的小程序需要用到视频播放,音频播放,图片展示,文件上传与下载功能,就可以用到我们的云存储了。

    • 使用云存储来存储文件时,文件名的命名有一些规则,建议看一下。

    7-1,云开发控制台管理文件

    控制台也可以很方便的管理文件。

    7-2,上传图片到云存储

    我们上传图片之前需要先选择图片,所以这里用到一个图片选择的功能

    对应的官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html

    然后调用文件上传的api接口即可

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/storage/uploadFile/client.uploadFile.html

    7-3,给商品列表加商品图片

    我们既然已经学完图片上传功能了,那么我们就可以改造下我们之前的商品列表了,给我们的商品列表添加商品图片。

    7-4,上传视频到云存储

    上传视频之前同样需要先选择视频,选择视频的代码如下

    对应的官方文档如下:https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html

    选择好视频以后,同样是调用文件上传api,因为视频也是一个文件。

    7-5,上传word,excel文件到云存储

    7-5-1,上传之前先选择文件

    选择文件的时候记得把type设置为file

    对应的官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseMessageFile.html

    • 这里有一点需要注意
      在电脑模拟器上是选择电脑上的文件,在手机上运行小程序进行选择文件时是选择你聊天记录里的文件。

    7-5-2,上传文件

    在上面选择好文件以后,我们还是要调用uploadFile进行文件上传

    7-6,下载文件

    使用wx.cloud.downloadFile下载文件
    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-client-api/storage/downloadFile.html

    7-7,下载并打开word,excel,pdf

    使用wx.openDocument打开文件
    https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.openDocument.html

    八,列表的下拉刷新

    8-1,开启页面下拉刷新

    我们需要在app.json获取页面对应的json里设置enablePullDownRefresh属性为true来开启下拉刷新。



    由于我们的刷新动画默认是白色圆点,所以还要在json里设置页面背景色才可以看到动画。

    8-2,在Page的onPullDownRefresh里监听刷新


    在page里的onPullDownRefresh方法里监听下拉刷新

    8-3,用户下拉刷新时请求最新数据

    8-4,数据请求成功后停止刷新

    我们在下拉刷新时,刷新动画一般很久才结束,正常情况下应该是数据请求成功后就结束刷新动画。所以我们通过wx.stopPullDownRefresh()方法来结束刷新动画。
    官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/ui/pull-down-refresh/wx.startPullDownRefresh.html

    代码示例如下

    九,列表的分页加载

    9-1,小程序数据库每次最多20条

    小程序数据库api和云函数调用数据的限制
    小程序端直接调用云数据库时,每次最多可以获取20条,云函数里调用云数据库时每次最多获取100条。所以我们数据多的时候要做分页加载。

    9-2,分页加载的核心方法

    我们做分页加载时,主要用到了skip和limit方法,对应的官方文档如下

    • skip:每页加载多少条
      https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.skip.html
    • limit: 加载第几页的数据https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.limit.html

    其实这个skip和limit我在数据库的那一节有做初步讲解,这一节我们就借助具体分页加载的案例来做综合讲解

    9-3,导入108条数据

    9-3-1,下载数据源

    这108条数据是石头哥提前为付费用户/年卡用户准备好的,如果你没有付费,可以自己去数据库里创建108条数据即可。

    9-3-2,导入到数据表

    我这里导入到num数据表,导入成功如下:

    9-3-3,别忘记修改表权限

    把数据表(集合)的权限改为所有用户可读,仅创建者可读写。

    9-4,上拉加载更多监听

    我们的列表滑动到最后一个数据时,会执行下面的方法

    所以我们的分页加载要在onReachBottom里做。

    9-5,数据库分页加载代码实现

    直接调用数据库每次最多只能加载20条数据

    wxml里只做简单的列表数据显示就行了

    wxss做个简单的样式

    对应的效果如下

    9-5-1,没有更多数据时的友好提示

    9-5-2,加载中和加载完成的友好提示

    • 加载中
       wx.showLoading({
          title: '加载中...',
        })
    
    • 隐藏加载中
    wx.hideLoading()
    

    9-6,通过云函数实现分页加载

    通过云函数调用数据库,每次最多可以加载100条数据.

    • 如果每页20条以内,不建议用云函数
    • 如果分页的时候,每页大于20条,就用云函数。

    十,搜索功能

    今天来给大家讲讲小程序的搜索功能。我这里后台数据库用的是小程序云开发的云数据库。所以我们搜索的时候就要借助云开发来实现。

    注意:我们存数据的数据表(集合)要把权限改成如下所示。

    10-1,需求

    比如我这里有如下的一些数据

    我有为大家准备好数据源,就在我们对应章节的视频目录下,大家可以自己一个个添加数据,当然也可以直接导入石头哥的数据源,我会在视频里教大家复习下如何导入数据到云开发数据库。

    我们想实现如下搜索需求

    • 1,搜索标题(title)包含‘小石头’的数据
    • 2,搜索标题(title)或者描述(desc)包含‘小石头’的数据
    • 3,搜索标题(title)描述(desc)都包含‘小石头’的数据

    我们知道数据库查询的时候有个where语句,但是where语句是查询某个字段全部包含你输入的内容时才可以,所以单纯用where语句来做搜索的话,结果太单一。所以我们今天就来学习下模糊搜索功能的实现。我们以上面三个需求为例,来一个个讲解。

    10-2,实现原理

    我们做模糊搜索的时候,其实就是查询某个字段里是否包含我们的搜索词。而模糊搜索需要借助RegExp,来看看RegExp是什么。

    官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/Database.RegExp.html

    • 再来看看官方示例

      可能看官方示例会有点糊涂,那么我们接下来就结合具体代码来给大家做下讲解。

    10-3,模糊搜索的代码实现

    10-3-1,模糊搜索单个字段

    • 需求:搜索标题(title)包含‘小石头’的数据

    代码如下

    查询结果如下:

    可以看到我们成功的查询到了标题里包含‘小石头的数据’

    10-3-2,模糊搜索多个字段(满足一个即可)

    • 需求:搜索标题(title)或者描述(desc)包含‘小石头’的数据

    由于我们要查询多个字段,所以我们这里用到了command高级操作符里的or

    代码如下:

    查询结果:

    我们来分析下这两条数据

    • 1,标题和描述都包含‘小石头’,符合
    • 2,虽然标题里没有‘小石头’,但是描述里有,所以也符合。
    • 3,title和desc里都没有‘小石头’,所以不符合。

    10-3-3,模糊搜索多个字段(要同时满足)

    • 需求:搜索标题(title)描述(desc)都包含‘小石头’的数据

    由于我们要查询多个字段,所以我们这里用到了command高级操作符里的and

    代码如下:

    查询结果:

    我们来分析下这两条数据

    • 1,标题和描述都包含‘小石头’,符合
    • 2,虽然desc里没有‘小石头’,但是title里没有,所以也不符合。
    • 3,title和desc里都没有‘小石头’,所以也不符合。

    10-4,源码

    为例方便大家使用,我把完整的代码贴到这里,后面大家使用时,直接复制这里的代码,略微改造下就可以了。

        //我这里简单起见就把搜索词写死,正常应该用户输入的
        let searchKey = '小石头'
        let db = wx.cloud.database()
        let _ = db.command
    
        db.collection('news')
          .where(_.or([
            {//标题
              title: db.RegExp({ //使用正则查询,实现对搜索的模糊查询
                regexp: searchKey,
                options: 'i', //大小写不区分
              }),
            },
            {//描述
              desc: db.RegExp({
                regexp: searchKey,
                options: 'i',
              }),
            }
          ])).get()
          .then(res => {
            console.log('查询成功', res)
          })
          .catch(res => {
            console.log('查询失败', res)
          })
    

    10-5,获取用户输入的搜索词显示搜索列表

    其实获取用户输入的内容,我们之前讲过很多遍了,就是用input组件,通过bindinput来获取用户输入的搜索词,然后点击搜索实现搜索功能。
    要实现的效果图如下:

    然后我们搜索对应的关键词以后可以显示对应的搜索结果在列表上

    我会在视频里带着大家一步步的实现。

    十一,云开发实现登陆注册功能

    具体代码的编写请跟着石头哥的视频走

    11-1, 注册页

    注册页主要用到了input组件获取用户输入,button组件实现注册功能,注册主要是把账号名和密码添加到云开发数据库

    11-2, 登陆页

    登陆主要是获取用户输入的账号和密码,然后从数据库里读取相应的数据,做账号和密码的比对,如果账号和密码都一样,就可以直接登陆成功

    11-3, 登陆成功跳转到首页

    登陆成功以后,会调整到首页

    11-4, 保存登陆状态

    我们通常做登陆时,用户登陆成功后我们需要帮用户保存登陆状态,要不然用户下次再进入应用时还要重新登陆。所以我们要做下用户登陆状态的保存

    十二,云开发实现点赞收藏评论功能

    具体代码的编写请跟着石头哥的视频走

    12-1, 常用图标获取网站

    这里用了一个阿里巴巴矢量图库:https://www.iconfont.cn

    12-2, 云函数里初始化云开发环境

    cloud.init({
    env: cloud.DYNAMIC_CURRENT_ENV
    })
    

    十三,评论功能的简单实现

    具体代码的编写请跟着石头哥的视频走,这一节不在准备笔记

    十四,CMS网页版管理后台

    14-1,开通cms的准备工作

    如下图所示,直接点击开通内容管理(CMS)即可

    开通cms需要你云开发里使用按量付费,如果你是第一次开通云开发,记得做如下选择。
    在这里插入图片描述
    如果你已经开通过云开发,记得把付费模式改为按量付费。如果你一开始云开发不是按量付费的模式。

    点击完开通以后,会有如下弹窗,直接点击确定即可。不要被付费吓着,官方每月会送我们一定的免费额度的。学习得话基本上够用了。

    上面点完确定后,我们只是开启了按量付费功能,因为cms得使用必须要开通按量付费才可以得。所以还要再点一次开通。如下图

    点完开通后,会有如下弹窗,直接点击下一步即可。

    然后我们需要设置登录内容管理后台得账号和密码,然后点击确定即可

    然后我们就等待内容管理功能得开通了,需要等几分钟。

    开通成功以后,我们就可以通过下面这个地址进入管理后台了。

    后面我们统一称内容管理为cms

    14-2,注意事项

    • 一个云开发环境对应一个内容管理(cms)
    • cms开通会存在开通失败的情况,如果开通失败了,就用新的云开发环境去开通,如果新的云开发环境还是不行的话,那就只能重新去注册一个新的小程序了。一个小程序是可以开通两个云开发环境的。

    14-3,登录Cms可视化管理后台

    上面开通好以后,就可以通过后台地址登录管理后台了。如下

    14-4,在cms里创建后台项目

    第一次登录,我们还需要创建一个项目

    自己输入项目名和项目id即可

    然后点击进入刚刚创建的项目

    到这里我们的cmd可视化网页管理后台就创建好了

    14-5,内容模型


    我会在视频里教大家如何创建内容模型,其实内容模型和我们数据库里的数据表(集合)是对应起来的。

    14-6,数据类型

    我们往内容模型里添加数据类型的时候可以选择如下一些类型

    我会在视频里把一些常用的数据类型给大家做详细讲解

    14-7,数据表(集合)管理

    我们可以对上面创建好的内容模型(集合)进行可视化的管理,这也是cms的优点,可以让我们对数据库进行可视化的管理。

    14-8,综合案例

    我会结合cms和云开发数据库,教大家实现一个简单的新闻小程序,有如下功能点

    • 1,新闻列表
    • 2,新闻详情
    • 3,图文混排
    • 4,富文本编辑
    • 5,rich-text的学习

    rich-text官方文档:
    https://developers.weixin.qq.com/miniprogram/dev/component/rich-text.html

    我会在视频里教大家一步步的实现这个综合案例,这个综合案例能跟着石头哥完整的做下来的话,你的小程序云开发的知识点也就学习的差不多了。

    云开发实战案例···》

    实战一,云开发实现订阅消息推送

    之前的通过formid发送模板消息推送,将在2020年1月10日下线,所以我们不得不使用订阅消息了。

    我们先来看下订阅消息的官方简介。

    接下来我们就来借助云开发,来快速实现小程序消息推送的功能。

    1,获取模板 ID

    这一步和我们之前的模板消息推送是一样的,也是先添加模板,然后拿到模板id

    首先是开通订阅消息功能,很简单,如下图

    由于长期性订阅消息,目前仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。仅就线下公共服务这一点,长期性订阅消息就和大部分开发者无缘了。
    所以我们这里只能以使用一次性订阅消息为例。

    如上图,我们从公共模板库里选择一个一次性订阅的模板。然后编辑模板如下图

    下图就是我们添加好的模板,下图的模板id就是我们需要的。

    2,请求用户授权

    我们做订阅消息授权时,只能是用户点击或者支付完成后才可以调起来授权弹窗,官方是这么要求的:

    我们这里用到了wx.requestSubscribeMessage这个方法,来获取用户的授权。

    • 1,编写index.wxml代码
    • 2,编写index.js代码,实现点击获取授权

      这一步tmplIds里的一串字符,就是我们自己添加的模板id
    • 3,点击按钮运行效果如下
      开发者工具模拟器上点击授权弹窗是这样的:

      手机上的授权弹窗是这样的:

      可以看到,这里显示的就是我们添加的 ‘上课提醒’的模板。
      细心的同学可以看到, 真机上多了一个 ‘总是保持以上选择,不再询问’
      其实,你自己仔细多品一些。也能明天,我们正常订阅消息授权时,用户允许的话,你只能推送一次消息。也就是用户允许一次,我们就可以推送一条消息给用户,并且这个允许不存在过期。所以我们可以让用户尽量多的点击允许,这样我们就可以尽量多的给用户发送消息了。

    这里用户允许后,我们就可以给用户推送消息了,接下来我们来借助云开发的云函数来实现消息推送功能。

    3,获取用户的opneid

    先来看官方爸爸是怎么说的。

    可以看出官方提供了两种方式,我们这里使用云调用。说白了就是在云函数里调用推送功能。

    • 推送所需参数

      可以看到我这里用来openapi功能,并且需要用到用户的opneid,关于openid的获取,我之前有写过文章,也录过视频的。文章的话,大家去翻下我历史的文章,视频的话,点击这个即可:《借助云函数获取用户openid》
      这里的openid的获取我就不再详细讲解了,把对应云函数的代码给大家贴出来。

      在使用云开发时,有几点需要注意的
    • 1,需要在project.config.json里创建云函数目录如下图
    • 2,需要在app.js里初始化云开发环境

      至于云开发的环境id从哪里拿,我视频里也讲过很多遍了,直接去看我视频或者翻看我历史文章即可。
      《零基础入门云开发视频》

    4,用云函数实现消息推送

    我们只需要创建一个云函数如下,然后填入用户的openid,要跳转的小程序页面链接,模板内容,模板id即可。通常这些数据都应该传进来,简单起见,我就把这里的模板内容写成固定的。

    注意:我在编写上面的代码时,推送内容的key必须和小程序模板里的key保持一致,否则就会报如下错误。

    • 然后看下调用这个云函数的地方

      如果用户没有授权,我们推送会报如下错误

      如果用户授权过,我们就可以成功推送了,推送后的打印日志如下

      还记得我们真机上的授权吗,如果用户只是点击了允许,没有选择一直允许,那我我们在推送成功一次后,如果再次推送,就需要用户重新授权。否则,还是会报这个错误的

      所以我们用户点击一次允许,我们就可以推送一次消息,比如,我点击了4次允许那么我就可以成功的推送4次

    效果图


    可以看到,我们成功的收到 上课提醒的模板消息,点击进去,就是我们具体的推送内容

    其实我这是连续收到了4条消息,因为我点击了4次允许推送,所以就可以成功的推送4次。

    到这里我们就完整的实现模板消息推送功能了,下面我把主要代码贴给大家,大家也可以私信我获取完整源码。

    • index.wxml
    <button bindtap="shouquan" type='primary'>获取订阅消息授权</button>
    <button bindtap="getOpenid">获取用户的openid并推送消息</button>
    
    • index.js
    //编程小石头wechat:2501902696
    Page({
      //获取授权的点击事件
      shouquan() {
        wx.requestSubscribeMessage({
          tmplIds: ['CFeSWarQLMPyPjwmiy6AV4eB-IZcipu48V8bFLkBzTU'], //这里填入我们生成的模板id
          success(res) {
            console.log('授权成功', res)
          },
          fail(res) {
            console.log('授权失败', res)
          }
        })
      },
      //获取用户的openid
      getOpenid() {
        wx.cloud.callFunction({
          name: "getopenid"
        }).then(res => {
          let openid = res.result.openid
          console.log("获取openid成功", openid)
          this.send(openid)
        }).catch(res => {
          console.log("获取openid失败", res)
        })
      },
      //发送模板消息到指定用户,推送之前要先获取用户的openid
      send(openid) {
        wx.cloud.callFunction({
          name: "sendMsg",
          data: {
            openid: openid
          }
        }).then(res => {
          console.log("推送消息成功", res)
        }).catch(res => {
          console.log("推送消息失败", res)
        })
      }
    })
    
    • 推送对应的云函数
    //编程小石头wechat:2501902696
    const cloud = require('wx-server-sdk')
    cloud.init()
    exports.main = async(event, context) => {
      try {
        const result = await cloud.openapi.subscribeMessage.send({
          touser: event.openid, //要推送给那个用户
          page: 'pages/index/index', //要跳转到那个小程序页面
          data: {//推送的内容
            thing1: {
              value: '小程序入门课程'
            },
            thing6: {
              value: '杭州浙江大学'
            },
            thing7: {
              value: '第一章第一节'
            }
          },
          templateId: 'CFeSWarQLMPyPjwmiy6AV4eB-IZcipu48V8bFLkBzTU' //模板id
        })
        console.log(result)
        return result
      } catch (err) {
        console.log(err)
        return err
      }
    }
    

    后面我会分享更多小程序相关的知识出来,请持续关注。

    注意:授权一次,只能发送一条消息。

    5,发送订阅消息给多个用户

    //发送订阅消息给多个用户
      sendAll() {
        if (name == null || name == '') {
          wx.showToast({
            icon: "none",
            title: '请输入课程名',
          })
          return
        }
        let users = [
          "oc4sa0Vp_s65LEItm4JSWT5WFQds",
          "oc4sa0dZ-pSCu95djiLCt7jo97bY"
        ]
    
        users.forEach(item => {
          console.log("for循环", item)
          this.sendFun(item, name)
        })
      },
      //封装的方式方法
      sendFun(openid, name) {
        wx.cloud.callFunction({
          name: "fasong",
          data: {
            openid: openid,
            name: name
          }
        }).then(res => {
          console.log("发送单条成功", res)
        }).catch(res => {
          console.log("发送单条失败", res)
        })
      }
    

    实战二,短信验证码

    老规矩先看效果图

    普通短信

    验证码短信

    今天被云开发官方告知,云开发支持发短信功能了,然后就迫不及待的来尝下鲜。

    官方文档:
    https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/cloudbase/cloudbase.sendSms.html

    进入官方文档一看,云开发给咱们开发者的福利还真不小。
    不仅仅可以很方便的使用短信功能,还送了咱们1000条免费短信。不用白不用嘛。这1000条短信足够咱们把小程序短信功能,和小程序短信验证码功能都学会了。
    废话不多说了,咱们直接来撸代码

    1,使用云开发短信的条件

    这个前置条件很重要,条件不满足,你就没法使用云开发短信功能。

    使用条件

    • 1,必须是企业小程序,目前个人小程序无法使用短信发送
    • 2,必须开通静态网站功能(后面应该会逐步放开)
    • 3,必须开通云开发(这个没得说,不开通云开发你还用啥云开发功能啊)

    上面条件都满足以后,我们就可以来愉快的撸代码了。

    年卡福利

    • 1,可以获取石头哥目前所有视频课
    • 2,未来一年内出的新课也可以获取
    • 3,一对一问题解答,远程协助
    • 4,可以借用石头哥的企业小程序

    感兴趣可以加石头哥微♥ 2501902696 备注年卡

    2,开通静态网站功能

    如果你不开通静态网站,直接调用短信发送,会报如下错误。

    其实官方文档里也有给出这个错误。

    那么我们就来开通静态网站功能。开通静态网站功能之前,必须开通云开发,配置好云开发的环境。这些我在云开发入门里讲过很多遍。还不知道的同学可以翻看下我前面的文章或者视频:https://edu.csdn.net/course/detail/26572

    这里开通云开发我们借助小程序开发者工具来实现快速开通。

    2-1,注册小程序

    这里我就不再多说了,只有注册过小程序的appid才可以开通云开发

    我们注册好小程序后,就可以拿到appid了,如上图

    2-2,创建一个小程序项目

    小程序项目的创建,我这里不再多说,我前面小程序基础课里有讲过很多遍。《小程序基础学习》

    这里强调一点,就是创建小程序项目时一定要用我们自己的appid不要用测试号。
    在这里插入图片描述
    如果你一开始是用测试appid创建的,也可以通过上图的方式更换成自己的小程序的appid。

    2-3,开通云开发

    这里云开发的开通,我就不做过多讲解了,我云开发课程里也讲过很多遍。大家可以去翻看下

    只需要点击开发者工具里的云开发按钮,跟着提示一步步操作就可以快速开通云开发。

    2-4,开通静态网站功能


    我们上面云开发开通好以后,就可以在这里快速开通静态网站了。

    点击以后,直接点击开通即可

    这时候开通有个条件

    我们必须按照要求改变自己小程序的付费方式,把我们的付费方式改成按量付费即可。

    这里不用担心,这里的按量付费,每月都有免费额度。这些额度我们开发学习基本上够用了


    这个时候我们的静态网站功能就开通成功了。

    开通成功以后如下图。

    3,编写发送短信的云函数

    其实上面静态网站功能开通以后,我们不用上传网站资源,就可以直接来使用短信功能了。
    下面我们就来使用云开发的云函数功能来做短信发送功能。
    老规矩先看效果图

    代码编写也很简单

    其实发送短信的代码很简单,就上面这几行。下面就来教大家如何编写这个云函数。

    3-1,初始化云开发环境id

    新建一个和pages平级的目录cloud,用于存放云函数

    然后在project.config.json里添加cloudfunctionRoot选项。

    然后对cloud选择当前环境

    在app.js里配置环境变量

    这个env环境id需要你去云开发控制台获取

    3-2,创建云函数

    右键cloud目录,新建Node.js云函数

    然后新建一个云函数,名字你可以自定随便定。我这里用sendSms

    3-3,编写云函数


    我这里把代码贴给大家,记得把env和接收短信的手机号换成你自己的。

    const cloud = require('wx-server-sdk')
    cloud.init({
      env: cloud.DYNAMIC_CURRENT_ENV
    })
    exports.main = async (event, context) => {
      try {
        const result = await cloud.openapi.cloudbase.sendSms({
          env: 'xiaoshitou-zfl2q',
          content: '编程小石头发布了新的能力',
          phoneNumberList: [
            "+8615611823564"
          ]
        })
        return result
      } catch (err) {
        return err
      }
    }
    

    3-4,部署云函数

    上面云函数编写好了,一定要记得部署下云函数。右键sendSms然后点击下面箭头所示的即可。

    上传部署成功后,会有下面这样的提示

    4,调用云函数发送短信

    我们上面云函数编写并部署成功以后,就可以来调用这个云函数,发送短信了。

    4-1,编写wxml文件

    在wxml文件里写一个button按钮,编写一个bindtap点击事件

    4-2,编写js文件

    在js文件里实现上面button的点击事件,然后调用云函数

    调用云函数时,一定要记得这里的name必须和你的云函数名一模一样。

    4-3,点击发送短信

    点击发送短信

    点击发送 短信以后,可以看到日志里打印openapi.cloudbase.sendSms:ok
    这就代表发送成功了。
    然后再看下手机,收到下面的短信。

    到这里我们的短信发送功能就完整的实现了。
    其实到这里该实现的功能,就已经实现了。但是我们使用短信场景更多的是用短信发送验证码。所以接下来给大家做一个发送短信验证码的例子出来

    5,发送验证码短信

    老规矩,先看效果图

    我们只需要获取用户输入的手机号,然后点击获取验证码,最后输入短信里接收到的验证码,进行验证即可。

    5-1,编写wxml

    页面比较简单,就两个输入框和两个按钮

    5-2,编写js

    js里主要是获取用户输入的手机号,然后发送验证码,发送验证码调用云函数实现短信验证码发送功能。用户输入验证码以后进行校验即可。

    5-3,发送短信验证码

    用户输入手机号以后,点击发送,可以看到我们手机上收到了如下短信。


    然后用户输入获取到的验证码,点击验证。

    可以看到验证成功,验证成功以后后面的操作就可以自己定了,比如验证成功以后跳转到登录成功页。

    到这里我们就实现了验证码发送功能了。

    5-4,生成随机验证码的方法

    我这里把生成随机验证码的方法贴给大家。

    字母和数字混合

      //获取随机验证码,n代表几位
      generateMixed(n) {
        let chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
        let res = "";
        for (var i = 0; i < n; i++) {
          var id = Math.ceil(Math.random() * 35);
          res += chars[id];
        }
        return res;
      }
    

    数字混合

      //获取随机验证码,n代表几位
      generateMixed(n) {
        let chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
        let res = "";
        for (var i = 0; i < n; i++) {
          var id = Math.ceil(Math.random() * 9);
          res += chars[id];
        }
        return res;
      }
    

    实战三,群发短信

    我们上面给单个手机发送验证码的功能实现了,接下来就教大家如何群发短信。

    老规矩,先看效果图

    官方文档:
    https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/cloudbase/cloudbase.sendSms.html

    使用云开发短信的条件

    这个前置条件很重要,条件不满足,你就没法使用云开发短信功能。

    • 1,必须是企业小程序,目前个人小程序无法使用短信发送
    • 2,必须开通静态网站功能(后面应该会逐步放开)
    • 3,必须开通云开发(这个没得说,不开通云开发你还用啥云开发功能啊)

    上面条件都满足以后,我们就可以来愉快的撸代码了。

    年卡福利

    • 1,可以获取石头哥目前所有视频课
    • 2,未来一年内出的新课也可以获取
    • 3,一对一问题解答,远程协助
    • 4,可以借用石头哥的企业小程序

    感兴趣可以加石头哥微♥ 2501902696 备注年卡

    1,编写wxml页面

    简单起见,我这里只定义一个输入手机号的输入框和一个button按钮

    对应的代码如下
    在这里插入图片描述

    2,获取用户输入的手机号

    我这里以*来分割手机号,如下图所示。

    然后我们定义一个bindinput事件来获取用户输入的内容。

    可以看到,我们成功的获取到了用户输入的手机号了。

    但是官方文档里已经说明,我们群发短信的时候需要用到的是一组手机号,也就是说需要用数组来存放数据。但是我们这里是一个字符串。那么我们就要分割字符串成数组了。

    3,分割字符串成数组

    我们分割字符串用到的是字符串的split()方法

    当然触发的时机,应该是在用户点击群发按钮的时候。那么我们就为群发按钮定义bindtap点击事件send

    可以看到我们成功的把字符串分割成了数组。

    但是我们数组里的手机号前面有个回车键,所以安全起见,我们在分割字符串之前,需要先把这回车键给剔除掉。

    4,去除字符串里的回车键

    去除字符串里的回车键语法如下

    字符串.replace(/[\r\n]/g, "")
    

    可以看到我们只需要调用字符串.replace方法即可,后面括号里跟的是回车键对应的正则表达式。这里不需要记住,后面用的时候来我笔记这里复制就行了。

    可以看到我们剔除回车键以后,再分割的字符串里就没有回车键了。

    5,遍历数组给手机号前面+86

    如果你有仔细阅读官方文档,可以看到我们群发的手机号前面必须以+86开头。并且每次群发的手机号不能超过1000条。

    那么我们接下来就要遍历数组,给每个手机号前面都添加‘+86’了。
    当然了这里有很多种方法来实现这一目的,我这里用一个for循环和一个map方法来分别实现下。

    可以看出用map方法更简介一点。但是对于新手来说第二种方法可能不是很好理解。所以这里你用那种方法都可以,不做强制要求。

    5-1,通过for循环来实现

    5-2,通过map方法来实现

    6,编写群发短信的内容

    那么我们接下来要做的就是实现群发功能了。我们这里要想成功的实现群发,需要两个元素

    • 要群发的短信内容
    • 要群发的手机号

    关于手机号和群发内容都有要求

    我们群发手机号这里已经符合要求了,接下来就是群发的内容了。群发内容最长不能超过60个字节,一个汉字通常2~3个字节。也就是说我们短信内容不能超过20个字,所以群发的短信一定要精细。用最少的字来吸引用户。

    这里其实就是一个input来获取用户输入的内容就行了。我不再多讲,直接把代码贴出来。

    在js里获取用户输入的短信内容

    现在完事具备,只欠一个云函数了

    7,编写群发短信的云函数

    短信内容和群发的手机号都已经成功拿到了,我们接下来就要来编写群发的云函数了。

    云函数其实我们短信验证码那一节基本上一样,区别就是

    • 短信验证传入的是:验证码+单个手机号
    • 群发传入的是:短信内容+多个手机号

    云函数编辑好,记得重新部署下。

    8,调用云函数实现群发

    上面云函数编辑好了,也部署好了,接下来就是要调用云函数实现短信群发了。

    调用其实很简单。

    9,群发演示失败

    接下来我们就要验证自己的劳动成果了。如下,我发这样的内容给两个手机号。为什么是两个呢,我这里是学习,要节省短信条数。官方只送我们1000条。所以要省着点用。

    其实群发两个手机号,和群发1000个没区别,只要群发两个成果,那么群发1000个也一样的。

    辛辛苦苦编写好了,测试了下,居然报错

    什么鬼,代码明明没有错误啊,程序员有时候就是莫名的自信。
    官方给的发送成果返回字段如下

    石头哥发送返回结果如下

    百思不得其解啊。不会真是代码写错了吧。。。。
    还好石头哥比较聪明,翻译了一下报错信息。

    发送时间限制,也没看到官方文档有说时间限制啊。后来又去官方文档翻来覆去,终于在一个角落里看到了这句话。

    原来是石头哥写文章太晚了。。。。

    本来想写完文章,直接录讲解视频给大家的,,,,看来只能等第二天8-22:00来续写这篇文章了。。。。

    10,群发演示成功

    终于等到了第二天8点47,下面我们把昨天的群发短信再演示一遍,看这次能不能成功。
    先来看我们的日志

    可以看出日志上显示成功的发送两个。那么收到的短信长什么样子,也给大家截个图。
    第一个手机号是安卓手机

    第二个手机号是苹果手机

    到这里我们的群发短信功能就完整的实现了。

    展开全文
  • 从零开始入门学习51单片机教程.ppt
  • 未来将是人工智能和大数据的时代,是各行各业使用人工智能在上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习学习历程。我希望在学习过程中做到以下几点:了解各种神经网络设计...
  • MySQL 5.6从零开始学 视频教学版.haozip01.zip MySQL 5.6从零开始学 视频教学版.haozip02.zip MySQL 5.6从零开始学 视频教学版.haozip03.zip MySQL 5.6从零开始学 视频教学版.haozip04.zip 400页
  • 前言 截止今年(2022年),亚马逊云已经走过了16个年头,并连续十一年被Gartner认可为云计算领导者。...从免费试用亚马逊云开始我的上云服务 对于一个云上开发者来说,免费套餐是AWS相对于很多其他云厂
  • 主要介绍了从0开始简单部署腾讯服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习
  • 本文主要从深度学习的兴起开始谈起,进而介绍了Docker技术、阿里容器服务,重点介绍了支持上的高性能计算应用需要哪些,包括GPU的调度、隔离和监控。12月9日云栖计算之旅线下沙龙第2期《Docker在平台上的最佳...
  • 云栖TechDay第36期,阿里高级产品专家霁荣带来“阿里异构计算平台——加速AI深度学习创新”的演讲。本文主要从深度学习催生强大计算力需求开始谈起,包括GPU的适用场景,进而引出了弹性GPU服务——EGS...
  • python3.5从零开始学是专门针对Python新手量身设计,涵盖了Python 3.5 实际开发的重要知识点。内容包括:Python语言的类型和对象、操作符和表达式、编程结构和控制流、函数、序列、多线程、正则表达式、面向对象编程...
  • 等到备案完成后,我就开始学习如何搭建一个个人网站。在这里,我想记录一下搭建网站的第一步:搭建我的ECS服务器。 2.1:下载Xshell和Xftp https://www.netsarang.com/zh/ 进入上面的网站,找到Xshell和Xftp,点击...
  • MySql 5.6从零开始学 视频教学版。很不错很经典的一本书。
  • 为了能够给大家尽可能说出云原生是个什么东西,我读了很多很多文章,拜访了很多名家,包括业界的知名大佬、年薪千万的骨灰级专家、名下数十万记学生的成功大师,真是生怕自己才疏学浅耽误了大家,所以我希望大家能...
  • 4.4_开始使用函数|uniCloud_开发的基础用法|uni-app_&_uniCloud_从零入门开发《IT技术资讯类跨
  • 资源名称:从零开始学Eclipse教学视频与源码(26集)资源目录:【】从零开始学Eclipse-教学PPT【】从零开始学Eclipse-教学视频(01-05)【】从零开始学Eclipse-教学视频(06-10)【】从零开始学Eclipse-教学视频(11-15)...
  • 华为ICT赛道试题(存储试题)
  • 阿里Quick BI理论学习

    千次阅读 2022-01-29 20:04:55
    ????在前面的章节中我们学习了计算引擎MaxComputer和大数据开发治理平台DataWorks,今天我们...阿里系列: 阿里MaxComputer SQL学习之DDL. 阿里系列: 阿里MaxComputer SQL学习之DML. 阿里系列: 阿里MaxCompu
  • VIVADO 从此开始,详细讲解了vivado,FPGA开发工具的使用,对于初学者学习VIVADO工具很有用。
  • stm32+4G从零开始连接阿里IOT

    千人学习 2021-03-06 18:33:46
    在本课程中,大家可以学习到如何使用操作阿里物联网平台;4G模块和AT指令的编程技巧;以及MQTT协议的内容和源码的移植,在课程后面我会手把手的教大家怎么使用stm32这款低端平台的单片机编程实现连接阿里物联网...
  • 本片博文记录一下个人搭建服务器学习过程中的一些思考与经验整理。正式学习的第一步,首先是配备适合的工具,可以通过公开资料了解到目前国内服务器市场的主要玩家有阿里、腾讯、百度、华为云、Ucloud等。...
  • 该篇文章已经被专栏《从零开始学docker》收录 实战之Nginx,Tomcat写在前面Nginx1.1 搜索镜像1.2 下载1.3 启动,绑定端口1.4 查看端口1.5 进入nginxTomcat2.1 搜索镜像2.2 下载2.3 启动tomcat2.4 测试写在最后 写...
  • 猿创征文|【原生】学习云原生经验分享

    万次阅读 多人点赞 2022-08-29 12:29:59
    学习云原生经验分享
  • :fire:从零开始学习人工智能(Start-AI):fire: “不积跬步,无以至千里” 作者: Start-AI项目推进提供一个从零基础到进阶学习人工智能的特定资料库,包括人工智能理论和实践,深度学习框架(TensorFlow,Keras...
  • 【深度学习服务器推荐及教程

    千次阅读 2021-11-22 21:41:23
    ①智星云(付费)(用过还不错,可以按分钟计时,价格适中,能够使用不同显卡多设备,支持网页端和微信小程序,可以使用Pycharm专业版用SSH连接或者直接使用...满足条件的同学,可以学习一下如何使用Colab【别再买
  • 相信和我一样,有很多刚入门学习ML、DL的亲们都会遇到一个问题,那就是没有足够的算力去跑自己的网络。而自己去买一块显卡可能又成本太高。在我研究了数天,尝试了各种资源之后,现在终于总结出低成本高效的云服务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 235,157
精华内容 94,062
热门标签
关键字:

云开始学什么