微信小程序|基于小程序+C#制作一个电子书阅读器

news2024/11/25 12:30:56

文章目录

    • 一、文章前言
    • 二、开发流程
      • 2.1、开发工具
      • 2.2、页面实现
      • 2.3、数据库设计
      • 2.4、API实现

一、文章前言

书籍是人类进步的阶梯,各位小伙伴在使用市面上各类阅读器进行阅读的时候是否有被层出不穷的广告或者及其不友好的用户体验所困扰呢,为何不制作一个属于自己的电子书阅读器呢。

二、开发流程

2.1、开发工具

(1):SQL Server数据库提供数据支持
(2):Visual Studio用于开发API
(3):微信开发者工具用于开发小程序

在这里插入图片描述在这里插入图片描述

2.2、页面实现

  1. 首页,页面元素主要有搜索框、轮播图、快捷入口、书籍推荐。

在这里插入图片描述

  1. 在创建的index.wxml中添加一个input标签并实现对应的样式。

在这里插入图片描述

<view class="cu-bar bg-white search ">
  <view class="search-form round">
    <text class="cuIcon-search"></text>
    <input type="text" placeholder="摔跤猫子" confirm-type="search" bindinput="searchIcon"></input>
  </view>
</view>
  1. 实现轮播图功能,这里需要用到swiper标签,暂时先获取本地的静态资源进行展示,等API实现后再改为通过接口获取。

在这里插入图片描述

<view>
  <swiper class="screen-swiper round-dot" indicator-dots="true" circular="true" autoplay="true" interval="5000" duration="500">
    <swiper-item>
      <image src="../../image/femaleBanner1.jpg" mode="aspectFill" style="border-radius:30rpx;"></image>
    </swiper-item>
    <swiper-item>
      <image src="../../image/femaleBanner2.jpg" mode="aspectFill" style="border-radius:30rpx;"></image>
    </swiper-item>
  </swiper>
</view>
  1. 实现九宫格区域,因为这个板块的内容改动较少,可以直接在JS中进行定义渲染。

在这里插入图片描述

<view class="cu-list grid col-5 no-border" style="padding:0;margin:0;">
  <view class="cu-item" wx:for="{{iconList}}" style="padding:0;margin:0;">
    <view class='cuIcon-{{item.icon}} text-{{item.color}}' style="padding:0;margin:0;"> </view>
    <text>{{item.name}}</text>
  </view>
</view>
iconList: [{
      id: 1,
      icon: 'rank',
      color: 'red',
      name: '排行',
      type: 1
    }, {
      id: 2,
      icon: 'like',
      color: 'orange',
      name: '人气',
      type: 2
    }, {
      id: 3,
      icon: 'evaluate',
      color: 'yellow',
      name: '完结',
      type: 1
    }, {
      id: 4,
      icon: 'hotfill',
      color: 'olive',
      name: '畅销',
      type: 1
    }, {
      id: 4,
      icon: 'link',
      color: 'green',
      name: '免费',
      type: 1
    }],
  1. 实现本周推荐板块,将书籍封面、简介、名称、标签进行渲染,这里暂时在页面上写死,等调通接口后再调整。

在这里插入图片描述

<view class="cu-bar bg-white solid-bottom">
  <view class='action'>
    <text class='cuIcon-titles text-orange '></text> 本周推荐
  </view>
</view>
<view class="cu-card article no-card solid-bottom margin-top">
  <view class="cu-item shadow">
    <view class="content">
      <image src="../../image/book1.jpg" mode="aspectFill" style="width:150rpx;"></image>
      <view class="desc">
        <view class="text-cut">剑来</view>
        <view class="text-content" style="height:100rpx;">大千世界,无奇不有。我叫陈平安,平平安安的平安。我是一名剑客。</view>
        <view>
          <view class="cu-tag bg-red light sm round">连载</view>
          <view class="cu-tag bg-green light sm round">武侠仙侠</view>
        </view>
      </view>
    </view>
  </view>
