首页 > 其他分享 >小说网站|基于Springboot和Vue实现在线小说阅读网站

小说网站|基于Springboot和Vue实现在线小说阅读网站

时间:2023-12-07 14:32:15浏览次数:43  
标签:Vue return String get 网站 Request int post 小说


 

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-PT-116

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:Springboot和Vue

二,项目简介

本项目基于Springboot和Vue开发实现了一个在线小说阅读网站平台。系统设计用户主要有三类:读者、作者、管理员。用户注册时以读者身分进入平台,可以自己修改身分为作者。读者登录系统可以查看并在线阅读发布的小说章节内容,并在线评论、点赞和举报处理,同时可以查看平台发布的小说新闻和平台公告新闻。。作者登录平台除了可以查看小说外,还可以在线发布小说和内容,进行在线创作。所有的信息由平台管理员进行管理操作,包含人员管理、小说管理、章节管理、类型管理、举报管理、评论管理、新闻管理、系统管理(轮播图管理、超链接管理)等。

三,系统展示

系统首页

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_02编辑

小说列表

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_03

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_04编辑

小说阅读-点赞-举报

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_05

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_06编辑

资讯信息查看

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_07

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_08编辑

个人中心

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_09

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_10编辑

草稿箱

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_11

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_12编辑

个人评论管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_13

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_14编辑

个人资料管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_15

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_16编辑

管理员登录系统

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_17

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_18编辑

作者管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_19

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_20编辑

小说分类管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_21

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_22编辑

小说管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_23

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_24编辑

评论-举报-点赞管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_25

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_26编辑

平台新闻管理和分类管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_27

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_28编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_29

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_30编辑

系统管理

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_31

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_32编辑

四,核心代码展示

package com.spring.controller;

import com.spring.util.DESUtil;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 验证码控制器
 */
@Controller
public class CaptchaController extends BaseController {

