《微信小程序开发入门精要》——第1章,第1.1节什么是微信小程序

简介:

本节书摘来自异步社区《微信小程序开发入门精要》一书中的第1章,第1.1节什么是微信小程序,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 微信小程序入门
微信小程序开发入门精要
微信小程序是腾讯在2016年9月推出的一种新型的微信扩展。尽管目前还没有正式开发,但依然受到了非常多的关注。这主要是由于腾讯的影响力,以及微信在国内拥有的庞大的用户群体。在2017年1月9日,腾讯已经正式上线了小程序,这意味着任何人都可以在手机微信中使用小程序。由于目前小程序的数量还不多,所以现在进入小程序开发领域,可能会赶上小程序的第一拨红利。OK,废话少说,从本章开始,让我们深入了解微信小程序的原理以及详细的开发过程。

本章要点
什么是微信小程序
注册小程序账号
获取小程序的AppID
设置小程序信息
配置微信小程序的开发环境
微信小程序的结构
开发第一个微信小程序:猜拳游戏

1.1 什么是微信小程序
微信小程序刚一公布,朋友圈就被微信小程序刷爆了!“微信之父”张小龙说:“小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。这也体现了‘用完即走’的理念,用户不关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载”。

我也看了网上的一些关于微信小程序的文章,但内容质量良莠不齐。好吧,我就通过本节让大家了解一下什么是微信小程序,以及微信小程序到底能为我们带来什么。

由于之前有微信公众号,而公众号里面的程序其实就是将移动Web(主要是HTML5、CSS、JavaScript等技术)嵌入到微信中,当然,会调用一些微信提供的API。所以很多人自然而然会想到微信小程序用的也是HTML5。但事实是,微信小程序和HTML5,甚至和Web,没有任何关系。因为Web的性能低下,尤其对于那些追求完美的人,在手机上使用Web简直不能忍受。千万别说,等以后手机性能发展到和现在的PC一样就好了,估计等到那时候,会出现比手机更小巧,当然,性能也更差的设备。如果手机成为了PC,那么这些新出现的设备将会取代现在手机的位置。就像人们永远等待新产品降价再买,但等到这些产品真降价了,又会有更好的产品问世,很难等到既享受新产品,同时又享受低价的时候。

既然说微信小程序和Web一点关系都没有,那么有什么证据呢?这一点从微信小程序官方文档的描述中就可以看出。感兴趣的读者可以通过下面的地址查看微信小程序官方文档。

https://mp.weixin.qq.com/debug/wxadoc/dev/

微信小程序主要由3个全局的文件和一些与页面有关的文件组成,全局文件包括app.js、app.json和app.wxss。其中,app.js是JavaScript文件,用于编写全局的事件,例如微信小程序启动时要执行的代码,类似于iOS工程中AppDelegate.m文件的作用;app.json用于配置微信小程序,例如由哪些页面组成,类似于Android工程中AndroidManifest.xml文件的作用;app.wxss是公共样式表,用于设置整个工程都可以使用的样式,类似于Android中的theme或style资源,全局都可以使用。

可能有人会问,微信小程序不是使用了JavaScript吗?难道和Web没有关系?这里需要明确,JavaScript只是一种语言,未必用在Web上,JavaScript同样可以用在服务端,如Node.js,当然也可以用在移动端,作为独立的语言运行。

微信小程序的页面部分由4个文件组成,这里的页面实际上就是窗口。假设页面名字为index,那么该页面由index.js、index.wxml、index.wxss和index.json组成。index.js用于编写页面的逻辑代码;index.wxml是腾讯自己设计的一种标记语言,可以称为微信标记语言,用于描述UI;index.wxss是针对该页面的样式表,是私有的;index.json是针对页面的配置文件。

这里关键点是index.wxss,用过React Native的读者应该很熟悉JSX,它是一种描述UI的类XML语言。其基本原理是通过XML文件描述UI,并动态创建原生的UI。例如,React Native用View来描述顶层视图,用Text来描述文本输出控件,那么我们可以使用下面的代码来模拟这一动态创建过程。

