那些年vue踩過的坑

来源:https://www.cnblogs.com/ziguiyu/archive/2018/06/04/9136421.html
-Advertisement-
Play Games

1.前言 學習Vue前端框架已經一個月了,作為一個web剛入門的菜鳥,在學習的過程中,網上有些技術博客往往沒有什麼可以借鑒的地方,在這裡 我特意將我從開始一直到登錄的過程記錄下來。希望看到我的文章的朋友們能夠少走點彎路,不喜勿噴喲! 2.開發依賴工具 2.1 node.js 2.2 git 2.3  ...


1.前言

    學習Vue前端框架已經一個月了,作為一個web剛入門的菜鳥,在學習的過程中,網上有些技術博客往往沒有什麼可以借鑒的地方,在這裡 我特意將我從開始一直到登錄的過程記錄下來。希望看到我的文章的朋友們能夠少走點彎路,不喜勿噴喲!

2.開發依賴工具

   2.1 node.js

    2.2 git

    2.3 Visual Studio Code

3.代碼

   3.1安裝node.js

        node.js在百度上搜索一共有兩個網址:http://nodejs.cn/download/ 和https://nodejs.org/en/ 前面的url是中文網的地址,後面的是官網的地址。中文網的node版本會比官網的版本低,最起碼現在是這樣。我使用的是最新版本v10.3.0 在官網下載的 安裝流程就不說了。一路向下就行,很粗暴的。安裝完畢,運行 node -v 和npm -v 檢查是否成功安裝。

 

        這裡建議使用cnpm,cnpm的安裝有兩種

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

  或者

alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"

# Or alias it in .bashrc or .zshrc
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
  --cache=$HOME/.npm/.cache/cnpm \
  --disturl=https://npm.taobao.org/dist \
  --userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc

  推薦下麵這種

    3.2 安裝git

          git官網下載地址:https://git-scm.com/download/win   下載完畢後進行安裝,也是一路向下,沒有需要註意的地方。安裝完畢 ,右擊你的桌面空白處會出現兩個入口。

          git bash here 我是用來下載vue-cli的模板,以及啟動項目的。其他用途請自行百度。

    3.3 安裝 Visual Studio Code

        這是一個編輯器,前端有很多編輯器,可以根據自己的喜好來。我比較中意這個的代碼錯誤提示:ESLint

         下載地址:https://code.visualstudio.com/

         

 

    3.4項目搭建 

        vue項目我使用的是webpack的模板,關於打包請自行百度。

        1.首先是安裝vue-cli腳手架

$ npm install -g vue-cli

  2.查看vue-cli的版本

$ vue -V

  這裡需要註意的是,V是大寫的。

       3.下載模板。

$ vue init webpack my-project

  初始化用webpack打包的項目,my-project是項目名稱 會出現以下步驟。

        上面主要是項目的一些描述和基本配置。可以按照我上面的進行配置。這裡之前遇到過問題就是初始化項目的時候,報錯404

         這個問題是版本問題,更換下vue-cli的版本就可以了,出現這個問題就多試試版本 畢竟好事多磨嘛。版本問題解決了之後,可能會出現一些其他問題,比如初始化模板的時候頁面卡住。流程不走。這是因為網上有許多windows下的命令行工具,比如MobaXterm這個工具。我之前出現過頁面卡住的原因就是因為使用了這個工具。具體原因不明。後來使用了git bash here 解決了頁面卡住的問題。

        4.安裝依賴,運行vue項目。

$ cd my-project
$ npm install
$ npm run dev

  這裡一般不會出現問題,出現問題請自行百度。成功後會出現:

       在地址欄輸入 http://localhost:8080 會看到下麵的頁面

       至此,vue項目搭建成功。下麵會記錄下相關技術的使用。

       我使用的ui框架是 element-ui  文檔地址:http://element-cn.eleme.io/#/zh-CN/component/installation

       仔細閱讀一下文檔,就可以上手學習了。配置都有說明,我就不貼圖了

       與伺服器進行交互使用的是 axios vue1.0的時候官方推的是vue-resource 但是2.0官方推的是 axios 所以最好使用axios 畢竟也要跟進潮流嘛。

       1.安裝axios 

$ npm install axios -S

  2.在main.js引入

import axios from 'axios' // 1、在這裡引入axios
Vue.prototype.$http = axios;// 2、在vue中使用axios

  3.使用方法

this.$http.get().then(res => {});//這裡我使用post請求報錯,由於是demo 就沒有去百度具體原因,有強迫症的小伙伴可以去研究下,解決問題的話 熱心的小伙伴可以貼我下代碼 

  4.axios 跨域問題。

         在config目錄下的index.js找到proxyTable欄位,在裡面添加如下代碼。

'/api': {
          target:'http://localhost:8080/', // 你請求的第三方介面
          changeOrigin:true, // 在本地會創建一個虛擬服務端,然後發送請求的數據,並同時接收請求的數據,這樣服務端和服務端進行數據的交互就不會有跨域問題
          pathRewrite:{  // 路徑重寫,
              '^/api': '/api'  // 替換target中的請求地址,也就是說以後你在請求http://api.jisuapi.com/XXXXX這個地址的時候直接寫成/api即可。
          }
      }

  5.axios 請求本地數據

       在build目錄下的webpack.dev.conf.js中添加如下代碼