</view>
  1. 创建一个新的page,定义为分类页,想填充丰富页面元素的可以在头部也增加一个轮播图。

在这里插入图片描述

  1. 在分类页左侧实现快捷导航功能,使用scroll-view标签,设置scroll-y属性,可以先将分类数据以JSON的形式在JS文件中定义,后期改为从接口获取。

在这里插入图片描述

  <scroll-view class="VerticalNav nav" scroll-y scroll-with-animation scroll-top="{{VerticalNavTop}}" style="height:calc(100vh - 375rpx)">
    <view class="cu-item {{index==TabCur?'text-green cur':''}}" wx:for="{{list}}" wx:key bindtap='tabSelect' data-id="{{index}}">
      {{item}}
    </view>
  </scroll-view>
list: ['综合','都市','玄幻','悬疑','历史','军事','科幻','同人','短篇'],
  1. 在右侧实现书籍列表模块,将书籍信息进行渲染。

在这里插入图片描述

bookList:[
      {'img':'../../image/book1.jpg',name:'剑来',desc:'剑来小说简介',},
      {'img':'../../image/book2.jpg',name:'雪中悍刀行',desc:'雪中悍刀行小说简介',},
      {'img':'../../image/book3.jpg',name:'玄天武神',desc:'玄天武神小说简介',},
      {'img':'../../image/book4.jpg',name:'一世兵王',desc:'一世兵王小说简介',},
      {'img':'../../image/book5.jpg',name:'一剑独尊',desc:'一剑独尊小说简介',},
      {'img':'../../image/book6.jpg',name:'末世最强供应商',desc:'末世最强供应商小说简介',},
      {'img':'../../image/book7.jpg',name:'万岁爷',desc:'万岁爷小说简介',},
      {'img':'../../image/book8.jpg',name:'在海贼王当实习生',desc:'在海贼王当实习生小说简介',},
      {'img':'../../image/book9.jpg',name:'年少有为',desc:'年少有为小说简介',},
      {'img':'../../image/book10.jpg',name:'北排盗墓',desc:'北排盗墓小说简介',},
      {'img':'../../image/book11.jpg',name:'绿茵圣父',desc:'绿茵圣父小说简介',},
      {'img':'../../image/book12.jpg',name:'浮生镜',desc:'浮生镜小说简介',},
    ],
  1. 可以在点击导航时获取左侧分类将其在右侧进行展示。

在这里插入图片描述

  1. 实现我的书架页面,将用户添加进书架的书籍进行展示。

在这里插入图片描述

  1. 在页面上使用scroll-view标签展示书籍分类数据,定义scroll-x属性,使其左右滑动,同时设置定位css,让它一直居于顶部。

在这里插入图片描述

<scroll-view scroll-x class="bg-white nav" scroll-with-animation scroll-left="{{scrollLeft}}"  style="position:fixed;z-index: 99;">
  <view class="cu-item {{index==TabCur?'text-green cur':''}}" wx:for="{{type}}" wx:key bindtap="tabSelect" data-id="{{index}}">
    {{item}}
  </view>
</scroll-view>
  1. 定义view标签的同时在JS文件中定义书籍数据,将数据在页面进行展示,这里需要注意的是给view加上flex-wrap:wrap;这个css属性,使其超过页面宽度自动换行。

在这里插入图片描述

<view class="bg-white">
  <view class="bookList">
  <view class="margin-top" wx:for="{{bookList}}">
    <image src="{{item.img}}" class="bookImg" mode="aspectFill"></image>
    <view class="bookName">{{item.name}}</view>
  </view>
  </view>
</view>
  1. 前面铺垫这么久现在才是阅读环节,再新建一个书籍阅读页,并准备一个素材背景图。

在这里插入图片描述

  1. 在json文件中定义navigationStyle属性为custom,自定义顶部;enablePullDownRefresh属性为false,不允许下拉刷新等。

