微信小程序模块化开发实践
准备
了解微信小程序是什么? 微信小程序官方文档
了解应用状态管理方案: Redux, 也是Flux架构的具体实现
了解Jascript打包工具: webpack
了解ES6/7代码转译(transcompile)工具:Babel, 原理大致是借助语法分析工具(Esprima之类的), 将代码解析成抽象语法树, 再"重写"成最终的代码.
Jascript测试工具: jest, mocha等等, 请根据需要选择.
TL;DR;
微信小程序目前版本的API实现需要兼顾方方面面, 所以仍然使用callback写法, 众所周知的Callback-Hell是传统js语法上的历史问题, 但毕竟称手的工具是开发效率的源泉. 因此笔者对当前版本的微信小程序API做了简单的封装weapp.
同时, 微信小程序框架本身专注于交互和UI的实现, 并未提供内置的状态管理, 如果众多的异步操作都直接在App或者Page中一一实现, 相信写起来会是一场噩梦, 而且不易于测试, 笔者又因此针对微信小程序实现了一个基于Redux方案的状态管理模块, 用以方便的在小程序中实现应用状态管理redux-weapp.
特别地, 微信小程序构建(编译)时不支持从App scope之外require文件, npm在此就不好用了. 所以, 我们需要实时build依赖到应用本地, 在微信小程序中引用本地的modules, 对于这种构建场景, 笔者认为webpack算是最方便的方案. 大家都说COPY到本地是最最最方便的方式~~
安装工具和依赖模块
下载微信小程序开发者工具
开发者工具是用nwjs模拟的环境, 实际在微信中是JascriptCore环境, 不过不用担心, 只是两个不同的vm, 本质是一样的.
nwjs可能存在一些小bug, 写代码的时候注意一下就好.
下载微信小程序开发者工具
用npm命令开始一个微信小程序项目
开始安装必要的依赖模块
由于除了小程序运行时需要的模块, 还有构建所需要的模块, 看起来会比较多, 不过不用担心, 大多数都是声明性的, 不需要你直接调用.
为了方便经验少些的同学理解, 我将这些依赖分步安装.
代码转译工具, Babel
```shell
npm install --se-dev babel-cli babel-core babel-loader babel-plugin-add-module-exports babel-polyfill babel-preset-es2015 babel-preset-stage-0
```
有了上面这些模块, 就可以在构建时将ES6/7的代码转译为ES5的代码了(其实解释器都只认ES5).
安装打包工具, webpack
在此, 我们只需要对代码进行打包, 不需要dev server和hot module replace功能, 因此只需要安装webpack module本身, 无需安装其他扩展和插件.
安装Redux
由于在实际应用中, 我们经常会需要异步调用API服务器的接口, 所以需要redux-thunk这个模块来处理[异步action](http://redux.js.org/docs/advanced/AsyncActions.html).
安装开发小程序的辅助模块
其中, weapp模块是对微信小程序API的wrapper, 提供了更易于使用的API, redux-weapp是基于Redux对微信小程序进行状态管理.
建立项目目录结构如下
编写构建脚本
首先得写webpack.config.js, 这个是必须的, 由于这个构建是为了本地化微信小程序的依赖, 因此只处理js文件, 若需要打包其他诸如css, image等资源, 请读者自行研究. 实际上, 微信小程序包有1MB的上限.
定义npm命令
test 笔者比较喜欢jest, 所以在此就用jest做范例了.
build 这里就是构建的命令了, 成败在此一举 :)
写应用代码
总算进入正题了(工欲善其事,...), 借助上述的 weapp 和 redux-weapp, 希望你会感到很舒服~~.
在这个范例中, 我们目标是去查询 github/octokit 的开源项目, 并显示在小程序中.
myapp模块定义store: /es6/store.js
这里只是简单的范例, 实际中会有比较复杂的store shape, 需要引入更多的middleware来处理动作和状态的变化.
定义reducers: /es6/reducers.js
Reducer就是处理因Store dispatch actions时发生的状态变化的function, 参数总是为(state, action)
定义actions: /es6/actions.js
Action通常是个Plain Object, 总是被Store dispatch, 描述了"发生了什么, 结果是什么"的逻辑
myapp模块入口: /es6/myapp.js
入口文件: app.js 和 app.json
app.json
页面逻辑: projects.js
如上定义, 小程序的启动页面是projects
页面UI: projects.wxml
后记
范例代码未实际运行, 仅用以表示开发步骤, 我会尽快把这个范例实现完整, 放到github上.
最后, 谢谢您耐心阅读至此!
参考
https://github.com/nwjs/nw.js/issues
http://redux.js.org
https://webpack.github.io
https://facebook.github.io/jest/docs
https://babeljs.io
https://github.com/xixilive/weapp
https://github.com/xixilive/redux-weapp
2016 年度最受欢迎中国开源软件 TOP 20,看看你最爱的软件排第几?
周一见 | 7 款国产实战开源项目让通讯超简单!
标签:
相关文章:
江苏中医名院
线上AI写作免费一键生成,能轻松提升写作效率吗?
SEO推广:企业网络营销核心策略
网络兼职靠谱吗?正规的网络兼职赚钱渠道有哪些?
专业关键词优化首选
智慧企业管控平台
西安SEO优推专家
工作五金指的是哪五金
00后就业倾向有竞争力的薪酬,京东、华为位列第一梯队
电商风控是什么意思
推荐5个适合设计小白用的在线设计网站
信阳品牌推广专家
奉化SEO外包,专业提升排名
手游排行新锐榜,十强争霸显锋芒
亚马逊运营面试
干货丨小程序开发秘籍,华为云这款服务器才是真香系列曾黎“200年中戏校花”是浪得虚名?看到这一张私下生图,懂了
网络营销:线上产品新零售
辅助存储简称
SEO全攻略:高效提升流量与排名秘诀
员工填写问卷调查的通知
产品项目经理需要具备哪些能力
网站排名突然下降了有哪些原因?
极氪能源自建站突破 750 座,覆盖全国近 130 城陈婷再惹争议:放弃张艺谋妻子身份认证!背后原因引人猜想
百d一下,双字藏玄机,你发现了吗?,中航鑫源建设集团网站
搜狗助手,解锁手机新技能?,张家口seo 网络推广
网络推广,懂营销,会策划,善运营
Revolutionize English Writing with One Click!
巩义网站速效提升
AI文章识别技巧大揭秘!
如何通过SEO优化策略提升网站排名?
网络技术联盟站知识星球资源目录【全】
行政人事需要具备哪些各项能力
兰州SEO平台,效果翻倍?揭秘优化秘诀!,人人车的营销推广策略
荆州SEO公司:如何制定成功的SEO优化策略?有哪些关键步骤?,茂名seo推广优化
聊城新网站优化:关键词布局,优化效果如何?,SEO是什么是快乐
《平凡之路》——这首歌背后的故事你知道吗?,青海网站建设免费咨询
可以给别人改淘宝账号密码吗?
UGC,用户生成内容,何为内容之海?,批发行业网站建设
新版北京国际版门户网站正式上线高圆圆白色丝绸连衣裙犹如仙子
《绯闻之恋:她是谁的》
眉山SEO排名,优化步骤详解,助力企业腾飞?,政府采购类网站建设方案
试用期怎么辞退员工
周有贵SEO:网站流量与排名双提升
关注AI发展,把握未来脉搏。
生育津贴将直接发放给女职工本人
创新产品,速来体验!
股票诊断免费,如何精准把握投资时机?,软件推广营销海报文案
广州谷歌SEO软件,如何快速提升排名?,随州市网站线上推广团队
小程序,生活好帮手
网页快照揭秘快照原理与实用技巧





