最近想嘗試小程序雲開發又不想爲此單獨去學習原生小程序,遂作了一波功課,具體可查看凹凸實驗室的文章 小程序多端框架全面測評 因本人使用的是React,因此選擇了react寫法的Tarocss
本文將教你如何搭建項目 github.com/zhixiaoqian…html
Tarojava
Taro UInode
Rematch(redux最佳實踐)react
小程序雲開發(小程序官方文檔)git
tcb-router(雲開發雲函數輕量級類路由庫,解決單一雲函數單獨node_modules)github
安裝及使用 模板請選擇redux模板改形成rematch比較方便npm
初始項目結構
├── dist 編譯結果目錄
├── config 配置目錄
| ├── dev.js 開發時配置
| ├── index.js 默認配置
| └── prod.js 打包時配置
├── src 源碼目錄
| ├── actions redux裏的actions
| ├── asset 圖片等靜態資源
| ├── components 組件文件目錄
| ├── constants 存放常量的地方,例如api、一些配置項
| ├── reducers redux裏的reducers
| ├── store redux裏的store
| ├── utils 存放工具類函數
| ├── pages 頁面文件目錄
| | ├── index index頁面目錄
| | | ├── index.js index頁面邏輯
| | | └── index.css index頁面樣式
| ├── app.css 項目總通用樣式
| └── app.js 項目入口文件
├── package.json
└── project.config.json 項目配置文件
複製代碼
配置 Taro UI (連接包含項目搭建流程)json
npm install taro-ui
# OR 使用 yarn 安裝
yarn add taro-ui
複製代碼
// app.js
import 'taro-ui/dist/style/index.scss' // 引入組件樣式 - 方式一
複製代碼
將原有redux替換爲rematchredux
刪除src下 actions & constants & reducers 文件
安裝 rematch 及相關插件
npm install @rematch/core @rematch/loading @rematch/immer @rematch/updated
# OR 使用 yarn 安裝
yarn add @rematch/core @rematch/loading @rematch/immer @rematch/updated
複製代碼
import configStore from './store'
// 修改成
import store from './store'
// 刪除這一行
const store = configStore()
複製代碼
import thunkMiddleware from 'redux-thunk'
import { init } from '@rematch/core'
import immerPlugin from '@rematch/immer'
import updatedPlugin from '@rematch/updated'
import LoadingPlugin from '@rematch/loading'
import models from '@/models'
const middlewares = [
thunkMiddleware
]
if (process.env.NODE_ENV === 'development') {
middlewares.push(require('redux-logger').createLogger())
}
const store = init({
models,
middlewares,
plugins: [
LoadingPlugin(),
immerPlugin(),
updatedPlugin() // 在必定的時間段內防止昂貴(頻繁)的獲取請求
]
})
export default store
複製代碼
// 添加global.js, 相關寫法請看官方文檔
export default {
state: {},
reducers: {
// 方法名需已dispatch開頭
dispatchSetGlobalInfo(state, payload) {
return { ...state, ...payload }
},
},
effects: {
}
}
// 添加index.js
import global from './global'
export default {
global,
}
複製代碼
// config/index.js
const path = require('path')
alias: {
'@': path.resolve(__dirname, '..', 'src'),
'@/components': path.resolve(__dirname, '..', 'src/components'),
'@/pages': path.resolve(__dirname, '..', 'src/pages'),
'@/models': path.resolve(__dirname, '..', 'src/models'),
'@/store': path.resolve(__dirname, '..', 'src/store'),
'@/utils': path.resolve(__dirname, '..', 'src/utils')
},
複製代碼
@connect(({ global }) => ({
global
}), ({ global }) => ({
...global
}))
複製代碼
配置雲開發 雲開發官方文檔
src下添加 cloud 文件夾
修改配置 將cloud拷貝到dist
// config/index.js
copy: {
patterns: [
{ from: 'src/cloud', to: 'dist/cloud/' }, // 將雲函數文件拷貝到dist
]
},
複製代碼
yarn dev:weapp 這時候會生成dist文件 在微信開發者工具打開dist文件便可
如今項目結構
├── dist 編譯結果目錄
| ├── cloud 雲函數目錄
├── config 配置目錄
| ├── dev.js 開發時配置
| ├── index.js 默認配置
| └── prod.js 打包時配置
├── src 源碼目錄
| ├── cloud 雲函數目錄
| ├── models model文件目錄
| ├── asset 圖片等靜態資源
| ├── components 組件文件目錄
| ├── store redux裏的store
| ├── utils 存放工具類函數
| ├── pages 頁面文件目錄
| | ├── index index頁面目錄
| | | ├── index.js index頁面邏輯
| | | └── index.css index頁面樣式
| ├── app.css 項目總通用樣式
| └── app.js 項目入口文件
├── package.json
└── project.config.json 項目配置文件
複製代碼
AppID 註冊小程序帳號
排查本身修改的項目問題
至此,一個簡單的Taro雲開發環境就搭建完成,在開發時仍是會遇到各類各樣的坑,在接下來的文章裏會寫關於小程序、雲函數等等一些問題的解決方案,喜歡這篇的話請繼續關注後續文章。
第一次寫文章仍是有點小激動的哈哈哈哈