在这里插入图片描述

{
  "usingComponents": {},
  "navigationStyle": "custom",
  "enablePullDownRefresh": false,
  "disableScroll": true
}
  1. 在页面定义一个view,获取屏幕高度的同时设置背景图平铺,实现效果如下。

在这里插入图片描述

statusBarHeight: wx.getSystemInfoSync()['statusBarHeight'], //自适应设备屏幕高度

在这里插入图片描述

  1. 这里的分页方式我们暂且使用上下滚动,在页面定义一个scroll-view,scroll属性定义为y,这样我们页面内容就始终是在这个板块中,文章中的内容可以根据接口返回的数据来渲染。

在这里插入图片描述

 <scroll-view scroll-y></scroll-view>

2.3、数据库设计

  1. 小程序界面设计好后开始设计数据库,打开准备好的SQL Server并执行以下脚本创建数据库及数据表,这里先简单实现轮播图的渲染。

在这里插入图片描述

--创建数据库
CREATE DATABASE Demo;

--选中数据库
USE Demo;

--创建图片表
CREATE TABLE ImagesTable(
	id INT PRIMARY KEY IDENTITY,--图片编号,主键自增
	src NVARCHAR(500)			--图片地址
);
  1. 通过INSERT语句新增几条数据进去。
INSERT INTO ImagesTable VALUES('../../image/book1.jpg');
INSERT INTO ImagesTable VALUES('../../image/book2.jpg');

2.4、API实现

  1. 打开Visual Studio,创建新项目,选择ASP.NET Web应用程序(.NET Framework)。

在这里插入图片描述

  1. 填写项目名称及选择对应的保存位置,框架版本我们这里选择4.7.2。

在这里插入图片描述

  1. 选择MVC用它来搭建API接口,其他的选项默认即可。

在这里插入图片描述
在这里插入图片描述

  1. 选择Models文件夹,Model在MVC中就是M,也就是实体,然后点击添加,选择新建项。

在这里插入图片描述

  1. 右上方搜索框输入实体数据模型,选择然后点击添加。

在这里插入图片描述

  1. 选择来自数据库的EF设计器,点击下一步。

在这里插入图片描述
在这里插入图片描述

  1. 数据源选择Microsoft SQL Server,点击继续。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 选择Controllers文件夹,点击添加,点击控制器,新建一个控制器,名字叫Test

在这里插入图片描述
在这里插入图片描述

  1. 使用linq在控制器中写一个简单的查询全部数据。
        BaseModel<ImagesTable> image = new BaseModel<ImagesTable>();

        public ActionResult getImages() {
            var model = image.GetList(u => true).ToList();
            return Json(model, JsonRequestBehavior.AllowGet);
        }
  1. 点击调试,点击开始执行,会启动你默认的浏览器,因为我们没有配置任何页面,所以页面上显示的是404,是没有找到的意思。

在这里插入图片描述

在这里插入图片描述

  1. 浏览器地址栏里面的http://localhost:5311/这一个地址是你本机的地址,并且给你分配了一个端口号,在后面输入控制器名称然后斜杆动作方法,这样就能把我们在数据库中的数据查询出来了。
http://localhost:5311/Test/getImages

在这里插入图片描述

  1. 回到小程序index.js文件中的onLoad事件中请求接口。

在这里插入图片描述

    wx.request({
      url: 'http://localhost:5311/Test/getImages',
      success:function(res){
        console.log(res);
      }
    });

在这里插入图片描述

  1. 接口数据能够正常返回后,使用setData的方式将数据在页面进行渲染展示。

在这里插入图片描述

  <swiper class="screen-swiper round-dot" indicator-dots="true" circular="true" autoplay="true" interval="5000" duration="500">
    <swiper-item wx:for="{{list}}">
      <image src="{{item}}" mode="aspectFill" style="border-radius:30rpx;"></image>
    </swiper-item>
  </swiper>

