1. 程式人生 > >vue-cli + webpack 多頁面例項應用

vue-cli + webpack 多頁面例項應用

關於vue.js

vue.js是一套構建使用者介面的 輕型的漸進式前端框架。它的目標是通過儘可能簡單的 API 實現響應的資料繫結和組合的檢視元件。使用vue可以給你的開發帶來極致的程式設計體驗。

關於vue-cli

Vue-cli是vue官方提供的一個命令列工具(vue-cli),可用於快速搭建大型單頁應用。該工具提供開箱即用的構建工具配置,帶來現代化的前端開發流程。只需一分鐘即可啟動帶熱過載、儲存時靜態檢查以及可用於生產環境的構建配置的專案。

疑問

vue-cli主要是用於構建單頁應用的腳手架,但是現實專案中,大部分專案都是多頁的,怎麼樣可以很好的利用這一套官方配置呢?我在網上找了一下, 幾乎找不到vue多頁應用例項,所以才有基於vue-cli生成的單頁應用進行改造。

程式碼地址:

使用方法

複製程式碼
# install dependencies
npm install

# serve with hot reload at localhost:8080/module/index.html
npm run dev

# build for production with minification
npm run build
複製程式碼

目錄結構

複製程式碼
vue-cli-multipage
  |---build
  |---config
  |---src
    |---assets
      |---img 圖片檔案
      |---css 樣式檔案
      
|---font 字型檔案 |---components 元件 |---Button.vue 按鈕元件 |---Hello.vue |---module |---index 首頁模組 |---index.html |---index.js |---App.vue |---detail 詳情頁模組 |---detail.html |---detail.js |---App.vue
複製程式碼

從目錄結構上,各種元件、頁面模組、資源等都按類新建了資料夾,方便我們儲存檔案。

其實我們所有的檔案,最主要都是放在module資料夾裡,以資料夾名為html的名稱。

例如:

複製程式碼
|---index  首頁模組
  |---index.html
  |---index.js
  |---App.vue
複製程式碼

此時我們訪問的連結是:

http://localhost:8080/module/index.html

這裡一定要注意,在module裡下級資料夾裡需要將html,js,vue template 都統一放在當前資料夾裡,當然你也可以繼續放其他的資源,例如css、圖片、元件等,webpack會打包到當前頁面裡。

如果專案不需要這個頁面了,可以把這個資料夾直接刪除掉,乾淨利落,幹活也開心。

像以前傳統的開發專案,所有的圖片都習慣放在images裡,當專案有改動時,有些圖片等資源用不上了,但還佔著坑位,導致專案越來越大,雖然現在的硬體容量大到驚人,但我們應該還是要養到一個良好的習慣。

元件的使用

元件(Component)是 vue.js 最強大的功能之一,當你發現使用元件可以減少造輪子裡,你會深深的愛上它。

我們的元件都是放在components目錄下的,呼叫元件的方法也很簡單。

import Hello from 'components/Hello'

然後記得在*.vue註冊匯入的元件,要不然會無法使用。

複製程式碼
import Hello from 'components/Hello'

export default {
  name: 'app',
  components: {
    //在這裡註冊元件,不然無法使用
    Hello
  }
}
複製程式碼

構建程式碼說明

那我們使用的是vue-cli的手腳架,用過vue-cli的同學都知道構建程式碼是放在根目錄build下,vue多頁面主要修改了這三個JS檔案:webpack.base.conf.js、webpack.dev.conf.js、webpack.prod.conf.js。

複製程式碼
/**
**    [webpack.base.conf.js]這裡主要列出相關程式碼的修改點,具體程式碼請看build/webpack.base.conf.js
*/
var entries = getEntry('./src/module/**/*.js'); // 獲得入口js檔案

module.exports = {
  entry: entries,
  ....
}

function getEntry(globPath) {
  var entries = {},
    basename, tmp, pathname;

  glob.sync(globPath).forEach(function (entry) {
    basename = path.basename(entry, path.extname(entry));
    tmp = entry.split('/').splice(-3);
    pathname = tmp.splice(0, 1) + '/' + basename; // 正確輸出js和html的路徑
    entries[pathname] = entry;
  });

  return entries;
}
複製程式碼 複製程式碼
/**
**    [webpack.prod.conf.js]這裡主要列出相關程式碼的修改點,具體程式碼請看build/webpack.base.prod.js
*/
function getEntry(globPath) {
  var entries = {},
    basename, tmp, pathname;

  glob.sync(globPath).forEach(function (entry) {
    basename = path.basename(entry, path.extname(entry));
    tmp = entry.split('/').splice(-3);
    pathname = tmp.splice(0, 1) + '/' + basename; // 正確輸出js和html的路徑
    entries[pathname] = entry;
  });
  return entries;
}

var pages = getEntry('./src/module/**/*.html');

for (var pathname in pages) {
  // 配置生成的html檔案,定義路徑等
  var conf = {
    filename: pathname + '.html',
    template: pages[pathname],   // 模板路徑
    inject: true,              // js插入位置
    minify: {
      //removeComments: true,
      //collapseWhitespace: true,
      //removeAttributeQuotes: true
    },
    // necessary to consistently work with multiple chunks via CommonsChunkPlugin
    chunksSortMode: 'dependency'
  };

  if (pathname in module.exports.entry) {
    conf.chunks = ['manifest', 'vendor', pathname];
    conf.hash = true;
  }

  module.exports.plugins.push(new HtmlWebpackPlugin(conf));
}
複製程式碼

 修改的程式碼不是很多,但是卻為多頁應用提供了強大的構建支援。歡迎大家使用,也希望大家多多交流。

 轉自:https://www.cnblogs.com/fengyuqing/p/vue_cli_webpack.html

