1. 程式人生 > >用vue.js和vue-router重構一個網站

用vue.js和vue-router重構一個網站

拿了個以前的專案做練手,用了vue-cli,vue-router,vuex。主要還是想學習一下webpack和單檔案元件的思想。不過程式碼寫得其實挺匆忙,感覺還有很多地方還能改進,元件化思想還是不能很好的掌握。
github地址:https://github.com/fshwc/vuedemo-mpacc
這裡寫圖片描述

vue-lic和webpack

很久以前我就看了webpack,但是因為還挺新的,大多資源都是英文,所以除我跟著網上做做demo沒實際嘗試過。但是vue我也學到了一定階段,該進入進階階段了。vue-cli其實幫我們構建好一切了,一句vue init webpack-simple vuedemo

就o了~,但是。。我知道其實webpack還有很多我不懂得功能的。搭好框架後一句webpack-dev-server就能把專案跑起來了。
webpack打包需要指定入口檔案,這個其實指定多少個入口都無所謂的,但是要改出口哦~

//單入口 webpack.config.js
module.exports = {
  entry: './main.js',
  output: {
    filename: 'bundle.js'
  }
};

//多入口
module.exports = {
  entry: {
    bundle1: './main1.js',
    bundle2: './main2.js'
}, output: { filename: '[name].js' } };

但是這專案能這麼想,我把首頁做唯一的入口檔案,那麼跳轉的時候我再非同步載入相應的模組,所以這次我只用了一個入口檔案main.js。
當我沒了解清楚的時候,會想把整個專案都打包成一個js啊,那這個js不就很大,載入很慢嗎,但是有一東東叫懶載入,結合 Vue 的 非同步元件 和 Webpack 的 code splitting feature, 輕鬆實現路由元件的懶載入 http://router.vuejs.org/zh-cn/advanced/lazy-loading.html

單檔案元件

頁面上的每個 獨立的 可視/可互動區域視為一個元件;
每個元件對應一個工程目錄,元件所需的各種資源都在這個目錄下就近維護;
每個元件相對獨立,頁面只不過是元件的容器,元件自由組合形成功能完整的介面;
當不需要某個元件,或者想要替換元件時,可以整個目錄刪除/替換。

現在我自認還沒理解好元件化開發,只是把相同功能的元件放在同一個目錄下而已。vuex建議的專案結構。。。http://vuex.vuejs.org/zh-cn/structure.html。不知道這個是不是分太細。。。不過我相信一個專案足夠大的時候,這樣佈局或許會更好~

專案介紹

用vue重構了校內網,頁面跳轉用了vue-router,我還暫時用了下vuex,但是其實這個是多餘的。。。。本來想運用vuex代替連線資料庫查詢後返回資料,但是沒找到合適的運用方式。所以不是每個專案都需要vuex,尤大大也提醒在專案需要的時候再用。等過完年,我看看webpack怎麼結合Express,用vue-resource發起請求,連線資料庫並返回資料,繼續完善~~

相關推薦

vue.jsvue-router重構一個網站

拿了個以前的專案做練手,用了vue-cli,vue-router,vuex。主要還是想學習一下webpack和單檔案元件的思想。不過程式碼寫得其實挺匆忙,感覺還有很多地方還能改進,元件化思想還是不能很好的掌握。 github地址:https://github.

Vue.jsSpringBoot在axios傳遞引數遇到的坑

最近在研究vue.js 在使用其axios的時候,用Post傳遞陣列物件到後臺 controller始終無法獲取到值!! 原本我是這樣寫的: vue: controller: 控制檯報錯如下   隨即百度,,, https://blog

Vue.js遞迴元件構建一個可摺疊的樹形選單

