首頁>技術>

寫在前面

上一篇文章我們運行了第一個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;

至此我們的第一個頁面已經展示在我們面前了,下一期我將繼續和大家分享,後端基本框架的搭建,以及資料庫的設計, 如果大家有興趣也可以 微信搜尋小程式 “攢局” 檢視真機執行效果,並且真機上已經有攢局的最基本的功能:釋出、加入、收款、提現等最基本的功能了,歡迎大家嘗試並提出寶貴意見

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Ubuntu 中的 root 使用者:你應該知道的重要事情