由于微信小程序需要审核且要求严格,想要把微信小程序移植为网页端的 Web App。就花了一晚上初步了解了一下,得到了一些入门的结论,因此也是给了“杂谈”的标签。
程序结构
对于微信小程序,只需要写前端的 WXML + WXSS + JS(分别对应 HTML + CSS + JS)就可以了。
而对于一个 Web App,仅有前端则不够。因为 Web App 前端是不能直接访问数据库的。
如果前端能直接访问数据库,那么任何人都可以在浏览器中修改前端代码,以任意方式访问数据库。(而微信小程序代码不开源、不能修改,并且小程序的云数据库只能从小程序中访问,所以直接访问数据库也不会有安全问题)。
对于数据库访问的解决办法,是在数据库服务器上用 node/Django 搭建一个后端,作为前端和数据库的桥梁。前端 JS 和 后端 node/Django 交互,node/Django 和数据库交互。
前端框架
前端框架流行的有 Angular、React、Vue。但框架是什么?
上述框架对于 JS 就类似与 Qt 对于 C++。
- 框架本身是基于其原生语言编写的;
- 框架的某些语法(如 Qt 的信号槽)能够让开发者快速实现原生语言需要写很多代码才能实现的功能(如使用 Qt 在 C++ 实现异步操作);
- 框架代码在编译过程中也会被转为原生语言。
对于学习哪些框架,对于前端开发者当然是都得学,而其他开发者的话就是按需了 2333
Material Design 界面
Material Design 大法好。
对于 Material Design 的实现,目前比较中意前两款:
- MDUI:仅包含 CSS 和 JS(JS 用于实现某些过渡动效),不依赖框架,直接改控件就行(理论上还可以应用到微信小程序上hhhh)。且有丰富文档:Material Design 指南中文版 MDUI 开发文档
- Material-UI:基于 React 框架,包含了很多 React 组件。这里有一个 React 全家桶 + Material-UI 的项目。
- Vuetify:基于 Vue 框架。电子科大的 ACM OJ 前端就是用 Vuetify 实现,并且开源在 GitHub,可供参考。
- Materialize:也是不依赖框架,不过目前无中文文档。
后端框架
如果想基于 Python,可以使用 Flask 或 Django。前者属于轻量级,数据库什么的插件需要自己找,自定义程度高;Django 插件很多(自带用户认证等),自己的 Model 兼容多种数据库,并且还有 Django REST Framework 这个 REST API 框架,能够迅速构建一个 REST API 后端。最终我采用的是 Django + REST Framwork 作为后端。
如果想基于 Java,Spring 也是一个不错的选择。我也是打算通过 Spring 后端学习一下 Java 基础,毕竟大多数后端工程师还是要求会 Java 的。