昨晚临睡觉前,还在想应该给xx打个电话,问问微信应用号应该有原生 UI 吧,要不然跟直接跑 HTML 5 有什么区别?

而今天一大早我便一本正经胡说八道猜想,微信小程序不会有 JS IDE ,一个小时之后,发现被打脸了,截图为证。

在众多消息里,啃先生排除掉预测类的信息,汲取了对于技术从业者有用的信息,整理出此文章,说说「微信小程序」开发的设计理念和入门。

在文章的最后告诉你,即使没有进行内测名单,你也可以开发微信小程序。

壹 | 设计理念

  • 它是一个混合程序,所以即不是纯粹的 Native App ,也不是纯粹的 Web 应用。

  • 它是一个「封闭」的开发套件和框架,而不是「自由」的 JavaScript + CSS + HTML 。因此,你不能任性地使用 jQuery,zepto,更不能使用基于 jQuery 的第三方控件 ,也由不得开发者决定要用 Angular 还是 React。

  • 它很像 Apple 开发者的范式,有开发者账号,有 IDE ,有构建工具,有 UI 规范等等。

  • MVC架构,开发者不可直接操作 DOM 节点,页面根据数据的变化渲染 UI ,业务逻辑专注于数据操作。

貳 | 生命周期

「微信小程序」开发框架提供了 App 生命周期的管理,从打开一个微信小程序到离开过程是这样的:

因此在编程时,有以下必不可少的元素:

  1. app.json 它是App的配置中心,目前知道的配置项有窗体外观「window」 ,菜单项及各项的外观「tabBar」,网络请求参数「networkTimeout」,以及页面「page」它配置此App包含哪些页面。

  2. app.wxxs 这是App的公共样式,就是CSS

  3. app.js 这是App的启动脚本,这里可以处理一些App启动过程中页面加载之前要处理的事情。

  4. 页面 一个App可包含多个页面,页面的相对访问路径被配置在app.json里,每个页面可以包含 [页面名].js、[页面名].wxml、[页面名].wxxs、以及配置文件 [页面名].json 。其中 wxxs 和 json 文件不是必需要的,如果有,那么它们会覆盖 app.json 和 app.wxxs 的相同配置项。

以上至少四个文件,即可生成一个最简单的微信小程序。

叄 | app.js 和 [页面名].js

微信执行环境提供了全局的 App 实例,和 Page 实例,其中 app.js 主要是给 App 实例做配置,例如定义 onLaunch 方法,让 App 启动时,执行一些任务。

而页面的脚本例如 page1.js 则需要给 Page 实例做配置

肆 | 页面渲染

微信小程序并不允许开发者直接操作页面 DOM 结点。
那么页面 UI 怎么更新呢?熟悉 React 的应该知道,React 组件根据 state 变化来渲染 UI,业务逻辑专注于数据处理,微信小程序开发框架也是如此。以下 page1.wxml 使了类似 jsx 的语法,它使用 page1.js 的data 属性进行渲染,并且当 data 改变时,自动完成 UI 更新。

微信提供了几个 API 用于路由控制

  • wx.navigateTo( Object ) 保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回到原页面

  • wx.redirectTo( Object ) 关闭当前页面,跳转到应用内某个页面

  • wx.navigateBack( ) 关闭当前页面,跳转到上一页

陸 | 网络请求

网络请求也不是使用 XHR 标准,微信提供了网络请求相关 API ,有如下接口

柒 | 一些开发 Tips

理论上来讲,以下结论是正确的

  • 是否支持 JavaScript ES6?不管是否支持,你可以使用 ES6 进行编码,使用 Babel 构建出 ES5 ,然后再到微信开发者工具中构建出微信小程序

  • 是否可以使用 less 等预处理语言。wxxs 使用的是 CSS 语言,所以应该是可以的

  • HTML标签与微信的标签可以混着用,但是并不是所有的标签都可用,比如a 标签的 href 属性是无效的,因为微信小程序只能在 app.json 里有配置的页面间跳转,并且使用路由 API 进行控制,不可任意跳。

  • 掌握普通的 Web 开发,对开发微信小程序有没有帮助。思维上有帮助,尤其是对于熟悉 React 开发框架的开发者。

以上,纯粹一本正经地纸上谈兵,最新消息显示,微信开发者工具已经被破解了,所以,现在你就可以开始开发微信小程序了,文章发布时还可用,小伙伴们尽快去下载安装,详见 Github 链接: https://github.com/login?retu...

最后不忘推介一下公众号,欢迎关注转发

