微信小程序开发(后端 Java)

时间:2024-10-03 17:26:50

微信使用的开发语言和文件很「特殊」。

小程序所使用的程序文件类型大致分为以下几种:

WXML (WeiXin Mark Language,微信标记语言)

WXSS (WeiXin Style Sheet,微信样式表)

③JS (Java,小程序的主体)

小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。我有一些面试题、架构、设计类资料可以说是程序员面试必备!
所有资料都整理到网盘了,需要的话欢迎下载!私信我回复【111】即可免费获取

在语言方面,小程序看似重新定义了一套标准。但实际上,它们与「前端三件套」——HTML、CSS 和 Java—— 差不太多。

下面,我们就来对比一下小程序开发语言和「前端三件套」有什么异同点:

HTML 与 WXML:两者差异比较大,如果之前没有接触过 Android 开发,可能会觉得有些头疼。事实上,WXML 更像是 Android 开发中的界面 XML 描述文件,适合于程序界面的构建;而 HTML 则倾向于文章的展示 (这与 HTML 的历史有关),以及互联网页面的构建。

WXSS 与 CSS:两者在语言上几乎没有差别,可以直接通用。

JS 文件:小程序的 JS 文件与前端开发使用的 JS 几乎没有区别,只是小程序的 JS 新增了微信的一些 API 接口,并去除了一些不必要的功能 (如 DOM)。

在语言上,小程序完全向学习成本最低的前端开发看齐,但这不代表所有前端开发者都能无缝迁移。

如果你是从前端开发转向小程序,就需要注意这两个点:

HTML 与 WXML 两种文件的构建思想差异较大,如果之前只接触过前端开发,需要一点时间才能适应 WXML 的编写方法。

虽然小程序使用的是前端语言,但不代表可以继续沿用前端的开发思想进行开发。小程序对前端开发的要求从「构建界面」升级成「开发完整应用」,前端开发需要在意识上进行转变。
 

1. 主要内容

springboot 后端架构构建

小程序项目构建

小程序 api 调用

后台 resetful 接口编写

小程序调用后台接口

免费的 https 申请

Linux 下部署上线

2. 后端详解(Java 编写后端 api)

主要框架 springboot, 开发工具 myeclipse,服务器阿里云服务器。

创建一个 maven 项目,导入相关依赖: 
依赖

  1. <!-- 统一版本控制 -->
  2. <parent>
  3. <groupId></groupId>
  4. <artifactId>spring-boot-starter-parent</artifactId>
  5. <version>1.5.9.RELEASE</version>
  6. </parent>
  7. <dependencies>
  8. <!-- freemarker渲染页面 -->
  9. <!-- https:///artifact//spring-boot-starter-freemarker -->
  10. <dependency>
  11. <groupId></groupId>
  12. <artifactId>spring-boot-starter-freemarker</artifactId>
  13. </dependency>
  14. <!-- spring boot 核心 -->
  15. <dependency>
  16. <groupId></groupId>
  17. <artifactId>spring-boot-starter-web</artifactId>
  18. </dependency>
  19. <!-- springboot整合jsp -->
  20. <!-- tomcat 的支持. -->
  21. <dependency>
  22. <groupId></groupId>
  23. <artifactId>spring-boot-starter-web</artifactId>
  24. <exclusions>
  25. <exclusion>
  26. <groupId></groupId>
  27. <artifactId>spring-boot-starter-tomcat</artifactId>
  28. </exclusion>
  29. </exclusions>
  30. </dependency>
  31. <dependency>
  32. <groupId></groupId>
  33. <artifactId>tomcat-embed-jasper</artifactId>
  34. </dependency>
  35. </dependencies>

在配置文件 src/main/resources/ 下创建 文件,可以修改一些配置参数等

  1. #jsp支持
  2. =.jsp
  3. =/WEB-INF/jsp/
  4. #this is set port
  5. #=80
  6. =443
  7. #添加ssl证书
  8. #ssl证书文件名
  9. -store=classpath:
  10. -store-password=xxxxxxxx
  11. =xxxxxxxx

在实际项目中可能涉及数据库,还要整合 mybatis,在文章中,仅仅做测试就不做使用数据库的测试

首先创建 springboot 的入库程序: 下为代码:

  1. @ComponentScan(basePackages= "")//添加扫包@ComponentScan(basePackages= "")
  2. @EnableAutoConfiguration
  3. public class App{
  4. //启动springboot
  5. public static void main(String[] args) {
  6. SpringApplication.run(, args);
  7. }
  8. }

启动项目时直接右击 run 即可