在这里插入图片描述

  1. 现在轮播图就是动态的从接口中获取的了,后续其他模块的数据依葫芦画瓢先设计数据库再实现接口,再请求接口进行渲染就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

矢量网络分析仪是什么?矢量网络分析仪的组成

一、矢量网络分析仪是什么 矢量网络分析仪是一款高性能、大动态范围、低噪声的矢量网络分析仪。频率范围涵盖整个移动通信频段&#xff0c;全双端口S参数测量&#xff0c;测量精度高&#xff0c;测试稳定性好&#xff0c;测量速度快。 用途&#xff1a;可广泛应用于移动通信、军…

realme手机适合什么蓝牙耳机?适合realme手机的蓝牙耳机推荐

自从众多手机厂商取消3.5mm耳机接口之后&#xff0c;蓝牙耳机作为人们通勤、旅行时经常携带的设备&#xff0c;realme手机近几年也受到很多人的喜爱&#xff0c;那么在品牌众多的蓝牙耳机中如何挑选出最适合自己的呢&#xff1f;今天小编就来为大家分享几款适合realme手机的蓝牙…

天翼云Serverless边缘容器下沉服务 促进企业聚焦业务创新

当前,我国经济社会各领域正加速向数字化转型迈进,随之涌现出海量的数据处理需求在边缘侧不断产生。根据信通院发布的数据显示,2021年我国边缘计算市场规模已经达到436.4亿元,其中边缘硬件规模市场为290.2亿元,边缘软件与服务市场规模达146.2亿元,年平均增速超过50%,预计2024年边…

包装类和泛型

包装类和泛型严格来说算得上是JavaSE的内容&#xff0c;为什么他们要放在数据集合中&#xff1f; 这和集合类有关&#xff0c;我们在集合类中将会用到大量的泛型和包装类。 1. 包装类 基本介绍 包装类&#xff08;wrapper&#xff09;是针对八大基本数据类型相应的引用类型…

云安全系列4:解析云安全工具集

随着组织越来越多地将数据和应用转移到云端&#xff0c;云安全在确保工作负载安全方面变得至关重要。Gartener 就表示&#xff1a;“云优先战略现在已十分普遍&#xff0c;甚至在不愿承担风险的企业机构中也是如此。但由于缺乏确保安全云计算部署所必需的技能和工具&#xff0c…

pytest文档83 - 把收集的 yaml 文件转 Item 用例并运行

前言 上一篇通过用例收集钩子 pytest_collect_file 把 yaml 文件收集起来的&#xff0c;仅仅只是收集到用例&#xff0c;还不能执行。 接下来详细讲解&#xff0c;如何把yaml 文件的内容&#xff0c;转成Item 用例去执行。 pytest_collect_file 收集钩子 准备一个待执行的YA…

Oracle SQL执行计划操作(12)——DDL及DML相关操作