//new start
const express = require('express');
const app = express();
const  appData = require('../data.json');
const  login = appData.login;
var apiRoutes = express.Router();
app.use('/api', apiRoutes);

  還是這個js文件中,找到devServer欄位,在這個欄位里添加如下代碼:

before(app) {
      app.get('/api/login', function(req, res) {
        res.json({
          errno: 0,
          data: login
        })
      });
    }

  在項目根目錄下創建一個data.json的文件 內容如下:

{
    "login":{
        "ec":"0",
        "alias":"子規魚",
        "token":"201806041953AcrqTQWECwe"
      }
}

  這是測試數據, 如果需要其他測試數據 只需要修改這個小節的第一張代碼的

const  login = appData.login;//login為data.json中的key
app.get('/api/login', function(req, res) {//這個/api/login 根據情況替換 login 就是上面這行代碼的 const 後面的常量名
        res.json({
          errno: 0,
          data: login //這個也需要改變
        })
      });
//下麵這個是data.json中的數據
"login":{
        "ec":"0",
        "alias":"子規魚",
        "token":"201806041953AcrqTQWECwe"
      }

  然後進行頁面調試即可。

      6.vue-router 路由

      在登錄的時候,往往需要進行登錄控制,具體步驟為如果在沒有登錄狀態下訪問不是登錄頁的路由 那麼就跳轉登錄頁,這裡我遇到的問題就是登錄攔截不到。廢話不多說 貼代碼

 

import Vue from 'vue'
import Router from 'vue-router'
import login from '@/components/login'
import index from '@/views/index'
import test from '@/views/test'
Vue.use(Router)

const router = new Router({
  mode: 'history',
  routes: [
    {
      path: '/login',
      name: 'login',
      component: login
    },
    {
      path: '/index',
      name: 'index',
      component: index
    },
    {
      path: '/test',
      name: 'test',
      component: test
    }
  ]
})

//登錄控制
router.beforeEach((to, from, next) => {
  //NProgress.start();
  if (to.path == '/login') {
     sessionStorage.removeItem('token');
  }
  let user = sessionStorage.getItem('token');
  if (!user && to.path != '/login') {
    next('login')
  }
  else {
    next()
  }
})
export default router

  之前嘗試在main.js寫控制 也就是下麵這行代碼 是控制不住的

//登錄控制
router.beforeEach((to, from, next) => {
  //NProgress.start();
  if (to.path == '/login') {
     sessionStorage.removeItem('token');
  }
  let user = sessionStorage.getItem('token');
  if (!user && to.path != '/login') {
    next('login')
  }
  else {
    next()
  }
})

  至此結束。希望對小伙伴們有幫助。Good luck !


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目前,市場上的大數據產品太多,但遠遠低於IAAS的標準化水平,各產品之間的差異還不十分清楚。當許多公司正在製造大數據平臺或大數據解決方案時,他們往往不知道選擇哪些產品來滿足他們的需求。一般的做法是做研究、學習、建造環境、測試和整合各種產品,但通常這個過程很長,而且成本很高。如果你想瞭解大數據的學習路 ...
  • 原文:https://blog.csdn.net/andrewniu/article/details/78485312 原文:https://jingyan.baidu.com/article/76a7e40909b961fc3b6e1519.html ...
  • 一.概述 講到sql server鎖管理時,感覺它是一個大話題,因為它不但重要而且涉及的知識點很多,重點在於要掌握高併發要先要掌握鎖與事務,涉及的知識點多它包括各式各樣的鎖,鎖的組合,鎖的排斥,鎖延伸出來的事務隔離級別, 鎖住資源帶來的阻塞,鎖之間的爭用造成的死鎖,索引數據與鎖等。這次介紹鎖和事務, ...
  • 實驗一:實驗案例一(附加“練慣用的可以附加的資料庫--class”) 1、在products表中查詢出廠日期晚於2014年4月的水果信息。 select * from products where 出廠日期>'2014-04-30 ' 2、在products表中分組查詢所有水果,蔬菜,堅果的總成本。 ...
  • 本文重點談交易型分散式資料庫的關鍵設計點,這裡並不針對具體的產品而是以普適性的結構,結合NoSQL與NewSQL的差異,從縱向來談談OLTP場景“分散式資料庫”實現方案的關鍵技術要點。算是分散式資料庫專題文章的一個總綱,其中的要點Ivan之後也會單獨撰文闡述。 ...
  • today,one buddy in IMG wechat group 2 asked "why i've installed the MySQL 5.7 on linux server,but there's no mysqld_safe command at all?"so,here i'd l ...
  • React Native 為傳統前端開發者打開了一扇新的大門。其中,使用瀏覽器的調試工具去Debug移動端的代碼,無疑是最吸引開發人員的特性之一。希望本文能夠幫助新手開發者走出一小步,更快的邁過這道門檻。 ...
  • 緊接著上一節來寫 一,選中On按鈕,同時按住Control鍵,連接到FirstViewController.h文件中。 會彈出如下對話框。 二,將Connection處選擇為Action,同時將Name處填入點擊事件名稱,此處可不寫冒號,Xcode會自動在點擊事件後添加冒號。 如下圖所示。點擊事件為 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...