3.2 查询全部 3.2.1 需求分析 初次进入页面,没有输入任何查询条件,默认查询全部课程,分页显示。 3.2.2 API方法 在api目录创建本工程所用的api方法类,api方法类使用了public.js等一些抽取类: /api/public.js-------------抽取axios 的基础方法 /api/util.js-----------------工具类 /config/sysConfig.js----系统配置类,配置了系统参数变量 创建course.js,作为课程相关业务模块的api方法类。 [mw_shl_code=applescript,true]import http from './public' import qs from 'qs' let config = require('~/config/sysConfig') let apiURL = config.apiURL let staticURL = config.staticURL if (typeof window === 'undefined') { apiURL = config.backApiURL staticURL = config.backStaticURL } /搜索/ export const search_course = (page,size,params) => {
let querys = qs.stringify(params);
return http.requestQuickGet(apiURL+"/search/course/list/"+page+"/"+size+"?"+querys); }[/mw_shl_code] 3.2.3搜索方法 实现思路如下: 1、用户请求本页面到达node.js 2、在asyncData方法中向服务端请求查询课程 3、asyncData方法执行完成开始服务端渲染 在asyncData中执行搜索,代码如下:


[mw_shl_code=applescript,true] 

async asyncData({ store, route }) {//服务端调用方法  
     //搜索课程   
    let page = route.query.page;      
if(!page){      
   page = 1;    
   }else{       
  page = Number.parseInt(page)   
    }     
  console.log(page);    
   //请求搜索服务,搜索服务   
    let course_data = await courseApi.search_course(page,2,route.query);   
    console.log(course_data)     
    if (course_data &&  course_data.queryResult ) {   
      let keywords = ''    
     let mt=''      
   let st=''    
     let grade=''    
     let keyword=''     
    let total = course_data.queryResult.total    
     if( route.query.mt){       
    mt = route.query.mt     
    }       
  if( route.query.st){     
      st = route.query.st    
    }         if( route.query.grade){    
       grade = route.query.grade    
     }     
   if( route.query.keyword){     
      keyword = route.query.keyword     
    }        
return {   
        courselist: course_data.queryResult.list,//课程列表   
        keywords:keywords,
          mt:mt,[/mw_shl_code]
[mw_shl_code=applescript,true]st:st,    
       grade:grade,     
      keyword:keyword,   
        page:page,        
   total:total,        
   imgUrl:config.imgUrl    
     }       }else{    
     return {      
     courselist: {},       
    first_category:{},      
     second_category:{},      
     mt:'',        
   st:'',      
     grade:'',     
      keyword:'',    
       page:page,       
    total:0,          
imgUrl:config.imgUrl   
      }     
  }  
    }
[/mw_shl_code]
3.2.5 页面 
在页面中展示课程列表。

[mw_shl_code=applescript,true]<div class="content‐list">         
          <div class="recom‐item" v‐for="(course, index) in courselist">    
               <nuxt‐link :to="'/course/detail/'+course.id+'.html'" target="_blank">         
            <div v‐if="course.pic">                 
      <p><img :src="imgUrl+'/'+course.pic" width="100%" alt=""></p>     
                </div>        
            <div v‐else>       
                <p><img src="/img/widget‐demo1.png" width="100%" alt=""></p>      
               </div>      
               <ul >        
               <li class="course_title"><span v‐html="course.name"></span></li>                  
     <li style="float: left"><span v‐if="course.charge == '203001'">免费</span> <span v‐if="course.charge == '203002'">¥{{course.price | money}}</span>      
                <!‐‐ <em> ∙ </em>‐‐>  <!‐‐<em>1125人在学习</em>‐‐></li>       
              </ul>          
         </nuxt‐link>      
           </div>            
       <li class="clearfix"></li>    
           </div>[/mw_shl_code]
3.3.1 服务端代码
[mw_shl_code=applescript,true]... //分页 //当前页码 if(page<=0){  
   page = 1; } //起始记录下标 int from  = (page ‐1) * size; searchSourceBuilder.from(from); searchSourceBuilder.size(size); ...[/mw_shl_code]
3.3.2 前端代码 
使用Element-UI的el-pagination分页插件:

[mw_shl_code=applescript,true]<div style="text‐align: center"> 
  <el‐pagination  
   background  
   layout="prev, pager, next"  
   @current‐change="handleCurrentChange"  
   :total="total"  
   :page‐size="page_size"  
   :current‐page="page"  
   prev‐text="上一页"   
  next‐text="下一页">  
</el‐pagination> </div>
[/mw_shl_code]
定义分页触发方法:

[mw_shl_code=applescript,true]methods:{   //分页触发 
  handleCurrentChange(page) {  
   this.page = page    
this.$route.query.page = page  
   let querys = querystring.stringify(this.$route.query)  
   window.location = '/course/search?'+querys;   }   ... [/mw_shl_code]