一个Android开发者眼中的微信小程序

2024年华为Android面经,5年老安卓面试竟然被这3道Android基础题难倒了 我们在学技术的时候,如果没有注重搭建知识框架的话,学到后期的话你就会遇到一个问题,就是会感觉到自己之前学习的知识很乱,不成系统,再加上行业技术更新很快,越往后自己学习的知识会越来越多,而之前的学习又是零散的自己没有整理的,你就会感觉自己所掌握的这些知识是散乱的。就好像很多点,线可能已经连接成了,但是就是组不成一个面。当我们做一个大一点的项目,需要熟练用到很多相关技术面,甚至会用到组件化技术。如果你长期只使用一些常用的技术点,那么你可能还有很长一段时间要待在小公司搬运代码了。 阅读详情

前言

转眼间微信小程序已经推出好几个年头了,作为一名Android开发者,一直想尝试下;正好赶上公司策略调整,在开发完App后领导想着在开发一个小程序版,基于微信庞大的用户量,微信小程序成为了首选;在完成了两三个微信小程序后,有了些心得体会,特此记录下来。鉴于篇幅,这里只说说一些基本的体会,后续会给出更多实际遇到的问题解决。

开搞

首先我们得先看下官方教程:微信小程序官方文档
如果只是体验不发布代码的话就没必要申请账号了,还有不得不说用惯了AS后再用微信的开发工具难免会吐槽一番,当然也可以使用其他的工具然后安装插件开发,这里就不做讨论了。

布局

1、在 Android里面布局代码都是写在xml里面;在小程序里面则是通过wxml(页面)+ wxss(样式);当然小程序样式也可以都写在wxml里面,类似:

<view style='width:35rpx;height:35rpx;float:right;'></view>

通过style属性也可以写样式,但是一两个还行,多了就会显得很乱。

2、Android里面子view都是在viewgroup 里面;小程序里面<view>标签既可以是子view,也可以是viewgroup,通过wxss能展示各种样式,也能显示文本。
例如:显示竖向排列的两个文本。

在Android里面:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">Ï
            <TextView
                android:text="test"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <TextView
                android:text="test"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
   </LinearLayout>

小程序里面:

wxml:

<view class="parent">
    <text>test</text>
    <text>test</text>
</view>

wxss:

.parent{
  display: flex;
  flex-direction: column;
}

可以说小程序里面的flex布局和Android的LinearLayout布局很相似,flex也是推荐的布局,具体可以看教程:Flex布局教程 个人感觉写的很好。

如果要想元素都重叠,类似Android里面的FrameLayout,则需要设置position:absolute,然后通过margin、padding来定位到合适的位置。不得不说小程序的布局相比Android来说还是麻烦不少的,只能通过多练习来熟悉了。。。

3、Android里面可以通过<include> 来引入布局,小程序里面也有template布局模版,通过<import> 引入即可。

4、小程序里面布局推荐使用rpx作为尺寸单位。

业务

1、Android的业务逻辑都是写在Java文件里面,小程序里面都是写在js里面;同样的类似Android的页面生命周期,小程序也有生命周期:

  onLoad: function(options) {
    // 页面初始化
  },
  onReady: function() {
    // 页面渲染完成
  },
  onShow: function() {
    // 页面显示
  },
  onHide: function() {
    // 页面推到后台
  },
  onUnload: function() {
    // 页面关闭
  },

小程序不像Android里面可以监听页面的返回键,所以要在页面返回时处理业务可以在onUnload中处理。

2、与Android中Application类相似,小程序中app.js相当于全局入口,如果开发者有需要在小程序启动时执行的操作,就可以在 onLaunch 方法中执行。
app.js还提供了一个 globalData,用来存储整个小程序使用期间的公共数据。
在其他页面可以通过 getApp() 方法用以获取小程序的 App 实例,来使用全局公共数据。

3、如果有些需要存储的简单数据,类似Android中的SharedPreferences,小程序可以使用wx.setStorageSync("key", value); 存储;wx.getStorageSync("key"); 取出;

4、页面之间的数据传递在小程序里面只能通过路由的方式,就是在跳转链接拼接上要传递的数据:
传数据:

//let obj = JSON.stringify(obj);
wx.navigateTo({
      url: '/pages/index/index?id=' + id,
    })

接受:

 onLoad: function(options) {
 // let obj = JSON.parse(options.obj);
    let id = options.id;
  }

如果要传递对象,则可以在传递前使用JSON.stringify(obj); 将数据转成字符串,在接受时使用JSON.parse(obj); 转换回对象;

5、数据刷新;在处理完数据后我们会用this.setData({...}) 来更新数据源,但是很多初学者都会犯一个错误,看如下错误代码:

wx.request({
            url: "request_url",
            success: function (res) {
                this.setData({...})
            }
        });

