Giter Site home page Giter Site logo

lzxb / vue-cnode Goto Github PK

View Code? Open in Web Editor NEW
1.1K 76.0 322.0 1.8 MB

基于vue2 + vue-router + vuet + ES6 + less + flex.css重写vue版cnode社区,使用webpack2打包

JavaScript 18.33% Vue 40.38% HTML 31.45% CSS 9.83%
vue-cnode cnodejs vue vuejs2 vue-demo vuejs vue2-demo vue-router vuex vuex2

vue-cnode's Introduction

此项目除了正常的bug修复,不再进行功能更新

如果对状态管理感兴趣,可以看下 Tms,文档更齐全

前言

项目灵感的最初来源是@shinygang来自的Vue-cnodejs, 感谢cnodejs社区提供的API。 github:https://github.com/lzxb/vue-cnode

感悟

在vue-cnode升级vue2的时候,在公司内部已经有两个正式项目使用vue2,
遇到的一个最难的问题,就是如何能在页面后退时还原数据和滚动条位置,
虽然vue2内置了keep-alive组件,vue-router也提供了scrollBehavior方法进行设置,
但是仍然无法满足需求,后来阅读vue-router的源码发现,
每个页面都会自动在history.state对象中存储一个对应的key值,
便利用这个特性实现了页面后退时,数据和滚动条还原,
不过目前只是实现了页面的顶级组件还原,
如果需要对顶级组件下的子组件实现数据还原,
可以利用$options._scopeId来实现。
哈哈,具体如何实现就要靠大家自己发挥想象力了

技术栈

基于vue2 + vue-router + vuet + ES6 + less + flex.css重写vue版cnode社区,使用webpack打包

使用项目

1.克隆项目:      git clone https://github.com/lzxb/vue-cnode.git
2.安装nodejs
3.安装依赖:      npm install
4.启动服务:      npm run dev
5.发布代码:      npm run build

功能

  • 首页列表,上拉加载
  • 主题详情,回复,点赞
  • 消息列表
  • 消息提醒
  • 消息标记为已读
  • 个人主页
  • 用户信息
  • 登录
  • 退出
  • 关于
  • 页面后退,数据还原
  • 页面后退,滚动位置还原
  • ajax请求拦截器
  • 页面跳转,不再执行此页面的ajax请求回调方法
  • 启动图

项目目录说明

.
|-- config                           // 项目开发环境配置
|   |-- index.js                     // 项目打包部署配置
|-- src                              // 源码目录
|   |-- components                   // 公共组件
|       |-- content.vue              // 页面内容公共组件
|       |-- data-null.vue            // 数据为空时公共组件
|       |-- footer.vue               // 底部导航栏公共组件
|       |-- header.vue               // 页面头部公共组件
|       |-- index.js                 // 加载各种公共组件
|       |-- loading.vue              // 页面数据加载公共组件
|   |-- config                       // 路由配置和程序的基本信息配置
|       |-- config.js                // 配置项目的基本信息
|       |-- routes.js                // 配置页面路由
|   |-- css                          // 各种css文件
|       |-- common.css               // 全局通用css文件
|   |-- iconfont                     // 各种字体图标
|   |-- images                       // 公共图片
|   |-- less                         // 各种less文件
|       |-- common.less              // 全局通用less文件
|       |-- config.less              // 全局通用less配置文件
|   |-- lib                          // 各种插件
|       |-- route-data               // 实现页面后退数据还原,滚动位置还原
|   |-- mixins                       // 各种全局mixins
|       |-- pull-list.js             // 上拉加载
|   |-- pages                        // 各种页面组件
|       |-- about                    // 关于
|       |-- index                    // 首页
|       |-- login                    // 登录
|       |-- my                       // 我的主页,和消息列表
|       |-- signout                  // 退出
|       |-- topic                    // 主题详情,主题新建
|       |-- user                     // 查看用户资料
|   |-- store                        // vuex的状态管理
|       |-- index.js                 // 加载各种store模块
|       |-- user.js                  // 用户store
|   |-- template                     // 各种html文件
|       |-- index.html               // 程序入口html文件
|   |-- utils                        // 公共的js方法
|   |-- app.vue                      // 页面入口文件
|   |-- main.js                      // 程序入口文件,加载各种公共组件
|-- .babelrc                         // ES6语法编译配置
|-- webpack.config.js                // 程序打包配置
|-- server.js                        // 开发时使用的服务器
|-- README.md                        // 项目说明
|-- package.json                     // 配置项目相关信息,通过执行 npm init 命令创建
.