14. DDL及DML相关操作 该类操作与DDL及DML类SQL语句相关。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。另需注意,该类操作会造成数据库对象或数据的改变。 1)CREATE TABLE STATEMENT 创建数据表。该操作出现于通过create[global …

PHP 开发-XAMPP 安装

开发环境&#xff1a;Windows10&#xff0c;XAMPP&#xff08;x64-7.4.33&#xff09;&#xff0c;Netbeans。 XAMPP 安装 官网下载XAMPP安装包&#xff0c;我下载的版本 x64-7.4.33。安装包中相关软件版本&#xff08;官网上可查询&#xff09;&#xff1a; Apache 2.4.54M…

Java并发编程--变量可见性、避免指令重排,还得是用它

那怎么保证程序里一个线程对共享变量的修改能立马被其他线程看到了&#xff1f;这时候有人会说了&#xff0c;加锁呀&#xff0c;前面不就是因为加锁成本太高才使用的 ThreadLocal的吗&#xff1f;怎么又说回去了&#xff1f; 其实CPU每个核心也都是有缓存的&#xff0c;今天要…

基于el-form实现自动展开/收起的查询条件组件

说明 如果查询条件过多&#xff0c;影响页面的展示效果&#xff0c;网上看了一些实现自动展开/收起的&#xff0c;有根据最小高度控制的&#xff0c;有基于条件的如v-show来控制&#xff0c;下面借助js原生的hidden属性实现要素的显示、隐藏控制。 先一下效果&#xff1a; 优…

web扫码登录

文章目录需求流程交互流程服务交互流程关键思路代码生成二维码&#xff0c;返回给PC展示轮询查询二维码状态APP扫码请求登录总结需求 pc端实现app扫码登录 流程 交互流程 服务交互流程 关键思路 主要问题在于如何识别APP端用户&#xff0c;然后传递给PC端已经登录成功 通过…

小程序瀑布流实现

什么是瀑布流布局 瀑布流布局&#xff0c;一般等宽&#xff0c;不等高的列表排列 原理是找出高度之和最小的那一列&#xff0c;在高度最小列继续添加元素 可以通过 absolute 定位实现&#xff0c;动态计算每一项的 top 和 left 封装瀑布流方法 function getAllRect(context…

HTML期末作业课程设计期末大作业--小米网站开发者平台首页 1页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制| HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&#x…

MyBatis学习笔记(2022-11-30)

熬过无人问津的日子才会有诗和远方。 文章目录一、MyBatis简述二、快速入门三、MyBatis配置文件详解1. MyBatis核心配置文件1.1 configuration&#xff08;配置&#xff09;1.2 properties&#xff08;属性&#xff09;1.3 environments&#xff08;环境配置&#xff09;1.4 ty…

vue项目 element UI input框扫码枪扫描过快 出现数据丢失问题(已解决二)

项目需求: 输入框要掉两个接口&#xff0c;根据第一个验证接口返回的code&#xff0c;弹不同的框&#xff0c;点击弹框确认再掉第二个接口 根据客户现场反应&#xff0c;扫描枪快速扫描会出现 料号前几位字符丢失 不完整的问题。于是开始了测试之路。 解决方案探索 1.首先考…

数据可视化,销量第一的新能源汽车是什么?比亚迪新能源汽车销量接近60万辆

去年以来&#xff0c;新能源汽车火热度席卷全球&#xff0c;中国的新能源汽车无论制造或者销售&#xff0c;数量增长迅猛。下面小编用一款数据可视化软件&#xff0c;带你用可视化数据解读高端制造背后&#xff0c;中国新能源汽车的具体销售情况。同样如果你工作上有数据报表需…

[附源码]计算机毕业设计springboot酒店物联网平台系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

全国省市县 经纬度的 json数据(提供原文件),写Java代码,入库(提供代码)

目录 1 需求2 分析1 需求 有一个全国省市县 经纬度的 json数据,我想要使用代码入库 如何操作,代码咋写 2 分析 首先分析json结构, 一般拿到一个json数据,如果最外层不是 { } 包裹的,那么自己手动加一个 以上这个是自己加的,这个就是key 值就是list 集合 分析完json数…

【并发】深入理解Java线程的底层原理

线程基础知识 线程与进程 进程 操作系统会以进程为单位&#xff0c;分配系统资源&#xff08;CPU时间片、内存等资源&#xff09;&#xff0c;进程是资源分配的最小单位。 当一个程序被运行&#xff0c;从磁盘加载这个程序的代码至内存&#xff0c;这时就开启了一个进程。 线…

LDcad零件新增与导入

LDcad大颗粒小颗粒套装导入方法&#xff0c;以后LDcad也可以用套装搭建模型了。 LDcad大颗粒小颗粒套装导入方法&#xff0c; 以后LDcad也可以用套装搭建模型了。 有个遗憾&#xff0c;就是零件不全。 具体导入方法看下文。 我们可以看到。这些套装都有对应的图标。方便…