IDE已破解,不用预热,马上进入「微信小程序」开发相关推荐

  1. 关于「微信小程序」背后的故事

    前天晚上,小编的朋友圈被一则消息刷屏. 微信要推出应用号,我们暂且叫它小程序. 2021年年初张小龙在微信公开课上的的只言片语引发了大家对Web应用的无限憧憬, 9月21日,它终于诞生了! 作为新媒体 ...

  2. 「前端开发者」如何把握住「微信小程序」这波红利?

    由于前两周一直在老家处理重要事情,虽然朋友圈被「微信小程序」刷爆了,但并没有时间深入了解. 昨天回广州之后,第一件事情就是把「微信小程序」相关的文章.开发文档.设计规范全部看了一遍,基本上明白了「微信 ...

  3. 「微信小程序」剖析(二):框架原理 | 在桌面浏览器上运行的

    在微信中是要这样调用的: 就会返回下面的结果: 看来这个名为wx-map的标签就是微信下的map标签,它是wx-page的children.然后让我们在WAWebview中搜索一下,就会发现一个很有意 ...

  4. html5 微信获取当前位置,「微信小程序」实现获取当前位置并在地图上显示

    盆一框发互会理工.择各近些架现跳轻机审蓝器友圈最近真是被微信小程序这货刷爆了,哪那都是它,作为一个喜欢尝(作)鲜(死)的前端汪来说,我肯定不会轻易放弃这么好的尝试机会,嘛溜的,先搭好环境压压惊分博累发 ...

  5. 「微信小程序」|开发常用事例(六)

    历史文章回顾: 微信小程序 | 开发常用事例(一) 微信小程序 | 开发常用事例(二) 微信小程序 Notes | 开发常用事例(三) 微信小程序 Notes | 开发常用事例(四) 微信小程序 No ...

  6. 玩转微信应用号,「小程序」开发实操指南第一弹

    摘要: 怎样将一个「服务号」改造成为「小程序」?全球首个微信应用号开发教程第一弹. 微信应用号(小程序,「应用号」的新称呼)终于来了! 目前还处于内测阶段,微信只邀请了部分企业参与封测.想必大家都关心 ...

  7. 头条号个人中心登录_头条号平台上线「插入小程序」功能

    头条号平台上线「插入小程序」功能,创作者可在图文.小视频和自定义菜单中插入头条小程序,帐号服务能力和变现能力进一步提升. 一.什么是「头条小程序」? 「头条小程序」是为内容生产者提供的延伸变现工具,是 ...

  8. 微信小程序云开发 · 从0搭建商业级校园跑腿平台(已开源)

    微信小程序云开发  ·  从零搭建商业级校园跑腿平台 小秃僧 新生代农民工,一枚准毕业的大四学生,热爱前端开发,做个有态度.有思想.有价值的公众号. 好久不更新了,再更新已是打工人! 我将分享用云开发 ...

  9. 头条号个人中心登录_头条号平台上线「插入小程序」功能 帐号服务变现进一步提升...

    头条号平台上线「插入小程序」功能,创作者可在图文.小视频和自定义菜单中插入头条小程序,帐号服务能力和变现能力进一步提升. 一.什么是「头条小程序」? 「头条小程序」是为内容生产者提供的延伸变现工具,是 ...

  10. iOS - App Clip「苹果小程序」

    App Clips是什么? 官方对其的定义是-- App clips are a great way for users to quickly access and experience what y ...

最新文章

  1. Leangoo 6.2.6 版发布
  2. codewars047: 街头霸王2
  3. 设计模式-工厂方法(Factory Method)
  4. Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)
  5. Dojo学习笔记(8. dojo.event dojo.event.topic dojo.event.browser)
  6. MySQL将表中的yes改成no_mysql在不需要改程序的情况下通过操作数据库对单表数据量大的表进行分表...
  7. .net操作读取word中的图像并保存
  8. 海姆霍兹获3000万元A轮融资,投资方为国科嘉和
  9. C++:字符(串)输入和输出
  10. IBM SPSS Modeler 【3】 神经网络的生成
  11. csm和uefi_是否应该使用UEFI或BIOS(旧版/ CSM)引导模式安装操作系统?[重复]
  12. 服务器appcrash的问题怎么修复,Win7系统出现APPCRASH错误的修复方法
  13. 什么是汽车SOA架构?【长期更新】【800字】【原创】
  14. Spring boot视频播放(解决MP4大文件无法播放),整合ffmpeg,用m3u8切片播放。
  15. 戴尔3040计算机没有VGA接口,电脑没有vga接口怎么办
  16. java计算机毕业设计科院垃圾分类系统源码+数据库+系统+lw文档+mybatis+运行部署
  17. 获取当前位置的经度纬度
  18. MySQL的锁机制 - 记录锁、间隙锁、临键锁
  19. 【第01题】A + B | 基础输入输出,开启学习C语言打卡的序章
  20. LCD+TP for linux BSP

热门文章

  1. jQuery课堂测验
  2. BFS Codeforces Beta Round #94 (Div. 2 Only) C. Statues
  3. 转 json数组对象和对象数组
  4. [转]Delphi的运算符重载
  5. VMware 虚拟机安装
  6. 搭建ssm中遇到的问题
  7. LOJ6504 「雅礼集训 2018 Day5」Convex 凸包、莫队
  8. linux——文件操作
  9. [纯技术讨论]从12306谈海量事务高速处理系统
  10. Windows上搭建Git服务器