扫一扫二维码查看效果

vue-cnode's People

Contributors

clear2 avatar lzxb avatar yanhuating66 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vue-cnode's Issues

实现滚动位置还原时报Unexpected token import的异常

你好,我想在项目里实现页面后退数据还原,滚动位置还原的效果,结果报错,错误提示为:VM30878:3 Uncaught SyntaxError: Unexpected token import

我的具体做法如下:
1、将lib文件夹复制到项目里;
2、在webpack配置文件里的resolve的alias配置route-data;
3、在main.js里添加import {scrollRecord} from 'route-data'以及Vue.directive('scroll-record', scrollRecord)

在没有引入route-data时没有该错误,如
import Vue from 'vue'
import VueRouter from 'vue-router'
可以正常运行

import Vue from 'vue'
import VueRouter from 'vue-router'
import {scrollRecord} from 'route-data'
报异常VM30878:3 Uncaught SyntaxError: Unexpected token import

首页异步获取的数据建议缓存

每次切换回首页都会获取一次最新的帖子 虽然能及时获取新帖子 但是增加了等待时间 降低了体验
建议把数据保存在本地 然后用主动刷新替代自动的

content的css样式在哪?

cnodeAPI把那些content加进来渲染好后,发现没有CSS样式,这时候哪里找通用的css样式,因为content是每个人发的内容,所以,自己好像写不了额、

关于页面title的问题

如果想实现:每个路由URL都有自己的页面title,该如何做啊?麻烦指导下思路~

切换Tab栏可以记录位置吗?

比方说从“精华”选项下拉然后切换“分享”选项,在回退到“精华”选项,记录下“精华”选项的位置而不重新加载

关于post请求的问题

请问为什么你的post请求失败了还有返回值,而我发送的post请求失败了就直接跳到错误处理代码了?
例如发布主题的post请求:
我的代码:

async createTopic (context) {
  const data = { accesstoken: context.state.accessToken, ...context.state.topicForm}
  try {
    const res = await axios({
        method: 'post',
        url: '/topics',
        data: data
     })
    context.commit(types.CREATE_TOPIC, res)
  } catch (error) {
    // 请求失败没有返回res对象,直接跳到这里
    console.log(error)
  }
}

你的代码:

async create () {
  const res = await http.post(`/topics`, {
      ...this.state
  })
  if (res.success) {
    this.reset()
       this.app.$router.push({
         path: `/topic/${res.topic_id}`
       })
    } else {
       // 请求失败的res: {success: false, error_msg: "频率限制:当前操作每天可以进行 7 次"}
       utils.toast(res.error_msg)
    }
    return res
}

index.html 改变路径访问不到

您好,我运行你的项目时npm run dev 然后访问127.0.0.1:3000是没问题的。
但是我把index.html移动到src目录下,然后访问127.0.0.1:3000/src这样就有问题,请问可以帮忙看看吗?谢谢

能支持多入口页面吗?

类似多个有些关联的系统,比如说a,b,c,d四个入口html,四个系统,使用一个环境,有些插件,组件可以共享使用,
谢谢

缓存的数据如果有改变,怎么更新呢?

列表页和详情页都有缓存数据,但是缓存的数据变了呢,比如说在列表点赞收藏后,个数就变了,然后进入到详情,在返回列表,怎么更新列表数据?

这个demo,怎么登陆呢 token是啥?(想测下评论后数据变化,怎么处理的)

顺便说下,楼主有换工作打算吗,tencent欢迎你

import mint-ui 报错

项目引入mint-ui提示Module build failed: Error: Couldn't find preset "es2015-rollup" relative to directory

加注释打包报错

在main.js 单独一行加上注释 // 或者/**/,为什么npm打包就会报错呢,该如何解决

README.md中发布代码的命令有误

经过自己测试,发布代码的命令应该是:"npm run build",而不是"npm run dist",用"npm run dist"会报错,后来我看到“package.json”文件“scripts”中的发布代码的字段是“build”不是“dist”

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.