在Vue.js中一個遞迴元件呼叫的是其本身,如: Vue.component('recursive-component', { template: `<!--Invoking myself!--> &

Vue.jsWebpack開發Web線上鋼琴

緣起 由於童心未泯,之前在手機上玩過鋼琴模擬App,但是手機螢幕太小,始終覺得不過癮。其實對於我這個連基本樂理都不懂的“樂盲”來說,就算給我一臺真正的鋼琴,我也玩不轉。不過是圖個新鮮、權當娛樂罷了。最近剛好入手一臺帶觸控式螢幕的Lenovo Yoga 4 Pro,這倒給

Vue.js結合vue-routerwebpack編寫單頁路由專案

一、前提 1. 安裝了node.js。 2. 安裝了npm。 3. 檢查是否安裝成功: 開啟cmd,輸入node,沒有報“node不是內部或外部命令”表示安裝成功node.js。 開啟cmd,輸入npm,沒有報“npm不是內部或外部命令”表示安裝成功node.js。 注意

utils.jsvue-loader.conf.js

sss extra ports xtra build con span map row var utils = require(‘./utils‘)var config = require(‘../config‘)var isProduction = process.env

vue js signalr 結合實現消息推送1

ack all client aspnet 由於 user startup man logs 由於signalr2.2.0 依賴於jQuery,雖然在vuejs 略顯臃腫, 但是對於目前剛接觸 vuejs 和想實現 前後分離的我來說 這已經很好了。目前先實現功能, 然後如果

Vue.js MVVM 小細節

冗余 touch one 提高 初始化 分享 問題 函數 為什麽 MVVM 是Model-View-ViewModel 的縮寫,它是一種基於前端開發的架構模式,其核心是提供對View 和 ViewModel 的雙向數據綁定,這使得ViewModel 的狀態改變

Rails.5.2+ Vue.jsvue-todolist app

func 出現 error pda cat check pan 完成 asc Rails5.2+Vue.js完成Lists(curd) 註意: Edit/update使用SPA(不換頁)的方法完成。點擊文字出現一個輸入框和按鈕。 我的git: https://github.

vue.js路由vue-router(一)——簡單路由基礎

styles mounted num 前言 vue.js ren main.c -s col 前言 vue.js除了擁有組件開發體系之外,還有自己的路由vue-router。在沒有使用路由之前,我們頁面的跳轉要麽是後臺進行管控,要麽是用a標簽寫鏈接。使用vue-rout

Vue.js 使用Vue.jsJquery做增刪改查

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link href="boo

node.js vue-axiosvue-resource

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue-resource</title> <script

angular.jsvue.js中實現函數去抖(debounce)

搜索輸入框 sea class 方案 get clas 電路 dia ive 問題描述 搜索輸入框中,只當用戶停止輸入後,才進行後續的操作,比如發起Http請求等。 學過電子電路的同學應該知道按鍵防抖。原理是一樣的:就是說當調用動作n毫秒後,才會執行該動作,若在這n毫秒內又

Vue.jsVue Router 0.7.x 遷移

從 Vue Router 0.7.x 遷移 只有 Vue Router 2 是與 Vue 2 相互相容的,所以如果你更新了 Vue ,你也需要更新 Vue Router 。這也是我們在主文件中將遷移路徑的詳情新增進來的原因。 有關使用 Vue Router 2 的完整教程,請參閱&nbs

使用vue.js路由踩到的一個坑Unknown custom element

在配合require.js使用vue路由的時候,遇到了路由元件報錯:    “vue.js:597 [Vue warn]: Unknown custom element: <router-link> - did you register the component corre

對頁面某個節點的拖曳(原生jsvue專案)

HTML5中的draggable draggable 屬性規定元素是否可拖動(連結和影象預設是可拖動的。) /// true:規定元素是可拖動的,false:規定元素是不可拖動的,auto:使用瀏覽器的預設特性。 <element draggable="true|false|a

同時使用vue.jsjquery時,jq事件無響應解決辦法

先載入vue.js,讓頁面渲染完成後載入jq,給jq繫結ready事件 $(document).ready(function(){ $(function() { //jq事件 }); }); 更新 ……ready載入太玄學了,測試3/10的

vue.jsangular雙向資料繫結的實現原理

一、vue雙向資料繫結 1、原理 資料劫持: vue.js 是採用資料劫持結合釋出者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在資料變動時釋出訊息給訂閱者,觸發相應的監聽回撥。 2、實現步驟 要實現mv

Vue.jsVue-Router + Webpack 路由懶載入實現

一.前言 當打包構建應用時,Javascript 包會變得非常大,影響頁面載入。如果我們能把不同路由對應的元件分割成不同的程式碼塊,然後當路由被訪問的時候才載入對應元件,這樣就更加高效了。結合 Vue 的非同步元件和 Webpack 的程式碼分割功能,輕鬆實現路由元件的懶載入.

vue.jslaravel使用vue-bootstrap-pagination外掛分頁

前端使用的是vue.js後端使用的是laravel獲取到介面的資料, vue-bootstrap-pagination所需要的資料格式記錄一下; <div class='col-lg-5'>       <table class="table