mini-html5

0.0.1-beta.47 • Public • Published

Web Shell for nanachi

简介

该项目是一个可以让 nanachi 项目运行在浏览器中的一个 Web Shell,提供了和小程序一致的路由系统、API 系统等。

开发

执行 npm install 即可安装依赖,通过 npm start 即可在本地 (http://localhost:8080) 开启开发服务器。

调试建议

如果你用的编辑器是 VSCode,建议你安装下列插件:

Name: TODO Highlight
Id: wayou.vscode-todo-highlight
Description: highlight TODOs, FIXMEs, and any keywords, annotations...
Version: 1.0.4
Publisher: Wayou Liu
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight

TODO Highlight 可以将代码注释中的一些关键信息高亮,让你可以迅速注意到重点。

Name: ESLint
Id: dbaeumer.vscode-eslint
Description: Integrates ESLint JavaScript into VS Code.
Version: 1.7.2
Publisher: Dirk Baeumer
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint

ESLint 可以与项目中的 ESLint 结合,方便检查代码中的常见错误。

技术方案

该项目用到了如下几种技术/技术方案:

  • React (使用 qreact 代替)
  • Mobx
  • Styled-jsx
  • Webpack
  • Babel
  • ESLint
  • postcss
  • Ramda (以及函数式编程)

如果上述的技术或者方案你不熟悉,可以先通过以下链接了解一下:

技术细节

路由系统

这个项目实质上是一个由 Mobx 和 React 实现的 SPA,小程序的页面对应的是 SPA 里的组件,只不过用户的页面会被包裹一层以实现各种生命周期罢了。

_AUTO_GENERATED_DO_NOT_MODIFY_PAGES_ 数组会将开发者所写的页面及路由导出,通过 App.registerPage() 注册保存在 store 中。之后所有调用 React.navigateTo() 打开的页面都会从路径中找出对应的页面,作为 SPA 的页面渲染。

Page 组件

每一个 Page 实例都有自己的生命周期,包括 onLoad, onReady, onShow, onHide 以及 onUnload。所有开发者实现的页面组件,都存在于 ErrorBoundary 组件中,防止开发者页面报错导致应用崩溃。

页面暂时分为两种:

  1. 堆栈页面。所有通过 navigateTo() 打开的页面都是堆栈页面,每个页面为一层,挂载和卸载时有入场/退场动画。
  2. Tab 页面。由 switchTab() 打开的页面或者应用默认打开的 Tab 页,所有 Tab 页面为一层,挂载和卸载时无过渡动画。

路由系统由一个数组来实现页面堆栈,初始状态下没有任何页面,在初始化的时候根据是否有 Tab 页面分为两种情况:

  1. 如果有合法的 Tab 页面,所有 Tab 页面作为页面堆栈的底层,所有的非 Tab 页面都堆叠在该页面上方。Tab 页面在底层进行渲染,激活 Tab 页在浏览器视口内,非激活 Tab 页通过 transform() 移动至视口外。如果有非 Tab 页面通过 navigationTo() 方法打开,将会覆盖在 Tab 页面层之上。
  2. 如果没有合法的 Tab 页面,底层页面将不存在,所有堆栈页面直接按堆栈顺序显示。

Readme

Keywords

none

Package Sidebar

Install

npm i mini-html5

Weekly Downloads

141

Version

0.0.1-beta.47

License

MIT

Unpacked Size

573 kB

Total Files

120

Last publish

Collaborators

  • roland_reed