首頁 > web前端 > js教程 > 使用Vue仿製今日頭條(詳細教學)

使用Vue仿製今日頭條(詳細教學)

亚连
發布: 2018-06-07 15:39:16
原創
2930 人瀏覽過

這篇文章主要介紹了Vue仿今日頭條實例詳解,並把相關程式碼做了說明,對此有興趣的朋友參考下吧。

前言

vue也弄了一段時間了, 前段時間一直想用vue寫個移動端,加之年底也不是很忙,於是前幾天便著手開始弄了,到今天為止也算是勉強能看了

因為也是純粹的寫寫前端頁面,所以數據方面用的是mock.js,為了真實的模擬請求,可以直接在Easy Mock 自己生成API
#也可直接登陸我這項目的Easy Mock帳號密碼:

帳號: vue-toutiao
密碼: 123456

如果你想修改接口,請copy一份在修改

如果你想後台介面也自己開發的話。可以閱讀我這篇部落格Vue Node Mongodb 開發一個完整部落格流程

技術堆疊:

vue webpack vuex axios

結構:

  • #build: webpack配置

  • #config:專案設定參數

  • #src

  • assets : 靜態資源文件,存放圖片啥的

  • components: 常用元件。例如 彈跳窗 等等。 。 。

  • directive: 常用指令封裝

  • router:路由表

  • ##store: 狀態管理 vuex

  • styles: 樣式檔案

  • utils: 常用工具類別封裝

  • views: 檢視頁面

  • static: 靜態檔案: 存放favicon.ico 等等

  • 此項目用到了DllPlugin 進行打包處理,所有啟動該專案時記得,先執行一次該腳本指令產生配置

效果示範:

幾個常用的知識點

1.路由懶載入。 #

1

2

3

4

5

6

7

{

  path: '/development',

  name: 'development',

  component: (resolve) => {

    require(['../views/development.vue'], resolve)

  }

}

登入後複製

1

2

3

4

5

6

7

const _import_ = file => () => import('views/' + file + '.vue')

 

{

  path: '/development',

  name: 'development',

  component: _import_('development')

}

登入後複製

2. 登陸攔截

#透過路由的beforeEach 鉤子函數來判斷是否需要登陸

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

// 如:系统设置需要登陆

{

  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. 動畫切換

透過偵測設定在Router上的animate屬性來判斷它做什麼樣的切換動畫

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

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. 影片播放

#因為在IOS上無法隱藏video的controls ,所以我們可以隱藏video,透過繪製canvas來達到播放影片的效果

5. icon採用的是阿里巴巴向量圖

6. mock.js

7. Easy Mock

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

在vue中處理物件屬性改變視圖不更新問題?

在vue2.0中不同畫面適配px與rem轉換問題

在Vue中如何實作帶進度條的檔案拖曳上傳功能

以上是使用Vue仿製今日頭條(詳細教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
vue
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板