Skip to content

SuperlativeCoder/superlative-wepy

Repository files navigation

本项目使用腾讯wepy作为小程序开发基础框架, 并基于此框架进行了业务的深度定制

本项目代码将同步生成一个h5版本

开发概述

项目目录结构

├── dist                   小程序运行代码目录(该目录由WePY的build指令自动编译生成,请不要直接修改该目录下的文件)
├── node_modules           
├── src                    代码编写的目录(该目录为使用WePY后的开发目录)
|   ├── actions            页面/组件Action目录
|   ├── components         WePY组件目录(组件不属于完整页面,仅供完整页面或其他组件引用)
|   |   ├── ComponentA     可复用的WePY组件A
|   |   |   ├── index.js   WePY组件A的行为
|   |   |   ├── index.scss WePY组件A的样式
|   |   |   ├── index.wpy  整合其他三个文件内容至WePY组件A
|   |   |   └── index.wxml WePY组件A的页面结构
|   |   └── ComponentB     可复用的WePY组件A
|   ├── constants          WePY常量目录, 常量已全部同步至该目录下index文件, 可直接引入constants来取得
|   ├── middlewares        WePY的redux中间件目录
|   ├── mixins             WePY的mixin目录, 用于抽取公共的js内容
|   ├── pages              WePY页面目录(属于完整页面)
|   |   ├── PageA          页面A
|   |   |   ├── index.js   页面A的行为
|   |   |   ├── index.scss 页面A的样式
|   |   |   ├── index.wpy  整合其他三个文件内容至页面A(经build后,会在dist目录下的pages目录生成index.js、index.json、index.wxml和index.wxss文件)
|   |   |   └── index.wxml 页面A的页面结构
|   |   └── PageB          页面B
|   ├── public             WePY的静态资源目录
|   |   ├── images         所有的图片静态资源
|   |   └── styles         存储sass全局样式变量
|   ├── reducers           页面reducer目录
|   ├── store              页面redux初始化, 中间件配置
|   ├── utils              页面公共方法
|   ├── app.js             小程序配置项(行为)
|   ├── app.wxss           小程序配置项(全局样式)
|   └── app.wpy            小程序配置项(全局数据、样式、声明钩子等;经build后,会在dist目录下生成app.js、app.json和app.wxss文件)
├── package.json           项目的package配置
└── wepy.config.js         项目的打包等配置, 类似于webpack配置

项目启动(小程序)

npm run dev
// 或者
yarn dev

注: 因当我们删除文件后, wepy不会删除掉之前编译的已删除文件, 因此每次项目启动前均会清除一次编译文件后, 再重新进行编译

项目打包

npm run build
// 或者
yarn build

注: 目前打包结果将输出于dist_release文件夹

项目启动(h5)

npm run dev:web
// 或者
yarn dev: web

注: 因wepy中没有直接安装h5的依赖, 所以我们首次运行时, wepy将会为我们自动安装web相关依赖, 但是首次运行会报错提示找不到模块: redux, 此时退出进程, 重新安装依赖即可.

编辑器设置

Atom

  1. 在Atom里先安装Vue的语法高亮 - language-vue,如果装过了就忽略这一步。

  2. 打开Atom -> Config菜单。在core键下添加:

customFileTypes:
  "text.html.vue": [
    "wpy"
  ]
  1. 对于页面中不识别的其他文件, 如.wxml后缀文件, 我们将页面自动识别的plain text, 改为vue component即可实现代码高亮

VS Code

  1. 在 Code 里先安装 Vue 的语法高亮插件 Vetur。

  2. 打开任意 .wpy 文件。

  3. 点击右下角的选择语言模式,默认为纯文本。

  4. 在弹出的窗口中选择 .wpy 的配置文件关联...。

  5. 在选择要与 .wpy 关联的语言模式 中选择 Vue。

  6. 对于页面中不识别的其他文件, 如.wxml后缀文件, 我们将页面自动识别的纯文本, 改为vue-html即可实现代码高亮