在写一个测试的 controller 进行微信小程序与 java 后端实现通信,controller 代码如下:

  1. @RestController
  2. @SpringBootApplication
  3. public class ControllerText {
  4. @RequestMapping("getUser")
  5. public Map<String, Object> getUser(){
  6. ("微信小程序正在调用。。。");
  7. Map<String, Object> map = new HashMap<String, Object>();
  8. List<String> list = new ArrayList<String>();
  9. list.add("zhangsan");
  10. list.add("lisi");
  11. list.add("wanger");
  12. list.add("mazi");
  13. ("list",list);
  14. ("微信小程序调用完成。。。");
  15. return map;
  16. }
  17. @RequestMapping("getWord")
  18. public Map<String, Object> getText(String word){
  19. Map<String, Object> map = new HashMap<String, Object>();
  20. String message = "我能力有限,不要为难我";
  21. if ("后来".equals(word)) {
  22. message="正在热映的后来的我们是刘若英的处女作。";
  23. }else if("微信小程序".equals(word)){
  24. message= "想获取更多微信小程序相关知识,请更多的阅读微信官方文档,还有其他更多微信开发相关的内容,学无止境。";
  25. }else if("西安工业大学".equals(word)){
  26. message="西安工业大学(Xi'an Technological University)简称”西安工大“,位于世界历史名城古都西安,是中国西北地区唯一一所以兵工为特色,以工为主,理、文、经、管、法协调发展的教学研究型大学。原*兵器工业部直属的七所本科院校之一(“兵工七子”),陕西省重点建设的高水平教学研究型大学、陕西省人民*与中国兵器工业集团、国防科技工业局共建高校、教育部“卓越工程师教育培养计划”试点高校、陕西省大学生创新能力培养综合改革试点学校。国家二级保密资格单位,是一所以\"军民结合,寓军于民\"的国防科研高校。";
  27. }
  28. ("message", message);
  29. return map;
  30. }
  31. @RequestMapping("")
  32. public String getText(){
  33. return "hello world";
  34. }
  35. }

至此简易的后端框架及测试基本完成

说明:@RestController 与 Controller 注解的区别

@RestController 相当于它能实现将后端得到的数据在前端页面(网页)中以 json 串的形式传递。

微信小程序与后台数据之间的数据传递就是以 json 报文的形式传递。这也是选择 springboot 框架开发小程序后台的主要原因之一,可以方便进行小程序后套开发

  1. 小程序发起网络请求 

    在完成了小程序的后端开发,下面进行小程序端发起网络请求。 

    下面以一个简单的按钮请求数据为例: 

    wxml 文件: 
  1. <button bindtap='houduanButton1'>点击发起请求</button>
  2. <view wx:for="{{list}}">
  3. 姓名:{{item}}
  4. </view>

js 文件:

  1. /**
  2. * 页面的初始数据
  3. */
  4. data: {
  5. list: '',
  6. word: '',
  7. message:''
  8. },
  9. houduanButton1: function () {
  10. var that = this;
  11. ({
  12. url: 'http://localhost:443/getUser',
  13. method: 'GET',
  14. header: {
  15. 'content-type': 'application/json' // 默认值
  16. },
  17. success: function (res) {
  18. (res.data)//打印到控制台
  19. var list = res.data.list;
  20. if (list == null) {
  21. var toastText = '数据获取失败';
  22. ({
  23. title: toastText,
  24. icon: '',
  25. duration: 2000
  26. });
  27. } else {
  28. ({
  29. list: list
  30. })
  31. }
  32. }
  33. })
  34. }

主要调用的 api 就是 wx.request, 想知道将详细的介绍大家可以去《微信公众平台》。

接下来以搜索类型的请求为例:

wxml 文件:

  1. <input type="text" class="houduanTab_input" placeholder="请输入你要查询的内容" bindinput='houduanTab_input'></input>
  2. <button bindtap='houduanButton2'>查询</button>
  3. <view wx:if="{{message!=''}}">
  4. {{message}}
  5. </view>

js 文件:变量的定义见上一个 js 文件

  1. //获取输入框的内容
  2. houduanTab_input: function (e) {
  3. ({
  4. word: e.detail.value
  5. })
  6. },
  7. // houduanButton2的网络请求
  8. houduanButton2: function () {
  9. var that = this;
  10. ({
  11. url: 'http://localhost:443/getWord',
  12. data:{
  13. word: that.data.word
  14. },
  15. method: 'GET',
  16. header: {
  17. 'content-type': 'application/json' // 默认值
  18. },
  19. success: function (res) {
  20. (res.data)//打印到控制台
  21. var message = res.data.message;
  22. if (message == null) {
  23. var toastText = '数据获取失败';
  24. ({
  25. title: toastText,
  26. icon: '',
  27. duration: 2000
  28. });
  29. } else {
  30. ({
  31. message: message
  32. })
  33. }
  34. }
  35. })
  36. }

至此已经完成了简易的微信小程序端与 java 后端进行通信。 
       现在可以在启动后端项目在微信开发工具上进行测试。 
演示效果:

 

所以至此已经完成了小程序的前后端通信。

申请
其实也不算什么申请,在购买域名之后可以申请免费的 ssl 证书,在前面的配置文件 中有证书的配置,将证书的 pfx 文件直接添加到后端项目下即可。
2. 购买服务器部署后端 api 代码
对于 springboot 项目,本人建议打 jar,直接在服务器上部署即可,在服务器上只需要安装对应版本的 jdk 即可。项目部署命令:
我购买的是阿里云的轻量级应用服务器部署的。比较划算吧。


运行命令: nohup java -jar &

nohup 的意思不挂服务,常驻的意思,除非云服务器重启,那就没法了;最后一个 & 表示执行命令后要生成日志文件 。
当然还可以使用 java -jar