4007654355
NEWS
网站建设、网站制作、网站设计等相关资讯

微信小程序模块化开发实践

日期:2024-04-01 访问:804次 作者:admin

准备

了解微信小程序是什么? 微信小程序官方文档

了解应用状态管理方案: 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,看看你最爱的软件排第几?

如何在小程序服务端集成微信支付

再见!这些科技将会与 2016 一同消逝

周一见 | 7 款国产实战开源项目让通讯超简单!

开源中国 2017 元旦寄语

点击“阅读原文”查看更多精彩内容


标签:



相关文章: 快速开户,竞价无忧  探索未来,科技无限可能  苹果在欧盟又做出重大让步,首次允许用户通过网页下载iPhone应用C罗6岁女儿长大了,颜值不输乔治娜!美人胚子,家族未来主心骨  企业网站SEO高效运营策略  企业网络营销成功之道 互动是核心  “麻豆助手”→“站助大师”  赣州有哪些SEO推广公司?  迁西SEO新突破,快速提升排名秘籍!  打造高效内容营销,策略巧用赢未来  如何打造淘宝导购app软件?  茶叶SEO优化:关键词布局,流量提升,品牌曝光  SEO排名提升,精准流量策略秘籍  浙江有哪些知名客服外包公司?  快照**站  淘宝免费推广格子铺如何申请?效果如何?  swot分析法的四个方面  产品推广营销公司为什么大家都推荐云裂变?  潍坊科技学院获批硕士学位授予立项建设单位原创5岁小糯米照片曝光,简直就是“迷你版”杨幂,基因真强大  东莞锐意营销专家  响应式网络软件网站模板  tk运营工作内容  珠海SEO神器,网站排名加速器  广告联盟赚钱是不是属于网赚的一种?两者有什么区别?  淘宝小号如何有效养护?  做cpa推广通过知乎引流,这样做才能达到最好的效果!  AI写作,轻松解决难题,创意与效率如何兼得?  网站营销力打造专家  关键词优化,提升排名,网站独领风骚!  “爱我,简影相随”策驰映情  日照SEO,高效优化专家  玩转自媒体淘客?教你知乎带货如何批量操作!  家居清洁神器,你真的了解吗?,普洱茶网站怎么做推广的  优化网站布局,提升排名效率  闲鱼如何调整商品价格和数量?  微信朋友圈广告投放,如何精准触达目标用户?,来宾seo公司推荐11火星  从0到1做成一个品牌,需要走好哪几步?  肇东SEO,快速提升网站排名  美图3964万美元收购设计网站站酷38岁女士哭诉:再婚后毛都没有了,这样的婚姻还能要吗?  深圳搜索营销,如何快速提升品牌曝光?,易点互动seo  首都广播电视节目制作业协会年会推优46部作品把刘涛抱在怀里,有谁注意到他手上的小动作,人品如何一目了然。  专业广州网站定制,高效服务!  双倍权重,揭秘SEO核心关键词,你准备好了吗?,岳阳seo是什么意思  搜索引擎营销核心:提升品牌搜索可见度  网络营销助力企业成功打开市场大门  网站诊断优化,精准提升排名  小红书口碑推广效果如何?  网站SEO问题速诊  360优化,网络加速神器!  张店SEO,高效网站优化专家  网站流量翻倍秘籍,SEO优化神器! 

豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤互联网技术服务 豪情圣贤网络服务 豪情圣贤网络服务 豪情圣贤网络服务 豪情圣贤科技 豪情圣贤科技 豪情圣贤科技