相關推薦

vue-cli + webpack 頁面例項應用

關於vue.js vue.js是一套構建使用者介面的 輕型的漸進式前端框架。它的目標是通過儘可能簡單的 API 實現響應的資料繫結和組合的檢視元件。使用vue可以給你的開發帶來極致的程式設計體驗。 關於vue-cli Vue-cli是vue官方提供的一個命令列工具(

vue-cli + webpack 頁面配置分析

vue-cli + webpack 多頁面例項應用 <div class="postBody"> <div id="cnblogs_post_body" class="blogpost-body"><h2&g

Vue-cli開發頁面應用

寫在前面,Vue多頁面應用場景: 1.專案很老了後端不願意改介面和配置,前端想嘗試新技術。 2.多頁面可能更多是考慮首屏載入速度,或者SEO等情況,主流方案如SSR。當然這種單頁面也有對應解決方案 點選檢視 迴歸正題 思路:單頁面改成多頁面不就兩個東

[轉] vue&webpack頁面配置

前言 最近由於專案需求,選擇使用vue框架,webpack打包直接使用的vue-cli,因為需要多頁面而vue-cli只有單頁面,所以就決定修改vue-cli的配置檔案來滿足開發需求。 html-webpack-plugin 實現需求需要用到這個外掛, 具體資訊請看這裡 對於多頁面入口我們需要在外掛陣

vue-cli配置頁面專案

背景:vue-cli版本3.0   省略初始化專案;預設的App.vue和index.html檔案可以刪掉 頁面結構如上圖,新加的home可以不要,注意下面的檔案路徑就行   接下來修改配置檔案: 1、修改build/utils.js /* 這裡是新

vue-cli+webpack實現頁面應用的配置

直接上~~ webpack.base.conf.js /** * 多頁面實現--1引入工具 * */var glob = require('glob')/** * 多頁面實現 --2 入口檔案配置 * */var entries = getEntry('./src/m

vue-cli webpack打包遇到的坑,npm run dev 沒有錯誤,訪問頁面卻沒有內容

1. git clone  [email protected]:hotsuitor/learn_vuejs.git2. npm install 3. npm run dev 4. 在瀏覽器開啟頁面檢視,什麼內容也沒有4.2 正常應該可以看到這樣的效果5. emmmm

使用Vue CLI3開發頁面應用

一、安裝vue-cli3 1、如果你已經全域性安裝了舊版本的 vue-cli(1.x 或 2.x),你需要先通過 npm uninstall vue-cli -g 或 yarn global remove vue-cli 解除安裝它。 2、安裝命令:npm

Vue.js系列之項目搭建(vue2.0 + vue-cli + webpack

項目搭建 cnblogs 技術 tro gis vue.js 應用 vue-cli web 1、安裝node node.js環境(npm包管理器) cnpm npm的淘寶鏡像 從node.js官網下載並安裝node,安裝過程很簡單,一路“下一步”就可以了(傻瓜式安裝)。

Vue中引入jquery方法 vue-cli webpack 引入jquery

div 分享圖片 ons run imp vue-cli http query npm 在vue-cli 生成的工程中引入了jquery(模板用的webpack) 首先在package.json裏的dependencies加入"jquery" : "^2.2.3",然後np

如何在vue-cli webpack中全局引入jquery

build innerhtml 如何 inner ner ports pac app -s 1.首先執行:npm install jQuery --save-dev,在package.json裏加入jQuery。 2.修改build下的webpack.base.conf

vue-cli webpack config index.js 配置註釋

for use 輸入 域名 pack set com map webp var path = require(‘path‘) module.exports = { build: { // production 環境 env: require(‘

vue-cli+webpack打包配置

output iat lint creat clu 包含 res client sele 上一篇說的是 webpack打包生成測試和生產版本; 這篇說的這個配置 應該是在打包之前應該配置好的 webpack配置如下: 1. webpack.base.conf.js 入口文件

Vue-cli / webpack 載入靜態js檔案的方法

一、html-webpack-plugin 編譯 1、只需要在入口處定義一個chunks,如我們定義一個fuck模組 entry: { app: './src/main.js', fuck: ['./src/utils/index.js', './src/utils/index2.js']

vue-cli webpack 打包報錯:Unexpected token: punc (()

本來專案完美打包,後來我增加了一個外掛vue-ionicons,打包build就是報錯: ERROR in static/js/8.017e5cf2d2f1a552890d.js from UglifyJs Unexpected token: punc (() [./node_mod

webpack頁面配置之自動獲取入口函式

起初上手webpack大多是進行單頁面的配置,但還是會遇到多頁面的專案,關於多頁面的配置我會有一篇單獨的文章來進行介紹,今天我們來共同學習一下webpack多頁面配置中的自動獲取入口的方法。 先看一下實現方式吧: var path = require('path'); var fs

vue-cli webpack打包釋出到nginx伺服器,nginx.conf配置

server { listen 80; root /var/www/web/; index index.php index.html index.htm; server_name www.web.com;

webpack頁面配置

const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpa

vue cli3 搭建頁面框架接入ckeditor

1.頁面模板根據webpack標識判斷是否引入ckeditor,因為多頁面使用的基礎模板是同一個,所以編譯的時候需要生成不同的模板 <% if(htmlWebpackPlugin.options.hasEditor) { %> <script src="//cdn.cke

vue-cli + webpack 專案中使用sass

1、準備工作: 由於npm的伺服器在國外,網速慢而且安裝容易失敗,建議在安裝之前,先安裝國內的映象,比如淘寶映象 npm install -g cnpm --registry=https://registry.npm.taobao.org   2、安裝vue-cli 全域性