Use Vue to imitate Toutiao (detailed tutorial)
This article mainly introduces the detailed examples of Vue imitating Toutiao, and explains the relevant code. Friends who are interested in this can refer to it.
Preface
I have been working on vue for a while. I have always wanted to use vue to write a mobile terminal. In addition, I am not very busy at the end of the year, so I started working on it a few days ago. So far today, I can barely read it
Because I am purely writing front-end pages, I use mock.js for data. In order to simulate real requests, you can directly generate the API yourself in Easy Mock
You can also directly log in to the Easy Mock account of my project. Password:
Account: vue-toutiao
Password: 123456
If you want to modify the interface, please make a copy and modify it
If you want to develop the backend interface yourself. You can read my blog Vue Node Mongodb to develop a complete blog process
Technology stack:
vue webpack vuex axios
Structure:
-
build: webpack configuration
config: project configuration parameters
src
assets : Static resource files, storing pictures and so on
components: Commonly used components. For example, pop-up windows, etc. . .
directive: Common instruction encapsulation
router: routing table
store: state management vuex
styles: style file
utils: common tool class package
views: view page
static: Static file: store favicon.ico, etc.
This project uses DllPlugin for packaging, so remember when starting the project , first execute the script command once to generate the configuration
Effect demonstration:
Several common knowledge points
1. Lazy loading of routes
{ path: '/development', name: 'development', component: (resolve) => { require(['../views/development.vue'], resolve) } }
or
const _import_ = file => () => import('views/' + file + '.vue') { path: '/development', name: 'development', component: _import_('development') }
2. Login interception
Determine whether login is required through the beforeEach hook function of the route
// 如:系统设置需要登陆 { path: '/system', name: '系统设置', meta: { login: true }, component: _import_('System/index') } router.beforeEach((to, from, next) => { if (to.meta.login) { //判断前往的界面是否需要登陆 if (store.state.user.user.name) { // 是否已经登陆 next() }else{ Vue.prototype.$alert('请先登录!') .then( () => { store.state.user.isLogin = true }) } }else{ if (to.meta.page) store.state.app.pageLoading = true next() } })
3. Animation switching
Determine what kind of switching animation it does by detecting the animate attribute set on the Router
Router.prototype.animate = 0 // 获取每个路由meta上面的slide 来判断它做什么动画 { path: '/system', name: '系统设置', meta: { slide: 1 }, component: _import_('System/index') } watch: { $route (to, from) { /* 0: 不做动画 1: 左切换 2: 右切换 3: 上切换 4: 下切换 ... */ let animate = this.$router.animate || to.meta.slide if (!animate) { this.animate = '' }else{ this.animate = animate === 1 ? 'slide-left' : animate === 2 ? 'slide-right' : animate === 3 ? 'slide-top' : animate === 4 ? 'slide-bottom' : '' } this.$router.animate = 0 } }
4. Video playback
Because the video controls cannot be hidden on IOS, we can hide the video and achieve the effect of playing the video by drawing canvas
5. The icon uses Alibaba vector graphics
6. mock.js
7. Easy Mock
The above is what I compiled for everyone. I hope that in the future It will be helpful to everyone.
Related articles:
How to deal with the problem of view not updating when object properties are changed in vue?
Different screen adaptation px and rem conversion issues in vue2.0
How to implement file dragging with progress bar in Vue Upload function
The above is the detailed content of Use Vue to imitate Toutiao (detailed tutorial). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

There are three ways to refer to JS files in Vue.js: directly specify the path using the <script> tag;; dynamic import using the mounted() lifecycle hook; and importing through the Vuex state management library.

The watch option in Vue.js allows developers to listen for changes in specific data. When the data changes, watch triggers a callback function to perform update views or other tasks. Its configuration options include immediate, which specifies whether to execute a callback immediately, and deep, which specifies whether to recursively listen to changes to objects or arrays.

Vue multi-page development is a way to build applications using the Vue.js framework, where the application is divided into separate pages: Code Maintenance: Splitting the application into multiple pages can make the code easier to manage and maintain. Modularity: Each page can be used as a separate module for easy reuse and replacement. Simple routing: Navigation between pages can be managed through simple routing configuration. SEO Optimization: Each page has its own URL, which helps SEO.

Vue.js has four methods to return to the previous page: $router.go(-1)$router.back() uses <router-link to="/" component window.history.back(), and the method selection depends on the scene.

There are three common methods for Vue.js to traverse arrays and objects: the v-for directive is used to traverse each element and render templates; the v-bind directive can be used with v-for to dynamically set attribute values for each element; and the .map method can convert array elements into new arrays.

The methods to implement the jump of a tag in Vue include: using the a tag in the HTML template to specify the href attribute. Use the router-link component of Vue routing. Use this.$router.push() method in JavaScript. Parameters can be passed through the query parameter and routes are configured in the router options for dynamic jumps.