微信开发者工具设置

  1. 打开项目

  2. 点击右上角详情按钮

  3. 关闭ES6转ES5 上传代码时自动补全 上传代码时自动压缩功能

  4. 开启不校验合法域名功能(小程序正式环境请求接口必须使用https)

代码规范

  1. 开发严格遵循airbnb编码规范, 未遵循将在控制台中报错, 因此我们将结构/样式/行为, 拆分成了三个文件, 并由.wpy文件进行整合, 便于进行code maintenance

  2. 变量与方法使用驼峰式命名,并且避免使用$开头。 以$开头的标识符为WePY框架的内建属性和方法,可在JavaScript脚本中以this.的方式直接使用。

  3. 使用Promise。 框架默认对小程序提供的API全都进行了Promise处理,甚至可以直接使用async/await等新特性进行开发。代码开发可使用最新的ES语法进行开发, 并对原有的callback函数进行了promisify, 同样的, 我们可以直接使用acync/awaitES7特性进行开发

  4. 事件绑定语法使用优化语法代替。

  • bindtap="click"替换为@tap="click",原catchtap="click"替换为@tap.stop="click"
  • capture-bind:tap="click"替换为@tap.capture="click",原capture-catch:tap="click"替换为@tap.capture.stop="click"
  • 事件传参使用优化后语法代替。 原bindtap="click" data-index={{index}}替换为@tap="click({{index}})"
  • 自定义组件命名应避开微信原生组件名称以及功能标签<repeat>。 不可以使用inputbuttonviewrepeat等微信小程序原生组件名称命名自定义组件;另外也不要使用WePY框架定义的辅助标签repeat命名。
  1. 具体语法规则, 详见wepy官方文档

Things Todo

  • 1. 优化wepy打包, 开发环境的依赖包避免打包进正式环境
  • 2. sass全局注入变量参数, 省去每个页面引入的步骤
  • 3. 增加NavigationBar组件, 替代之前的小程序默认导航条
  • 4. 项目工程增加处理多个小程序打包的支持(多入口打包)

组件使用概述

1. 导航组件 NavigationBar

组件用于页面的导航功能, 替代掉原来的页面导航组件

主要用于实现更加精细化的导航控制, 处理一些之前无法完成的交互效果, 如

  1. 点击页面导航按钮, 弹出modal后, 点击确定才返回上一层
  2. 用户通过扫码直接进入内页, 没有直观的提示来方便用户返回到主页

组件用法

  1. 在页面组件中引入该组件, 并在components中声明
import NavigationBar from 'components/NavigationBar/index';
// ...
components = {
  // ....
  'navigation-bar': NavigationBar,
}
  1. 在页面结构中使用这个组件
<navigation-bar 
  :navigationBarTitle="navigationBarTitle" 
  :isNavigationBarNeedBack="isNavigationBarNeedBack" 
  :isNavigationBarFixed="isNavigationBarFixed"
  :navigationBarBackground="navigationBarBackground"
  :navigationBarFontSize="navigationBarFontSize"
  :navigationBarColor="navigationBarColor"
  :navigationPlaceholderBg="navigationPlaceholderBg"
  :navigateParam="navigateParam"
></navigation-bar>

上面列明了所有支持的参数, 但是以上的所有参数均为可选项, 需要时可以自行传入来操作控制

参数定义

参数名称 参数定义
navigationBarTitle 页面导航条标题
isNavigationBarNeedBack 是否显示返回按钮(主页默认不显示, 非主页默认显示, 扫码进入内页默认显示, 并在旁边显示首页两个字)
isNavigationBarFixed 导航条是否固定于顶部, 为false时将跟随页面滑动
navigationBarBackground 导航条背景色
navigationBarFontSize 导航条字体大小
navigationBarColor 导航条字体颜色(修改此选项将同步影响返回按钮)
navigationPlaceholderBg 导航条的占位块背景色(一般建议与主体背景相同, 否则容易出现ios上下拉出现其他颜色的情况)
navigateParam 跳转参数, 用于控制点击跳转时的行为(可用参数: navigateBackType:1/2/3,title,content)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published