按照上面写程序就会报错,再看正确代码:

let that = this;
wx.request({
            url: "request_url",
            success: function (res) {
                that.setData({...})
            }
        });

两者区别在于多了一个变量 that,并且在 onLoad() 方法里面对它进行了赋值,使它等于 this。其实说白了就是一个作用域的问题;其实在Android里面我们也遇到过,就是在点击事件里面跳转设置this的时候,我们都会写上类名,类似:Intent intent =new Intent(MainActivity.this,TestActivity.class); 。

6:事件拦截:在Android里面会有很多事件拦截处理;小程序里面也不例外。看如下小程序布局:

<view bindtap="onclick">
   <image bindtap='tapclick'></image>
</view>

如上我给子父view都设置了bindtap点击事件,这个时候点击下去会发现两个事件都执行了,这在小程序里面称为事件冒泡;要想image被点击,view不被点击则得使用catchtap 属性;修改如下:

<view bindtap="onclick">
   <image catchtap='tapclick'></image>
</view>

这样view的点击事件就不会响应了。
ps:还有些情况是页面层级导致的,需在wxss里面使用z-index 调整页面层级。

结语

好了,今天的分享就到这里了,后续会分享一些实际使用过程中遇到问题的解决方案。
Ps:总的来说写了一段时间的js后发现这种弱语言写起来真的挺舒服,好多数据类型方面都不需要考虑,同时带来的坏处就是不便于查看调试。

最后自己闲下做了个实用的小工具,有兴趣的可以试试。
这里写图片描述

移动开发趋势解析:从硬件平台期到微信小程序与Unity生态的实战指南 移动开发领域正经历从硬件创新放缓向软件体验深耕的转变。其核心原理在于,随着智能手机硬件性能进入平台期,技术创新的焦点从单纯的硬件参数比拼,转向了系统底层优化、应用交互细节和跨平台生态融合。这一转变的技术价值在于,它促使开发者更加关注性能优化、隐私安全与用户体验的深度融合,从而在存量市场中构建竞争壁垒。当前,移动开发的应用场景已高度泛化,涵盖了从超级App(如微信)的微创新、Android系统权限适配,到Unity引擎在游戏、数字孪生等领域的跨界应用。本文聚焦于微信小程序开发中的常见报错排查、Android 阅读详情

相关推荐

一名Android开发者的微信小程序填坑之路(1)

前言首先要声明的事,我是一名 Android 开发者,之前基本没有前端开发经验,甚至连 JS ,HTML 都是为了开发小程序现学的一些皮毛——所以文章中所提到的一些点也许在资深前端开发者看来只是小case,但是站在一个 Android 开发者的角度来看确实是大坑。前面就不说太多东西了,文章的末尾再谈谈我对小程序的一些看法——这篇文章主要是谈谈在开发小程序的过程中遇到的一些坑。PS:推荐一下我写的一个

lypeer的专栏 5万+

微信小程序和Android开发的对比

1、开发语言 微信小程序主要开发语言是 javascript; 使用 wxml + wxss 文件来描述界面; 使用 app.json + app.wxss 文件来配置项目; 2、wxml、wxss 是什么? 对于 Android 来说,对于页面的描述基本上在 xml 中定义的,比如: &lt;FrameLayout android:id="@+id/layout" android:lay...

xifei66的博客 4699

Android Studio搭建简单类微信小程序首页框架

目录 1、页面布局 2、代码具体实现 3、界面展示 1、页面布局 第一步:创建top.xml和bottom.xml.文件,用于设计界面顶部与底部按键。再修改activity_main.xml文件,将前面两个文件效果加入。最后设计四个功能界面。 1、top.xml 用于首页标题显示 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="m.

QJLQMK的博客 6301

从android 看微信小程序

1、概述微信小程序 公测出来也2周多点了。注册了开发者,了解了下。感觉和移动端的理念差不多。 自己是做android开发的,所以从android的角度了解下2、web前端的编程方式不可否认的是微信小程序的 架构是 B-S的架构。 写完代码上传,就可以用了。 编程语言用的也是解释性的语言 js, 界面布局是扩展的 xml 布局( 微信叫他为wxml)。这点和android的布局方式很像 界面元素

2498

微信小程序开发入门练习篇

微信小程序开发入门练习篇

delphi小程序---里面都是完整的

这些小程序都是很完整的,大家可以借鉴借鉴。。

Android Studio 微信小程序开发

安卓开发记录提示:以下是本篇文章正文内容,下面案例可供参考。

qq_74201027的博客 1960

西门子PLC1200与CB1241模块的Modbus RTU从站配置全流程(附串口调试技巧)

