资讯专栏INFORMATION COLUMN

Vue+mint-ui+flexible仿移动端App(网易云课堂)

iOS122 / 3028人阅读

摘要:仿网易云课堂在线预览手机浏览或切换谷歌浏览器移动调试预览描述前端部分快速构建前端界面轮播图,滑块管理现非父子组件之间的通信移动设备兼容使用实现预编译实现所有小图标的加载,减少请求路由懒加载结合异步组件和的做请求存储用

Vue-wyclass 仿网易云课堂App
在线预览:手机浏览或切换谷歌浏览器移动调试
Gif预览

描述

前端部分

Vue2.0 + Mint-ui快速构建前端界面(轮播图,swiper滑块) ---Mint-ui

Vuex 管理现非父子组件之间的通信

移动设备兼容:使用rem+flexible.js

Stylus实现css预编译

icon-font实现所有小图标的加载,减少http请求 ----Icon-font

路由懒加载:Vue Router结合 Vue异步组件和Webpack 的 Code Splitting

axios做ajax请求

sessionStorage 存储用户信息

后端部分

本地使用webpack dev-server 搭建小型express服务

服务器端使用express搭建静态资源资源接口

待更新的功能

用 express + mongodb 保存用户状态

功能实现 首页

1、搜索框

1、tabbar切换

4、swiper滑动,切换页面

6、首页各个界面

分类

1、实现切换分类模块

2、右侧菜单

我的学习

1、判断登录状态

2、用户所学课程展示

个人

1、账户的登录

2、设置界面 退出当前账号

搜索界面

1、根据用户输入查找所有课程中符合要求的课程并显示

课程详细界面

1、通过router传参查找课程

1、根据用户是否拥有选择播放视频权限

2、课程介绍界面

总结

1、熟悉使用Vue2.0

2、在项目中,将组件进行分离,编写可以复用的组件,提高效率

3、Vuex的状态管理模块,统一的状态的管理,让我们更好的去对数据操作

4、util的工具,倒计时js

5、对axios有更进一步的理解,利用cros进行跨域处理

6、进行路由的懒加载,优化页面加载

实现细节 登录拦截
router.beforeEach((to, from, next) => {
  // NProgress.start();
  if (to.path == "/login") {
    sessionStorage.removeItem("userInfo");
  }
  let userInfo = JSON.parse(sessionStorage.getItem("userInfo"));
   if (!userInfo && to.path != "/account/login") {
     next({ path: "/account/login" })
   } else {
     next()
   }                            
  next()
})
路由懒加载
export default new Router({
  routes: [
    {
      path: "/home",
      name: "Home",
      component: resolve => require(["@/views/Home/Home"], resolve),
    },
    ]
})
vue-router url传参
   changeToCoursedetails(course){
      this.$router.push({path:"/home/coursedetails" , query:{id:course.id}})
      // this.$router.push({name:"Coursedetails" , params:{id:course.id}}) 
      // 可使用vue.$route 获取query和params
    },

params的特点是 路由后面要带参数名
并且传参的时候,参数名要跟路由后面设置的参数名对应。

但是 刷新界面,或者跳到别的界面,参数就会消失
params一旦设置在路由,params就是路由的一部分

CORS解决跨域问题
app.use(function (req, res, next) {
    // Website you wish to allow to connect
    res.setHeader("Access-Control-Allow-Origin", "*");
    // Request methods you wish to allow
    res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, PATCH, DELETE");
    // Request headers you wish to allow
    res.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type");
    // Set to true if you need the website to include cookies in the requests sent
    // to the API (e.g. in case you use sessions)
    res.setHeader("Access-Control-Allow-Credentials", true);
    // Pass to next layer of middleware
    next();
});
文件目录
├─api
│      api.js        ---Axios请求
├─common             
│  ├─font           ---iconfont
│  ├─js
│  └─stylus             ---stylus预处理和函数
├─components
│  │  loading.vue       ---加载界面组件
│  │  NotFound.vue      ---notFound组件
│  │  search.vue        ---查找组件
│  │  tabbar.vue        ---tabbar组件
│  │  
│  └─star               ---星级组件
├─router
│      index.js         ---router入口文件
│      
├─views
│  │  Classify.vue          ---主页分类界面
│  │  Classifydetails.vue   ---分类详细界面
│  │  Login.vue             ---登录界面
│  │  Mystudy.vue           ---主页我的学习界面
│  │  
│  ├─Account                ---主页我的账号界面
│  │      Account.vue       
│  │      setting.vue       ---设置界面
│  │      
│  ├─Coursedetails          ---课程详细界面
│  │      catalog.vue       
│  │      comment.vue
│  │      Coursedetails.vue 
│  │      introduce.vue     ---暂开发课程介绍界面
│  │      
│  └─Home                   ---我的主页中首页界面
│          classic.vue      ---经典课程界面
│          expert.vue       ---专家界面
│          Home.vue
│          major.vue        ---行家界面
│          recommend.vue    ---推荐界面
│          
└─vuex
    │  store.js             
    │  types.js
    │  
    └─modules
            com.js      ---vuex 状态管理
            user.js     ---vuex 用户管理
使用
# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build

# build for production and view the bundle analyzer report
npm run build --report
源码地址:Github 欢迎star哦

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93267.html

相关文章

  • vue仿lofter移动demo

    摘要:遇到问题时一定要去阅读文档,可以发现使用时遗漏或者没有注意的地方。打包文件时也要注意修改路径不然就踩坑了。 vue_lofter 一个仿lofte手机端的vue项目 项目描述 技术栈 Vue2.0全家桶 + axios + Vuex + Mint-ui + Mock.js + Stylus 预览效果 ?预览地址(PC端建议在Chrome下开启调试模式或移动端浏览) ?源码地址✨✨求你...

    wwolf 评论0 收藏0
  • Vue2.0全家桶仿腾讯课堂移动

    摘要:最近在学习觉得超好用,忍不住自己仿了个腾讯课堂练练手,不当之处还请大家指正持续更新中。的使用的状态存储是响应式的。需要注意类似于,不同在于提交的是,而不是直接变更状态。 最近在学习vue,觉得超好用,忍不住自己仿了个腾讯课堂练练手,不当之处还请大家指正(持续更新中)。 效果预览 ?在线预览:点我!!!在线预览,手机浏览或切换浏览器移动调试 ?源码地址:Github✨✨求你的小星星~...

    zorro 评论0 收藏0
  • Vue2.0全家桶仿腾讯课堂移动

    摘要:最近在学习觉得超好用,忍不住自己仿了个腾讯课堂练练手,不当之处还请大家指正持续更新中。的使用的状态存储是响应式的。需要注意类似于,不同在于提交的是,而不是直接变更状态。 最近在学习vue,觉得超好用,忍不住自己仿了个腾讯课堂练练手,不当之处还请大家指正(持续更新中)。 效果预览 ?在线预览:点我!!!在线预览,手机浏览或切换浏览器移动调试 ?源码地址:Github✨✨求你的小星星~...

    anquan 评论0 收藏0
  • 记一次vue仿网易音乐的单页面应用

    摘要:说明一直想做一个基于的项目但是因为项目往往要涉及到后端的知识不会后端真的苦所以就没有一直真正的动手去做一个项目。直到发现上有网易云音乐的才开始动手去做。仅仅完成了首页登入,歌单,歌曲列表页。 说明 一直想做一个基于VUE的项目,但是因为项目往往要涉及到后端的知识(不会后端真的苦),所以就没有一直真正的动手去做一个项目。直到发现GitHub上有网易云音乐的api NeteaseCloud...

    hqman 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<