图书项目要点

一、搭建项目

使用tarojs/cli进行搭建

复制代码
taro init [项目名]

二、具体页面

页面声明:

在【app.config.ts】中对主页面进行声明:组件页面可以不用声明

TypeScript 复制代码
pages: [
    "pages/index/index",
    'pages/user/index',
    'pages/book/index',
  ],

tabbar制作:

在【app.config.ts】中写入代码:

TypeScript 复制代码
tabBar: {
    color: '#333',
    selectedColor: '#1cbbb4',
    backgroundColor: '#fff',
    borderStyle: 'black',
    list: [
      {
        pagePath: 'pages/index/index',
        text: '首页',
        iconPath: './assets/tabbar/home.png',
        selectedIconPath: './assets/tabbar/home_active.png'
      },
      {
        pagePath: 'pages/book/index',
        text: '书架',
        iconPath: './assets/tabbar/book.png',
        selectedIconPath: './assets/tabbar/book_active.png'
      },
      {
        pagePath: 'pages/user/index',
        text: '我的',
        iconPath: './assets/tabbar/mine2.png',
        selectedIconPath: './assets/tabbar/mine2_active.png'
      },
    ]
  },
};

【我的】:

页面效果:

【user/index.tsx】页面代码:

TypeScript 复制代码
import { View, Text, Button, Image } from "@tarojs/components";

import './index.less'
import AutorBar from "@/components/AutorBar";
import Line from "@/components/Line";
import TextBar from "@/components/TextBar";


const list = [
  { title: '我的收藏', icon: require('../../assets/collect.png') },
  { title: '借阅记录', icon: require('../../assets/read.png') },
  { title: '留言板', icon: require('../../assets/message.png') },
]

const User = () => {


  return (
    <View className="wrapper">
      <AutorBar></AutorBar>
      <Line></Line>

      <View className="title"> 最近阅读 </View>
      
      <Line></Line>

      <View>
        {
          list.map((item, index) => <TextBar {...item}></TextBar>)
        }
      </View>
    </View>
  );
};

export default User;

【user/index.less】样式文件:

css 复制代码
page {
    background-color: white;
    padding         : 14px;
    box-sizing      : border-box;
    color           : #333;
  }
  
  .wrapper {
    display       : flex;
    flex-direction: column;
  }

  .title{
    padding: 20px 0;
    font-weight: bold;
  }
  
   

【user/index.config.ts】文件

TypeScript 复制代码
export default {
    navigationBarTitleText: '图书',
    enableShareAppMessage: true,
  };
  

【书架页面】:

效果如下:

【book/index.tsx】:

TypeScript 复制代码
import { View, Text, Button, Image } from "@tarojs/components";

import './index.less'
import HistoryBar from "@/components/HistoryBar";

const bookIndex = require('../../data/detail_400000.json')
const bookList = require('../../data/books_1500000.json')

const Book = () => {
  console.log(bookIndex, 'bookIndex')
  return (
    <View className="wrapper">

      <View className="title"> 热门推荐 </View>
      <HistoryBar bookList={bookList}></HistoryBar>

      
    </View>
  );
};

export default Book;

【book/index.less】:

css 复制代码
page {
  background-color: white;
  padding         : 14px;
  box-sizing      : border-box;
  color           : #333;
  background-color: #f6f6f6;
}

.wrapper {
  display       : flex;
  flex-direction: column;
}

.title{
    padding: 20px 0;
    font-weight: bold;
  }
  

【book/index.config.ts】:

css 复制代码
export default {
    navigationBarTitleText: '图书',
    enableShareAppMessage: true,
  };
  

【主页】效果如下:

【index/index.tsx】

TypeScript 复制代码
import React, { useCallback } from "react";
import { View, Text, Button, Image } from "@tarojs/components";
import { useEnv, useNavigationBar, useModal, useToast } from "taro-hooks";

import './index.less'
import ComBar from "src/components/ComBar";
import Search from "@/components/Search";

const Index = () => {

  return (
    <View className="wrapper">
        <Search></Search>
        <ComBar></ComBar>
    </View>
  );
};

export default Index;

【index/index.less】:

TypeScript 复制代码
page {
  background-color: white;
  padding         : 14px;
  box-sizing      : border-box;
  color           : #333;
}

 .cardList{
  display: flex;
  flex-wrap: wrap;
 }

【Combar】组件

TypeScript 复制代码
import { ScrollView, View, Image, Text } from "@tarojs/components"
 

import './index.less'

const list =[
    { title: '精品推荐', icon: require('./images/icon0.png') },
    { title: '历史', icon: require('./images/icon1.png')},
    { title: '文学', icon: require('./images/icon2.png') },
    { title: '艺术', icon: require('./images/icon3.png') },
    { title: '人物传记', icon: require('./images/icon4.png') },
    { title: '自然科学', icon: require('./images/icon5.png') },
    { title: '国外读物', icon: require('./images/icon6.png') }
  ]

const ComBar = () => {
    return (<ScrollView className="combar" scrollX >
        {
            list.map(item => <View key={item.title} className="combarItem">
                <View className="combarItemView"><Image className="combarItemImage" src={item.icon}></Image></View>
                <View className="combarItemText">{item.title}</View>
            </View>)
        }
    </ScrollView>)
}

export default ComBar

整体效果:

相关推荐
其实防守也摸鱼9 小时前
GDB安装与配置(保姆级教程)【Linux、Windows系统】
linux·运维·windows·命令模式·工具·虚拟机·调试
|晴 天|15 小时前
Vue 3 + TypeScript + Element Plus 博客系统开发总结与思考
前端·vue.js·typescript
Elastic 中国社区官方博客15 小时前
为 Elastic Cloud Serverless 和 Elasticsearch 引入统一的 API 密钥
大数据·运维·elasticsearch·搜索引擎·云原生·serverless
Agent手记15 小时前
制造业数字化升级:生产全流程企业级智能体落地解决方案 —— 基于LLM+超自动化全栈架构的智改数转深度实战
运维·ai·架构·自动化
猫32815 小时前
v-cloak
前端·javascript·vue.js
云安全助手15 小时前
弹性云服务器+高防IP:让DDoS攻击不再是业务“生死劫”
运维·网络·安全
AC赳赳老秦15 小时前
OpenClaw二次开发实战:编写专属办公自动化技能,适配个性化需求
linux·javascript·人工智能·python·django·测试用例·openclaw
旷世奇才李先生15 小时前
Vue 3\+Vite\+Pinia实战:企业级前端项目架构设计
前端·javascript·vue.js
深色風信子16 小时前
Docker newapi
运维·docker·容器·newapi
mounter62516 小时前
【内核新动向】告别物理槽位束缚:深度解析 Linux Virtual Swap Space 机制
linux·内存管理·kernel·swap·virtual swap