寫在前面
上一篇文章我們運行了第一個helloworld程式,為了後續功能開發,我們需要對目錄結構進行相應的改造,並完成第一個頁面的結構部分。
專案改造taro配置修改這一步的目的是為了以後為小程式雲開發留出餘地,修改的同時別忘了將miniprogram放到.gitignore中
專案根目錄下建立app資料夾,將專案根目錄下的project.config.json移動到app目錄下
並修改 project.config.json
# 將"miniprogramRoot": "./dist",# 修改為"miniprogramRoot": "miniprogram/",
修改config/index.js
# 將outputRoot: 'dist'# 修改為outputRoot: 'app/miniprogram'# 新增別名,在後續開發中直接使用別名匯入模組alias: { '~assets': path.resolve(__dirname, '..', 'src/assets'), '~services': path.resolve(__dirname, '..', 'src/services'), '~components': path.resolve(__dirname, '..', 'src/components'), '~styles': path.resolve(__dirname, '..', 'src/styles'), '~config': path.resolve(__dirname, '..', 'src/config'), '~store': path.resolve(__dirname, '..', 'src/store'), '~utils': path.resolve(__dirname, '..', 'src/utils'), '~schema': path.resolve(__dirname, '..', 'src/schema'),}
tsconfig.json修改compilerOptions: { ..., # 新增 "paths": { "~assets/*": ["src/assets/*"], "~components/*": ["src/components/*"], "~config/*": ["src/config/*"], "~store/*": ["src/store/*"], "~styles/*": ["src/styles/*"], "~utils/*": ["src/utils/*"], "~services/*": ["src/services/*"], "~pages/*": ["src/pages/*"], "~schema/*": ["src/schema/*"] }}
新增一些資料夾src/目錄下,檔案結構修改
├── assets # 存放靜態資源,如圖片等├── components # 存放通用元件├── config # 存放程式配置檔案├── pages├── schema # 存放資料結構定義檔案├── services # 訪問網路訪問方法├── store # 存放資料├── styles # 存放全域性樣式├── subPages # 分包└── utils # 存放工具方
新增一些常用的庫
yarn add dayjs # moment 太大了,所以選擇了dayjsyarn add decimal.js # 後面會有一些計算,提前先引入了yarn add lodash # 用習慣了雖然很多功能原生都能寫了,但是還是喜歡它一點yarn add mobx-utils # mobx的一些工具庫還是很不錯的,必自己寫來的方便yarn add taro-ui # taro的ui庫——懶人的邏輯就是能用成熟的絕不自己寫
開發者工具選擇專案剛才新建的app目錄匯入專案第一個元件
新建檔案 /src/components/chunk/index.tsx
這個元件現在的功能很簡單,之所以抽出來單獨寫,主要是為了演示元件一般情況下是什麼樣子
import Taro, { Component } from '@tarojs/taro';import { View } from '@tarojs/components';import { CSSProperties } from 'react';interface ChunkProps { style?: CSSProperties;}interface ChunkState {}class Chunk extends Component<ChunkProps, ChunkState> { render() { const { children, style } = this.props; return ( <View style={{ background: '#feffff', borderRadius: '32rpx', padding: '32rpx', ...style, }} > {children} </View> ); }}export default Chunk;
第一個頁面src/pages/index/index.scss
page { background: #ecedee; } .home { padding: 0rpx 30rpx; .header { margin-top: 60rpx; width: 100%; background-repeat: no-repeat; background-size: cover; background-position: center; }}
src/pages/index/index.tsx
import { ComponentType } from 'react';import Taro, { Component, Config } from '@tarojs/taro';import { View, Image, Navigator, Text } from '@tarojs/components';import Chunk from '~components/chunk';import './index.scss';interface IndexProps {}class Index extends Component<IndexProps, { showFloatLayout: boolean }> { config: Config = { navigationBarTitleText: '攢局', enablePullDownRefresh: true, navigationBarBackgroundColor: '#ecedee', backgroundColor: '#ecedee', }; render() { return ( <View className="home"> <View className="header"> <Chunk style={{ backgroundRepeat: 'no-repeat', backgroundSize: 'cover', backgroundImage: 'url(https://cdn/cuanju/icon/bg.svg)', display: 'flex', justifyContent: 'center', flexDirection: 'column', }} > <View style={{ marginTop: '80rpx', display: 'flex', justifyContent: 'center', alignItems: 'center', fontSize: 'larger', }} > <Text style={{ padding: '4rpx' }}>共攢了</Text> <Text style={{ backgroundColor: '#fdf1d2', color: '#d3bd46', padding: '0rpx 10rpx', }} > 0 </Text> <Text style={{ padding: '4rpx' }}>個局</Text> </View> <Navigator url="/subPages/home/wallet" style={{ marginTop: '60rpx', color: '#f7eab8', display: 'flex', justifyContent: 'center', alignContent: 'center', borderRadius: '4rpx', }} > <Text style={{ margin: '12rpx', fontSize: 'larger' }}>¥</Text> <Text style={{ fontSize: '80rpx' }}>{0}</Text> </Navigator> <View style={{ display: 'flex', justifyContent: 'space-between', alignContent: 'center', marginTop: '60rpx', padding: '20rpx 80rpx', fontSize: 'larger', }} > <Navigator url="/subPages/project/index" style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', }} > <Image style={{ width: '50rpx', height: '50rpx' }} src="https://cdn/cuanju/icon/record.svg" /> <Text>攢局記錄</Text> </Navigator> <Navigator url="/subPages/home/wallet" style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', }} > <Image style={{ width: '50rpx', height: '50rpx' }} src="https://cdn/cuanju/icon/wallet.svg" /> <Text>去提現</Text> </Navigator> </View> </Chunk> </View> <View style={{ padding: '30rpx 0rpx' }}> <Chunk> <Navigator style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', }} url="/subPages/part/index" > <Image style={{ width: '100rpx', height: '100rpx', margin: '10rpx' }} src="https://cdn/cuanju/icon/part.svg" /> <View style={{ width: '100%' }}> <View style={{ fontSize: 'larger' }}>攢局</View> <View style={{ fontSize: 'smaller' }}>報名活動,自動統計,簡單高效</View> </View> <Image style={{ width: '80rpx', height: '80rpx', margin: '10rpx' }} src="https://cdn/cuanju/icon/right.svg" /> </Navigator> </Chunk> </View> </View> ); }}export default Index as ComponentType;
至此我們的第一個頁面已經展示在我們面前了,下一期我將繼續和大家分享,後端基本框架的搭建,以及資料庫的設計, 如果大家有興趣也可以 微信搜尋小程式 “攢局” 檢視真機執行效果,並且真機上已經有攢局的最基本的功能:釋出、加入、收款、提現等最基本的功能了,歡迎大家嘗試並提出寶貴意見
最新評論