作者:ru xu,来自原文地址
基础描述
微信小程序分为app 实例和page实例
数据流小程序 分为逻辑层和视图层。 逻辑层用来处理数据和方面。 视图层用来做展现。 逻辑层用setData来更新视图层。 视图层通过事件来驱动逻辑层。 页面生命周期 vs app生命周期页面的生命周期 * onload : 页面加载 只调用一次 * onReady: 页面初次渲染完成。 * onshow 页面显示,每次打开页面都会调用 * onHide: 页面隐藏,当navigateTo或底部tab切换时调用 * onUnload: 页面卸载。 页面出栈 server端刚开始时 先加载页面,然后调用onshow 服务端等待。 前端发来通知我要数据,发送数据给前端页面渲染。 渲染完成。前端发来通知 ,我好了。 server端把状态改为onReady状态。这时候可以通过setData来修改前端页面了。 路由小程序维护了一个页面栈,类似于浏览器的location push 栈。
项目架构根据前面的描述,微信只希望有一个app, 然后下面有很多page这样的结构,然后将这个文件传到微信端,发布。 但是我们开发的时候,
分析其他人的项目 1 组件化– wepy特性
对所有东西都重新封装了一遍。 构建wepy-cli 是wepy的构建工具。 通过babel编译的,命令行。 github地址:https://github.com/hxw319726/wepy-cli 分析 wepy.js // 脚手架的入口,主要做了这几件事 // 生成一个目录,下面拼了package.json , // 将template的文件拷贝到当前文件。 // 然后, 用command 定义了很多命令。 compile.js // 编译文件的入口 // 针对各个文件类型,有各种文件的 编译器。 compile-wpy.js // 编译wpy文件 包含 app, page, component // 将 wpy文件,解析成 ret={style: {}, template:{}, script:{}} // 然后依次对各个模块调用不同的编译器。 compile-script.js // compile-style.js // 获取对应的compiler 主要是 // 然后依次对各个模块调用不同的编译器。 // 比如下面文件。wepy-compiler-less // 如果有component 将component 的css import进来 // wepy-compiler-less 文件 // 引用 less 然后用less对sass文件进行render一遍,输出promise import less from 'less'; import path from 'path'; export default function (content, config, file) { return new Promise ((resolve, reject) => { let opath = path.parse(file); config.paths = [opath.dir]; less.render(content, config).then(res => { resolve(res.css); }).catch(reject); }); }; compile-template.js // // 然后依次对各个模块调用不同的编译器。 然后你就可用做以下事情了
包装小程序代码分析组要也就几个文件。 当我们创建page的时候需要 class A extend Page{} class B extend Component{} class C extend APP{} 这些都是在wepy的包里面实现的。
2 redux将redux重新写了一遍,然后引入到了微信中。 |