Android:

View component = null;
if(tag == "View")
{
    component = new ViewGroup(…);
}
else if(tag == "Text")
{
    component = new TextView(…);
}
iOS:

UIView *component;
if(tag == "View")
{
    component = [UIView new];
}
else if(tag == "Text")
{
    component = [UILabel new];
}

上面描述的是基本的动态创建组件的过程,当然,实际的实现过程要比这个复杂得多,这里只做了原理上的描述。很显然,系统会根据不同平台,以及在JSX中的描述,生成不同的原生组件。

React Native使用的是JSX,类似地,微信小程序使用的是wxml(微信标记语言),它是一种腾讯自己设计的类JSX的语言,下面是wxml的代码示例。

<view class="container">
   <view  bindtap="bindViewTap" class="userinfo">
  <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
     <text class="userinfo-nickname">{{userInfo.nickName}}</text>
   </view>
   <view class="usermotto">
     <text class="user-motto">{{motto}}</text>
   </view>
 </view>

下面则是JSX的代码示例。

<View style={{flex:1}}>
    <DrawerLayoutAndroid 
    ref={drawerLayoutAndroid  => { this.drawerLayoutAndroid = drawerLayoutAndroid; }} drawerWidth={150} 
    drawerPosition={DrawerLayoutAndroid.positions.left} 
     renderNavigationView={() =>navigationView}> 
    <View style={{flex: 1, alignItems:'center'}}> 
       <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>我是主布局内容</Text> 
       </View> 
 </DrawerLayoutAndroid> 
 <View style={{flexDirection:'row'}}>
   <Text style={{flex:1}} onPress={this.onPress.bind(this)}>Open</Text>
  <Text style={{flex:1}}
onPress={()=>this.drawerLayoutAndroid.closeDrawer(0)}>Close</Text>
   </View>
</View>

从上述的两段代码可以看出,JSX和wxml非常相似,只是具体的组件名称和命名风格不同。例如,JSX所有组件名称首字母都大写(例如Text),而wxml所有组件名称首字母都小写(例如text),此外,组件属性也有一定的差异。

不管JSX和wxml的代码风格是否一样,系统处理它们的原理都是一样的,即根据这些代码自动生成原生的组件,就像前面描述的动态创建原生组件的过程一样。

尽管小程序本身和HTML5无关,但“微信Web开发者工具”(开发小程序的IDE)本身却和HTML5有很大的关系。开发“微信Web开发者工具”的技术是NW.js(node-webkit),这是一种允许使用HTML5、CSS和JavaScript开发跨平台(Windows、Mac OS X和Linux)桌面应用的框架,和NW.js类似的框架是Electron(Github主导的开源项目),用Electron开发的著名项目包括Atom IDE、Visual Studio Code、WordPress等。也就是说,不管是NW.js,还是Electron,都足够强大,以至于可以开发IDE和很多系统软件。尽管这两个框架都使用了HTML5作为UI描述,但在PC上,HTML5的性能表现良好(毕竟PC的CPU足够强大)。如果读者对使用Web技术开发跨平台桌面应用感兴趣,可以关注我的博客(http://geekori.cn),我会不定期推出相关的技术文章。

相关文章
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
2867 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
2008 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
存储 移动开发 小程序
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
基于开源技术栈构建的校园圈子系统小程序,整合社交与生活服务功能,涵盖兴趣圈子、私信聊天、资料共享、二手交易、兼职跑腿等六大核心模块。通过多端账号同步(微信公众号/小程序/H5),实现数据实时交互,满足学生群体的多元化需求。项目精准锚定校园市场,以“社交+服务”双轮驱动,提供一站式解决方案,支持快速部署与多校区运营,同时具备广告、佣金、会员等多元变现能力,是打造校园生态的理想工具。
1888 3
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
4259 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
25634 14
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
1697 3