NUXT搭建及Redis的基本使用

1.搭建项目前台系统环境

        1.NUXT(前端框架 )

定义:Nuxt.js 是一个基于 Vue.js 的轻量级应用框架,可用来创建服务端渲染 (SSR) 应用,也可充当静态站点引擎生成静态站点应用,具有优雅的代码结构分层和热加载等特性。

        客户端访问服务端 服务端中tomcat和node.js进行访问会把数据一次性全部返回给客户端 有利于SEO.

         正常框架使用ajax: 异步交互,缺点 (不利于SEO -- 百度搜素排名是否靠前,匹配度降低。 )

NUXT环境目录结构

        1..nuxt  编译后的文件

        2.assets 静态资源 如:css,js

        3.components 项目使用的相关组件

         4.layouts 定义网页布局(先引入default.vue 头和尾的布局--->(<ifream/>)引入pages中的内容

        5.pages 项目中具体的页面

        6.nuxt.config.js 核心配置文件

2.整合前台系统

        nuxt中的路由:1.固定路由(路径写死,路径是不变的)

                                       在pages中创建文件夹 course 在course文件夹创建index.vue

                                 2.动态路由( 每次生成的路由地址不一样根据点击不同来显示不同的内容)

                                    如果我们需要根据id查询一条记录,就需要使用动态路由。NUXT的动态路由是以下划线开头的vue文件,参数名为下划线后边的文件名

在pages下的course目录下创建_id.vue

3.首页显示banner显示(轮播图)

        1.安装轮播图插件  npm install vue-awesome-swiper(注意版本问题)

        2.配置幻灯片插件

                (1)在 plugins 文件夹下新建文件

                 import Vue from 'vue'

                 import VueAwesomeSwiper from 'vue-awesome-swiper/dist/ssr'

                  Vue.use(VueAwesomeSwiper)

                (2)在nuxt.config.js添加组件

                plugins: [

                    { src: '~/plugins/nuxt-swiper-plugin.js', ssr: false }

                  ],

                css: [

                    'swiper/dist/css/swiper.css'

                  ],

                (3)复制项目中使用的静态资源(assets目录中)

                (4)在defalt.vue中引入page页面下的内容

                (5)幻灯片插件和js切换效果

                        

<div v-swiper:mySwiper="swiperOption">

    <div class="swiper-wrapper">

        <div class="swiper-slide" style="background: #040B1B;">

            <a target="_blank" href="/">

                <img src="~/assets/photo/banner/1525939573202.jpg" alt="首页banner">

            </a>

        </div>

        <div class="swiper-slide" style="background: #040B1B;">

            <a target="_blank" href="/">

                <img src="~/assets/photo/banner/1525939573202.jpg" alt="首页banner">

            </a>

        </div>

    </div>

    <div class="swiper-pagination swiper-pagination-white"></div>

    <div class="swiper-button-prev swiper-button-white" slot="button-prev"></div>

    <div class="swiper-button-next swiper-button-white" slot="button-next"></div>

</div>

export default {

  data () {

    return {

      swiperOption: {

        //配置分页

        pagination: {

          el: '.swiper-pagination'//分页的dom节点

        },

        //配置导航

        navigation: {

          nextEl: '.swiper-button-next',//下一页dom节点

          prevEl: '.swiper-button-prev'//前一页dom节点

        }

      }

    }

  }

}

                       

4.NUXT不带axios需要自己下载封装

        1.npm install axios (下载axios)

        2.封装axios

                import axios from 'axios'

                const service = axios.create({

                    baseURL: 'http://localhost:9001',

                    timeout: 20000

                })

<span class="fr jgTag bg-green" v-if="Number(course.price) === 0">

           <i class="c-fff fsize12 f-fA">免费</i>

 </span>

<span class="fr jgTag bg-green"  v-else>

           <i class="c-fff fsize12 f-fA">不免费</i>

 </span>

export default service

5.首页数据使用redis缓存

         redis的特点:

                1.基于key-vaue的形式进行存储

                2..读写速率可观

                3.支持多种数据接口:String list hash set zset

                4.支持持久化 通过内存存储的 也可以存储到内容中(aof和rdb)

                5.支持过期时间,支持事务

redis的使用 写入到common中

 (1)引入spingboot整合redis相关依赖

 (2)创建redis缓存配置类

        @EnableCaching  //开始缓存注解

    @Configuration  //配置类
public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        template.setConnectionFactory(factory);
        //key序列化方式
        template.setKeySerializer(redisSerializer);
        //value序列化
        template.setValueSerializer(jackson2JsonRedisSerializer);
        //value hashmap序列化
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        return template;
    }
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory) {
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        //解决查询缓存转换异常的问题
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // 配置序列化(解决乱码的问题),过期时间600秒
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofSeconds(600)) //过期时间
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
                .disableCachingNullValues();
        RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
                .cacheDefaults(config)
                .build();
        return cacheManager;
    }

}

3.在需要缓存的方法加上需要的注解 -redis-cli -h localhost -p 6379 -a 123456 连接redis

        连接须知 :1.关闭服务其防火墙 2.bind 127.0.0.1    3.protected-mode no

          (1).  @Cacheable(value = "banner",key = "'selectIndexList'")

 (加上注解的方法在第一次访问是会把数据放到缓存中,第二次查询先去缓存中查找是否有缓存的数据,有的话拿出来没有的话再去查询数据库)一般用在查询上

        (2)@CachePut 同时一般用在添加

        (3)@CacheEvict(value = "banner", allEntries=true)

--其中allEntries方法可以控制是否删除所有缓存的数据 一般就在更新和修改

                

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值