最近,由于工作需要开始了解微信小程序,虽然小程序已经出了很久了,刚出的那段时间很火,看到很多关于小程序的技术文章,不过现在似乎没那么火了,anyway,我们还是可以学习下的。
1.理念:小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。
2.框架:框架的核心是一个响应的数据绑定系统。整个系统分为两块视图层(View)和逻辑层(App Service),框架可以让数据与视图非常简单地保持同步。当做数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新。
3.相关资料:调试工具下载,简易教程
初步了解这些基本信息后,我们先来看下TODOS这个应用做出来的最终效果
功能演示:

目录结构:

主要功能模块为:
index页面,新建任务,可完成增删等操作
los页面,记录在index页面的操作
下面我们详细介绍下
1.简单配置app.json文件:
{"pages":["pages/index/index", // 设置页面路径,项目打开后找到这个路径下的文件"pages/logs/logs"],"window":{ // 设置默认页面的窗口表现"backgroundTextStyle":"light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "TODOS","navigationBarTextStyle":"black"},"tabBar": { // 设置底部tab的表现"borderStyle": "white","backgroundColor": "#f5f5f5","selectedColor": "#222","list": [ // 对应底部下面两个菜单项;TODOS和LOGS{"pagePath": "pages/index/index","text": "TODOS","iconPath": "images/home.png","selectedIconPath": "images/home-actived.png"},{"pagePath": "pages/logs/logs","text": "LOGS","iconPath": "images/note.png","selectedIconPath": "images/note-actived.png"}]}}2.app.js和app.wxss文件
App() 函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等。App() 必须在 app.js 中注册,且不能注册多个。
示例代码
App({onLaunch: function() { // Do something initial when launch.},onShow: function() {// Do something when show.},onHide: function() {// Do something when hide.},onError: function(msg) {console.log(msg)},globalData: 'I am global data'})在这个项目中不需要加什么代码在App({})中,所以文件中只有一个App({})
app.wxss文件主要可以设置一些全局样式
page {height: 100%;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;}3.注册页面Page
Page() 函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。
// ===== 页面数据对象 =====data: {input: '',todos: [],leftCount: 0,allCompleted: false,logs: [],addOneLoading: false,loadingHidden: true,loadingText: '',toastHidden: true,toastText: '',clearAllLoading: false},
初始化数据作为页面的第一次渲染。data将会以JSON的形式由逻辑层传至渲染层,其数据可以是:字符串,数字,布尔值,对象,数组。
渲染层可以通过WXML对数据进行绑定。
<input class="new-todo" value="{{ input }}" placeholder="Anything here..." auto-focus bindinput="inputChangeHandle" bindchange="addTodoHandle"/>如上述代码中的input.// ===== 页面生命周期方法 =====onLoad: function () {// 从缓存获取任务列表数据,并用setData设置var todos = wx.getStorageSync('todo_list') // 调用 WX API 从本地缓存中获取数据if (todos) {var leftCount = todos.filter(function (item) {return !item.completed新闻热点
疑难解答