    /**
     * 输出验证码图片,并记录session “random” 里等待登录时写入
     */
    @RequestMapping("/captcha")
    public String Index() {
        // 把验证码字符串写入session 中,保存待下次验证时使用
        String sRand = createRandomString(4);

        try {
            // 输出渲染好的内容到前端浏览器
            if (isAjax()) {
                String result = null;
                do {
                    try {
                        result = DESUtil.encrypt("CaptchControllerPassword", sRand);
                    } catch (Exception e) {
                        result = null;
                    }
                    if (result != null) {
                        if (!sRand.equals(DESUtil.decrypt("CaptchControllerPassword", result))) {
                            result = null; // 解不出来所以出错
                        }
                    }
                } while (result == null);

                assign("url", "/randtocaptch?captchToken=" + urlencode(result));
                assign("token", result);
                return json();
            } else {
                //byte[] img = xxx;
                response.setContentType("image/jpeg"); // 定义输出类型为 图片
                response.setHeader("Pragma", "No-cache"); // 设置为无缓存
                response.setHeader("Cache-Control", "no-cache"); // 设置为无缓存
                response.setDateHeader("Expires", 0); // 设置缓存时间为0秒后过期
                request.getSession().setAttribute("random", sRand);
                ServletOutputStream stream = response.getOutputStream();
                createCaptch(sRand, stream);
                stream.flush();
                stream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "success";
    }

    /**
     * url 编码,中文要进行编码输出
     * @param str
     * @return
     */
    public static String urlencode(Object str) {
        try {
            return java.net.URLEncoder.encode(String.valueOf(str), "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str.toString();
    }

    /**
     * 使用上面的加密字符串生成验证码
     * @return
     */
    @RequestMapping("/randtocaptch")
    public String getCaptch() throws IOException {
        String captchToken = request.getParameter("captchToken");
        String sRand = DESUtil.decrypt("CaptchControllerPassword", captchToken);
        HttpSession session = request.getSession();
        {
            //byte[] img = xxx;
            response.setContentType("image/jpeg"); // 定义输出类型为 图片
            response.setHeader("Pragma", "No-cache"); // 设置为无缓存
            response.setHeader("Cache-Control", "no-cache"); // 设置为无缓存
            response.setDateHeader("Expires", 0); // 设置缓存时间为0秒后过期
            ServletOutputStream stream = response.getOutputStream();
            createCaptch(sRand, stream);
            stream.flush();
            stream.close();
        }
        return "success";
    }

    private String createRandomString(int len) {
        // 生成随机数类
        Random random = new Random();
        String result = "";
        for (int i = 0; i < len; i++) {
            String rand = String.valueOf(random.nextInt(10));
            result += rand;
        }
        return result;
    }

    private void createCaptch(String randomstr, OutputStream stream) {
        int width = 60, height = 20; // 定义图片宽为 60  高度为 20

        // 创建图片缓冲区
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        // 获取渲染画板
        Graphics g = image.getGraphics();

        // 生成随机数类
        Random random = new Random();

        // 设置颜色
        g.setColor(getRandColor(200, 250));

        // 绘制矩形
        g.fillRect(0, 0, width, height);

        // 设置字体信息
        g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

        // 设置颜色信息
        g.setColor(getRandColor(160, 200));

        // 写入干扰线
        for (int i = 0; i < 155; i++) {
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int xl = random.nextInt(12);
            int yl = random.nextInt(12);
            g.drawLine(x, y, x + xl, y + yl);
        }

        // 写入验证码字符串
        for (int i = 0; i < randomstr.length(); i++) {
            String rand = randomstr.substring(i, i + 1); //String.valueOf(random.nextInt(10));

            g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
            g.drawString(rand, 13 * i + 6, 16);
        }
        g.dispose(); // 释放画板

        try {
            // 输出渲染好的内容到前端浏览器

            ImageIO.write(image, "JPEG", stream);
            stream.flush();
            stream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取随机颜色
     * @param fc
     * @param bc
     * @return
     */
    protected Color getRandColor(int fc, int bc) {
        Random random = new Random();
        if (fc > 255) fc = 255;
        if (bc > 255) bc = 255;
        int r = fc + random.nextInt(bc - fc);
        int g = fc + random.nextInt(bc - fc);
        int b = fc + random.nextInt(bc - fc);
        return new Color(r, g, b);
    }
}

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_33

package com.spring.controller;

import com.jntoo.db.*;
import com.jntoo.db.utils.*;
import com.spring.dao.*;
import com.spring.entity.*;
import com.spring.service.*;
import com.spring.util.*;
import com.spring.util.Info;
import java.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import tk.mybatis.mapper.entity.Example;

/**
 * 点赞 */
@Controller
public class DianzanController extends BaseController {

    @Autowired
    private DianzanMapper dao;

    @Autowired
    private DianzanService service;

    @Autowired
    private PinglunService serviceRead;

    /**
     *  后台列表页
     *
     */
    @RequestMapping("/dianzan_list")
    public String list() {
        // 检测是否有登录,没登录则跳转到登录页面
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }

        String order = Request.get("order", "id"); // 获取前台提交的URL参数 order  如果没有则设置为id
        String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort  如果没有则设置为desc
        int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据
        Example example = new Example(Dianzan.class); //  创建一个扩展搜索类
        Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
        String where = " 1=1 "; // 创建初始条件为:1=1
        where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句
        criteria.andCondition(where); // 将条件写进上面的扩展条件类中
        if (sort.equals("desc")) { // 判断前台提交的sort 参数是否等于  desc倒序  是则使用倒序,否则使用正序
            example.orderBy(order).desc(); // 把sql 语句设置成倒序
        } else {
            example.orderBy(order).asc(); // 把 sql 设置成正序
        }
        int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page  如果没有则设置为1
        page = Math.max(1, page); // 取两个数的最大值,防止page 小于1
        List<Dianzan> list = service.selectPageExample(example, page, pagesize); // 获取当前页的行数

        // 将列表写给界面使用
        assign("totalCount", request.getAttribute("totalCount"));
        assign("list", list);
        assign("orderby", order); // 把当前排序结果写进前台
        assign("sort", sort); // 把当前排序结果写进前台
        return json(); // 将数据写给前端
    }

    public String getWhere() {
        _var = new LinkedHashMap(); // 重置数据
        String where = " ";
        // 判断URL 参数pinglunid是否大于0
        if (Request.getInt("pinglunid") > 0) {
            // 大于0 则写入条件
            where += " AND pinglunid='" + Request.getInt("pinglunid") + "' ";
        }
        // 以下也是一样的操作,判断是否符合条件,符合则写入sql 语句
        if (!Request.get("dianzanren").equals("")) {
            where += " AND dianzanren LIKE '%" + Request.get("dianzanren") + "%' ";
        }
        return where;
    }

    /**
     * 评论人列表
     */
    @RequestMapping("/dianzan_list_pinglunren")
    public String listpinglunren() {
        // 检测是否有登录,没登录则跳转到登录页面
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }
        String order = Request.get("order", "id"); // 获取前台提交的URL参数 order  如果没有则设置为id
        String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort  如果没有则设置为desc
        int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据

        Example example = new Example(Dianzan.class); //  创建一个扩展搜索类
        Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
        // 初始化一个条件,条件为:评论人=当前登录用户
        String where = " pinglunren='" + request.getSession().getAttribute("username") + "' ";
        where += getWhere();

        criteria.andCondition(where); // 将条件写入
        if (sort.equals("desc")) { // 注释同list
            example.orderBy(order).desc(); // 注释同list
        } else {
            example.orderBy(order).asc(); // 注释同list
        }

        int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 注释同list
        page = Math.max(1, page); // 注释同list

        List<Dianzan> list = service.selectPageExample(example, page, pagesize);
        assign("totalCount", request.getAttribute("totalCount"));
        assign("list", list);
        assign("orderby", order);
        assign("sort", sort);
        return json(); // 将数据写给前端
    }

    /**
     * 点赞人列表
     */
    @RequestMapping("/dianzan_list_dianzanren")
    public String listdianzanren() {
        // 检测是否有登录,没登录则跳转到登录页面
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }
        String order = Request.get("order", "id"); // 获取前台提交的URL参数 order  如果没有则设置为id
        String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort  如果没有则设置为desc
        int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据

        Example example = new Example(Dianzan.class); //  创建一个扩展搜索类
        Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
        // 初始化一个条件,条件为:点赞人=当前登录用户
        String where = " dianzanren='" + request.getSession().getAttribute("username") + "' ";
        where += getWhere();

        criteria.andCondition(where); // 将条件写入
        if (sort.equals("desc")) { // 注释同list
            example.orderBy(order).desc(); // 注释同list
        } else {
            example.orderBy(order).asc(); // 注释同list
        }

        int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 注释同list
        page = Math.max(1, page); // 注释同list

        List<Dianzan> list = service.selectPageExample(example, page, pagesize);
        assign("totalCount", request.getAttribute("totalCount"));
        assign("list", list);
        assign("orderby", order);
        assign("sort", sort);
        return json(); // 将数据写给前端
    }

    @RequestMapping("/dianzan_add")
    public String add() {
        _var = new LinkedHashMap(); // 重置数据
        int id = Request.getInt("id"); // 根据id 获取 评论模块中的数据
        Pinglun readMap = serviceRead.find(id);
        // 将数据行写入给前台jsp页面
        assign("readMap", readMap);

        return json(); // 将数据写给前端
    }

    @RequestMapping("/dianzan_updt")
    public String updt() {
        _var = new LinkedHashMap(); // 重置数据
        int id = Request.getInt("id");
        // 获取行数据,并赋值给前台jsp页面
        Dianzan mmm = service.find(id);
        assign("mmm", mmm);
        assign("updtself", 0);

        return json(); // 将数据写给前端
    }

    /**
     * 添加内容
     * @return
     */
    @RequestMapping("/dianzaninsert")
    public String insert() {
        _var = new LinkedHashMap(); // 重置数据
        String tmp = "";
        Dianzan post = new Dianzan(); // 创建实体类
        // 设置前台提交上来的数据到实体类中
        post.setPinglunid(Request.getInt("pinglunid"));

        post.setBiao(Request.get("biao"));

        post.setBiaoid(Request.getInt("biaoid"));

        post.setBiaoti(Request.get("biaoti"));

        post.setPingfen(Request.get("pingfen"));

        post.setPinglunneirong(Request.get("pinglunneirong"));

        post.setPinglunren(Request.get("pinglunren"));

        post.setDianzanren(Request.get("dianzanren"));

        post.setPinglunid(Request.getInt("pinglunid"));

        Dianzan dz = DB.name(Dianzan.class).where("pinglunid" , post.getPinglunid()).where("dianzanren" , post.getDianzanren()).find();

        if(dz!= null){
            DB.name(Dianzan.class).delete(dz.getId());
            return jsonResult(-1);
        }

        service.insert(post); // 插入数据
        int charuid = post.getId().intValue();
        Query.execute("update pinglun set dianzanshu=dianzanshu+1 where id='" + request.getParameter("pinglunid") + "'");

        if (isAjax()) {
            return jsonResult(post);
        }
        return showSuccess("保存成功", Request.get("referer").equals("") ? request.getHeader("referer") : Request.get("referer"));
    }

    /**
     * 更新内容
     * @return
     */
    @RequestMapping("/dianzanupdate")
    public String update() {
        _var = new LinkedHashMap(); // 重置数据
        // 创建实体类
        Dianzan post = new Dianzan();
        // 将前台表单数据填充到实体类
        if (!Request.get("pinglunid").equals("")) post.setPinglunid(Request.getInt("pinglunid"));
        if (!Request.get("biao").equals("")) post.setBiao(Request.get("biao"));
        if (!Request.get("biaoid").equals("")) post.setBiaoid(Request.getInt("biaoid"));
        if (!Request.get("biaoti").equals("")) post.setBiaoti(Request.get("biaoti"));
        if (!Request.get("pingfen").equals("")) post.setPingfen(Request.get("pingfen"));
        if (!Request.get("pinglunneirong").equals("")) post.setPinglunneirong(Request.get("pinglunneirong"));
        if (!Request.get("pinglunren").equals("")) post.setPinglunren(Request.get("pinglunren"));
        if (!Request.get("dianzanren").equals("")) post.setDianzanren(Request.get("dianzanren"));

        post.setId(Request.getInt("id"));
        service.update(post); // 更新数据
        int charuid = post.getId().intValue();

        if (isAjax()) {
            return jsonResult(post);
        }

        return showSuccess("保存成功", Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
    }

    /**
     *  删除
     */
    @RequestMapping("/dianzan_delete")
    public String delete() {
        _var = new LinkedHashMap(); // 重置数据
        if (!checkLogin()) {
            return showError("尚未登录");
        }
        int id = Request.getInt("id"); // 根据id 删除某行数据
        Map map = Query.make("dianzan").find(id);

        service.delete(id); // 根据id 删除某行数据
        Query.execute("update pinglun set dianzanshu=dianzanshu-1 where id='" + map.get("pinglunid") + "'");

        return showSuccess("删除成功", request.getHeader("referer")); //弹出删除成功,并跳回上一页
    }
}

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_34

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线小说_35

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_36编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_37

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_38编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_39

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_40编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_41

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_42编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_43

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_44编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_45

小说网站|基于Springboot和Vue实现在线小说阅读网站_在线阅读_46编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_47

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_48编辑

小说网站|基于Springboot和Vue实现在线小说阅读网站_小说网站_49

小说网站|基于Springboot和Vue实现在线小说阅读网站_前后端分离_50编辑



标签:Vue,return,String,get,网站,Request,int,post,小说
From: https://blog.51cto.com/u_16147814/8722125

相关文章

  • 网站建设,后台管理非常合理有序
    Translator   比同类别的其它服务器更实惠,给出了新老用户非常大的优惠与售后补贴,很适合个人与公司团队的网站建设,后台管理非常合理有序,还有各类产品供用户选择,大力支持阿贝云免费服务器。连接速度快,可用来测试,使用起来方便,不卡顿,而且永久免费,适合做网站服务器、数据处......
  • vue中this.$set()的使用
    data中数据,都是响应式。也就是说,如果操作data中的数据,视图会实时更新;但在实际开发中,遇到过一个坑:若data中数据类型较为复杂,方法methods中改变对象的属性,而页面并不会改变原因是vue监听不到数据类型特别复杂的属性。可以使用this.$set()来进行强制更新,进而解决问题一。对象操作......
  • Vue + Element 实现按钮指定间隔时间点击
    1、业务需求需要加一个按钮,调用第三方API,按钮十分钟之内只能点击一次,刷新页面也只能点击一次2、思路加一个本地缓存的时间戳,通过时间戳计算指定时间内不能点击按钮3、实现1)vue页面<template><el-row:gutter="15"><el-col:span="4"><el-buttontype="danger"......
  • 5个出口外贸网站建设的方法和步骤是什么?
    在当今数字化时代,出口外贸企业越来越重视建设专业而高效的网站,以促进业务拓展和国际市场的开拓。为了成功建设出口外贸网站,企业需要遵循一系列关键方法和步骤。本文将介绍五个重要的出口外贸网站建设方法,以助力企业在国际市场中脱颖而出。1.明确网站目标与定位在出口外贸网站建设......
  • vue webpack 配置babel es6转化转化es5
    1、安装相关依赖npmi-D@babel/[email protected]@babel/[email protected]@8.0.6//语法中有asyncawait等npmi-D@babel/[email protected]@babel/[email protected]、babel.config.jsmodule.exports={pres......
  • uni-app 基础架构搭建 ts+vue3 命令行
    1. 安装全局degitnpminstall-gdegit2.创建工程my-vue3-ts-project#创建以javascript开发的工程npxdegitdcloudio/uni-preset-vue#vitemy-vue3-ts-project#创建以ts开发的工程npxdegitdcloudio/uni-preset-vue#vite-tsmy-vue3-ts-project3进入目录cdmy-v......
  • 5个出口外贸网站建设的方法和步骤是什么?
    在当今数字化时代,出口外贸企业越来越重视建设专业而高效的网站,以促进业务拓展和国际市场的开拓。为了成功建设出口外贸网站,企业需要遵循一系列关键方法和步骤。本文将介绍五个重要的出口外贸网站建设方法,以助力企业在国际市场中脱颖而出。1.明确网站目标与定位在出口外贸网站建设......
  • vue + 无限滚动不同高度
     <divclass="exbox"style="height:461px;overflow:auto"@mouseenter="handleMouseEnter()"@mouseleave="handleMouseLeave()">       <divclass="mainrollul"ref="textList"id="......
  • Vue 配置.env.pro和.env.dev文件
    1、Vue2配置1.1新建文件.env.developmentVUE_APP_BASEURL='http://localhost:8081'.env.productionVUE_APP_BASEURL='http://localhost:8082'1.2访问importVuefrom'vue'//配置全局请求地址Vue.prototype.$baseUrl=process.env.VUE_APP_BA......
  • 开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!
    你好,我是Kagol。前言从今年2月份开源以来,有不少朋友给我们TinyVue组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些共性问题,形成了一份《组件demo和api文档编写规范》为了提升开发者阅读文档的体验,从9月......