本文详细介绍了西门子S7-1200 PLC与CB1241通信模块实现Modbus RTU从站配置的全流程,包括硬件接线规范、TIA Portal工程组态、通信指令编程及串口调试技巧。通过实战案例和常见错误处理方案,帮助工程师快速搭建稳定的工业通信系统,提升自动化设备的互联互通能力。

weixin_29165725的博客 324

微信小程序之微信登陆 —— 微信小程序教程系列(20)

简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆。只不过是,还没有写入到咱们自家的后台中而已。 新建一个Hello World项目,找到app.js文件打开,代码如下: app.js: App({   onLaunch: function () {

michael的博客 4万+

魔兽RPG老地图逆向工程:解密三国列传3.0武将招募限制(附JASS实战)

本文详细解析了《三国列传3.0》魔兽RPG地图的武将招募限制机制,通过逆向工程和JASS脚本修改技术,突破SLK加密防线并解密游戏逻辑。文章提供了从工具准备到代码修改的完整实战指南,帮助玩家解除武将数量限制,重温经典游戏的乐趣。

i1j2k的博客 360

无人驾驶之车辆控制(1)纯跟踪(Pure Pursuit)算法与Stanley算法

目录引言1 Pure Pursuit纯几何跟踪算法1.1 车辆运动学自行车模型1.2 算法原理1.3 仿真测试2 Stanley算法2.1 算法原理2.2 仿真测试3 总结 引言 本文对Pure Pursuit以及Stanley control两种算法进行了调研以及初步的性能摸底。 1 Pure Pursuit纯几何跟踪算法 1.1 车辆运动学自行车模型 运动学是从几何学的角度研究物体的运动规律,...

zxxxxxxy的博客 2万+

深度解析:Android APP集成与拉起微信小程序开发全攻略

本文介绍了APP如何通过OpenSDK拉起微信小程序的功能,包括背景介绍、跳转规则、Android开发示例及报错解决方案。Android开发示例中,详细说明了下载SDK、调用接口、获取小程序原始Id等步骤。同时,针对报错提示bad_param,提供了解决方案,包括进行微信Android SDK版本升级适配和在AndroidManifest.xml中增加标签等。虽然作者在测试过程中遇到了问题,但本文为开发者提供了实用的参考和指导,感兴趣且具备条件的朋友可以尝试实现APP拉起小程序的功能。

帅次的博客 1万+

RS-485调试踩坑实录:MAX13487数据回环问题排查与修复(附电路图)

本文深入解析了RS-485通信中MAX13487芯片的数据回环问题,提供了详细的排查过程和解决方案。通过分析芯片特性和自动换向机制,揭示了RO引脚配置不当是导致问题的关键原因,并给出硬件(添加上拉电阻)和软件(调整MCU配置)两种修复方案,附有优化设计建议和实际调试技巧。

play7的博客 1295

安卓开发交流!腾讯、网易必问的20道题Android面试题,附答案

导语 你想做安卓开发,怎么系统学习?你只需要看完这一篇就够了!!为什么只看这一篇就够了?现在优快云、知乎、掘金、GitHub上各路大佬层出不穷,他们深耕Android开发多年,总结出满满的学习干货。但同时也存在很多非良心的博主,要么活出了人类的本质,复读机一样到处转载; 要么纯粹自嗨型草草说了自己的工作经历,让读者无法从良莠不齐的资源海洋中高效高质地获取真正有用的信息。本文的目的很简单,一句话:用最少的时间,最高效率,让你清楚:想要做Android开发,你需要学什么?你该在哪学? 本文的特点在于将繁琐的知

CHAMPION8888的博客 308

A股量化实战:用Python回测动量因子策略(附聚宽完整代码)

本文详细介绍了如何在A股市场使用Python和聚宽平台,实战回测一个动量因子量化交易策略。从环境搭建、数据获取到完整的策略代码实现与回测分析,手把手教你验证“强者恒强”的投资逻辑,并提供参数优化与实战避坑指南,助力量化新手迈出第一步。

weixin_29264201的博客 967

【华为2021校招】笔试题【通用硬件】

时间:2020/07/15 19:00 时长:60min 题型:40单选+5多选 难度:中等 考察范围:模电、数电、SI、EMC、电源、微机原理、计算机网络、材料

Jkcia的博客 4万+

Android开发者该学习哪些东西提高竞争力?系列教学

导语 你想做安卓开发,怎么系统学习?你只需要看完这一篇就够了!!为什么只看这一篇就够了?现在优快云、知乎、掘金、GitHub上各路大佬层出不穷,他们深耕Android开发多年,总结出满满的学习干货。但同时也存在很多非良心的博主,要么活出了人类的本质,复读机一样到处转载; 要么纯粹自嗨型草草说了自己的工作经历,让读者无法从良莠不齐的资源海洋中高效高质地获取真正有用的信息。本文的目的很简单,一句话:用最少的时间,最高效率,让你清楚:想要做Android开发,你需要学什么?你该在哪学? 本文的特点在于将繁琐的知

m0_56255252的博客 107

Python 爬虫实战:全球渔业船舶捕捞记录数据采集与分析全攻略

通过本项目,我们实现了对全球渔业船舶捕捞记录数据的采集、处理和可视化,为渔业资源管理和海洋生态保护提供了数据支持。未来,可以进一步结合机器学习和深度学习技术,对捕捞行为进行预测和分类,提高对非法捕捞活动的识别能力。

2201_76125261的博客 554

安卓App微信小程序自动化测试(解决方案)

处理微信小程序的解决办法??? 微信小程序是x5内核需要做处理才可以 处理x5内核的方法 微信输入框输入http://debugmm.qq.com/?forcex5=true 点击 http://debugx5.qq.com选择对用的x5调试模式 1.第一步:首先需要连接到先对应的手机,打开手机的usb调试模式,打开对应的开发者选项,建立电脑与手机的连接这里采用(数据线连接的方式),连接完成。使...

qq_45550930的博客 788

Pytorch入门实战(2)-使用BP神经网络实现MNIST手写数字识别

上一篇:Pytorch入门实战(1) - 实现线性回归 涉及知识点 Pytorch nn.Module的基本使用 Pytorch nn.Linear的基本用法 PytorchVision Transforms的基本使用 Pytorch中DataLoader的基本用法 Pytorch详解NLLLoss和CrossEntropyLoss 如何确定神经网络的层数和隐藏层神经元数量 本文内容 本文将会使用BP神经网络(就是最普通的神经网络)实现一个MNIST手写数据集的实现。话不多说,直接开始。 首先先导入需要的包

iioSnail的博客 6615

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

写给Android开发者看的『微信小程序和Android开发的对比』

1. 前言 1.1 微信小程序 微信小程序近期可谓是动作频出,仅最近新增的能力就有: 允许个人开发者申请注册小程序、公众号可以打开小程序、可以在 App 分享、支持识别图片二维码打开小程序、可以支持第三方平台配置、新增数据分析接口、代码包大小从1M扩大到2M、推出小程序码、公众号关联小程序新规则、公众平台新增快速创建小程序、…… 种种迹象表明,微信对小程序的期望值是很大,所

AT弄潮儿 5878

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

android跳转到微信小程序

案例代码: private IWXAPI api; api = WXAPIFactory.createWXAPI(getContext(), &quot;wx************&quot;);//appID String userName = uri.getQueryParameter(&quot;appid&quot;);//原始ID String path = uri.getQueryParamete...

正义 9030

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

安卓开发学习微信小程序二

接上文,我下载了两个开源的小程序的项目。参照着写了自己的第一个小程序。 这篇博客的内容是记录一下,简单的控件使用,还有一些初学者的注意事项。微信小程序初学者易犯的错误,大家可以对比一下。 项目效果如下所示。 简单的登录页面,登录的时候进行手机号还有密码的一个判断,然后显示出相应的提示内容。还有一个就是我想练一下按钮不同状态下不同UI的展示。这篇博客会都展示出来相应的代码。 首先第一步就是页面的布局 每一个页面都会有一个对应的wxss文件,代码如下: 此处有一个需要注意的点就是此处每个

weixin_37166398的博客 747

2021Android高级进阶学习资料,再不了解你就out啦

前文 本文希望通过揭开一些 React 隐藏的技术细节, 来辅助对官方文档中某些概念的理解 读者可以将本文看做对官方文档的补充 行文方式我采用的是提问-解答的方式, 即先根据官方文档给出的使用规则, 提出Why, 然后我们根据实际的调试再来解答这些Why, 最后系统的整理这些 Why 变成 How, 如果你们有更好的行文方式, 也欢迎留言讨论 另外为了阅读体验, 我不会粘贴过多的源码, 避免打断各位读者的思路. Android开发面试的几部分 1、基础知识 基础知识包括几个部分:Java(JDK、

m0_57983661的博客 830

从Java开发到Android再到微信小程序

研究了一天微信小程序,总结一下吧,以我的理解,微信小程序就是将web与App的思想结合到一起.前一段时间写了太久Android,看见微信小程序的view列表,就想起了ListView.无论是Android,还是web,还是小程序,它们的思想精髓都是一样的,只要将这一点理解透彻,那写起代码来就很容易了.刚开始学习写安卓的时候,由于没有美工,只是想实现,于是就写出了这样的页面很多人第一印象就是丑,但是...

李俊标的博客 6093
上一篇: Android-RecyclerView列表倒计时错乱问题
下一篇: IDEA-springboot项目报错could not autowire
Mackkill
博客等级 码龄15年 65粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值