亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解基于webpack2.x的vue2.x的多頁(yè)面站點(diǎn)

 更新時(shí)間:2017年08月21日 11:35:46   作者:leslie·Zhao  
本篇文章主要主要介紹了基于webpack2.x的vue2.x的多頁(yè)面站點(diǎn) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

本文介紹了基于webpack2.x的vue2.x的多頁(yè)面站點(diǎn),分享給大家,具體如下:

vue的多頁(yè)面

依舊使用vue-cli來(lái)初始化我們的項(xiàng)目

然后修改主要目錄結(jié)構(gòu)如下:

├── build
│  ├── build.js
│  ├── check-versions.js
│  ├── dev-client.js
│  ├── dev-server.js
│  ├── utils.js
│  ├── vue-loader.conf.js
│  ├── webpack.base.conf.js
│  ├── webpack.dev.conf.js
│  └── webpack.prod.conf.js
├── src
│  ├── pages
│  │  ├── boys
│  │  │  ├── index.html
│  │  │  ├── index.js
│  │  │  └── index.vue
│  │  ├── goods
│  │  │  ├── index.html
│  │  │  ├── index.js
│  │  │  └── index.vue
│  │  ├── index
│  │  │  ├── index.html
│  │  │  ├── index.js
│  │  │  └── index.vue
│  │  └── sotho
│  │    ├── index.html
│  │    ├── index.js
│  │    └── index.vue

編寫(xiě)每個(gè)頁(yè)面

可以看到這里我們有4個(gè)單獨(dú)的頁(yè)面,分別是boys,goods,index,sotho

首先看boys文件夾中的代碼:

index.html

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>vue3</title>
 </head>
 <body>
  <div id="app"></div>
  <!-- built files will be auto injected -->
 </body>
</html>

這個(gè)是我們要單獨(dú)生成的頁(yè)面,最后也是生成index.html

index.vue

<style scoped>
 .boys {
  background-color: red;
 }
</style>
<template>

 <div id="app" class="boys">
  boys got many things.
 </div>

</template>
<script>

export default {
 name: 'boys'
}

</script>

這是我們的vue文件,可以看成一個(gè)組件,其實(shí).vue文件你可以看成一個(gè)語(yǔ)法糖,最終會(huì)被vue-loader編譯成js,生成對(duì)應(yīng)的css,js,dom

index.js

import Vue from 'vue'
import Index from './index.vue'

Vue.config.productionTip = false

new Vue({
 el: '#app',
 template: '<Index/>',
 components: { Index }
})

這就是主要文件了,這里執(zhí)行vue的實(shí)例化,用法同在瀏覽器端頁(yè)面中直接引入vue.js文件一樣的含義

其他幾個(gè)頁(yè)面一樣也是同理,具體可以見(jiàn):

修改webpack.config.js

由于vue中的配置使用了模塊化管理,所以我們需要修改下面兩個(gè)文件:

1、webpack.base.conf.js

我們需要修改webpack.base.conf.js的入口entry,這是配置多入口文件的重點(diǎn)!

如果不懂多入口含義的化,建議去看下webpack的文檔。

webpack.base.conf.js

...

module.exports = {
 entry: {
  'pages/boys/index': './src/pages/boys/index.js', //配置boys頁(yè)面入口
  'pages/goods/index': './src/pages/goods/index.js', //配置goods頁(yè)面入口
  'pages/index/index': './src/pages/index/index.js', //配置index頁(yè)面入口
  'pages/sotho/index': './src/pages/sotho/index.js', //配置sotho頁(yè)面入口
 },
...

2、webpack.dev.conf.js

這里我們需要修改plugins,它是個(gè)強(qiáng)大的即插即用的拓展。

我們使用html-webpack-plugin來(lái)生成我們的對(duì)于的頁(yè)面。

...
var HtmlWebpackPlugin = require('html-webpack-plugin')
...

...

module.exports = merge(baseWebpackConfig, {
 ...
 plugins: [
  new webpack.DefinePlugin({
   'process.env': config.dev.env
  }),
   new HtmlWebpackPlugin({
   filename:'./pages/boys/index.html', //指定生成的html存放路徑
   template:'./src/pages/boys/index.html', //指定html模板路徑
   inject: true, //是否將js等注入頁(yè)面,以及指定注入的位置'head'或'body'
   chunks:['pages/boys/index'] //需要引入的chunk(模塊資源),不配置就會(huì)引入所有頁(yè)面的資源(js/css),這是個(gè)很重要的屬性,你可以不配置試試效果
  }),
  new HtmlWebpackPlugin({
   filename:'./pages/goods/index.html',
   template:'./src/pages/goods/index.html',
   inject: true,
   chunks:['pages/goods/index']
  }),
  new HtmlWebpackPlugin({
   filename:'./pages/index/index.html', 
   template:'./src/pages/index/index.html',
   inject: true,
   chunks:['pages/index/index']
  }),
  new HtmlWebpackPlugin({
   filename:'./pages/sotho/index.html',
   template:'./src/pages/sotho/index.html',
   inject: true,
   chunks:['pages/sotho/index']
  }),
  ...
 ]
})

以上就是我們進(jìn)行多頁(yè)開(kāi)發(fā)的主要配置項(xiàng)。

開(kāi)發(fā)環(huán)境訪問(wèn)頁(yè)面

運(yùn)行npm run dev,我們看下怎么訪問(wèn)我們的多頁(yè)vue應(yīng)用。

  • http://localhost:9090/pages/index/index.html 訪問(wèn)index頁(yè)面
  • http://localhost:9090/pages/boys/index.html 訪問(wèn)boys頁(yè)面
  • http://localhost:9090/pages/goods/index.html 訪問(wèn)goods頁(yè)面
  • http://localhost:9090/pages/sotho/index.html 訪問(wèn)sotho頁(yè)面

再來(lái)看下我們的dom結(jié)構(gòu)是什么樣:

頁(yè)面里的js就是我們通過(guò)插件注入的,并且我們是通過(guò)指定chunks完成。

build

運(yùn)行npm run build

➜ vue2-x-multiple git:(master) ✗ npm run build

> vue3@1.0.0 build /study/vue2-x-multiple
> node build/build.js

⠋ building for production...
Starting to optimize CSS...
Processing static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css...
Processing static/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css...
Processing static/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css...
Processing static/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css...
Processed static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css, before: 114, after: 44, ratio: 38.6%
Processed static/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css, before: 116, after: 46, ratio: 39.66%
Processed static/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css, before: 92, after: 22, ratio: 23.91%
Processed static/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css, before: 92, after: 22, ratio: 23.91%
Hash: 2467c91090ccf4690865
Version: webpack 2.5.1
Time: 6319ms
                                Asset    Size Chunks       Chunk Names
static/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css.map 312 bytes    1 [emitted] pages/sotho/index
               static/js/vendor.d7548891d04d4f883b29.js  83.2 kB    0 [emitted] vendor
         static/js/pages/index/index.b2ce74f4155fb942a064.js 671 bytes    2 [emitted] pages/index/index
         static/js/pages/goods/index.7d0dda2791db2d3b1500.js 702 bytes    3 [emitted] pages/goods/index
          static/js/pages/boys/index.2c268b75ba9424211d79.js 699 bytes    4 [emitted] pages/boys/index
              static/js/manifest.f466ccb58b3271558be5.js  1.57 kB    5 [emitted] manifest
   static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css  44 bytes    4 [emitted] pages/boys/index
  static/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css  46 bytes    3 [emitted] pages/goods/index
  static/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css  22 bytes    2 [emitted] pages/index/index
  static/css/pages/sotho/index.7415ffd3ef7b9d1a4398cba49927b12b.css  22 bytes    1 [emitted] pages/sotho/index
             static/js/vendor.d7548891d04d4f883b29.js.map   687 kB    0 [emitted] vendor
       static/js/pages/sotho/index.e706490d7c42ad8e4f73.js.map  5.55 kB    1 [emitted] pages/sotho/index
         static/js/pages/sotho/index.e706490d7c42ad8e4f73.js 674 bytes    1 [emitted] pages/sotho/index
       static/js/pages/index/index.b2ce74f4155fb942a064.js.map  5.55 kB    2 [emitted] pages/index/index
static/css/pages/index/index.f6340f14071a89cf2b092da280ffaf8c.css.map 312 bytes    2 [emitted] pages/index/index
       static/js/pages/goods/index.7d0dda2791db2d3b1500.js.map  5.64 kB    3 [emitted] pages/goods/index
static/css/pages/goods/index.fe8f1bc39f33dce4c4d610c2326482c6.css.map 338 bytes    3 [emitted] pages/goods/index
        static/js/pages/boys/index.2c268b75ba9424211d79.js.map  5.62 kB    4 [emitted] pages/boys/index
 static/css/pages/boys/index.19ebbc80a1c187989dbf02d03192e84e.css.map 333 bytes    4 [emitted] pages/boys/index
            static/js/manifest.f466ccb58b3271558be5.js.map  14.6 kB    5 [emitted] manifest
                       ./pages/boys/index.html 386 bytes     [emitted]
                       ./pages/goods/index.html 389 bytes     [emitted]
                       ./pages/index/index.html 389 bytes     [emitted]
                       ./pages/sotho/index.html 389 bytes     [emitted]

 Build complete.

 Tip: built files are meant to be served over an HTTP server.
 Opening index.html over file:// won't work.

進(jìn)入dist目錄,查看生成的頁(yè)面

├── pages
│  ├── boys
│  │  └── index.html
│  ├── goods
│  │  └── index.html
│  ├── index
│  │  └── index.html
│  └── sotho
│    └── index.html
└── static
  ├── css
  │  └── pages
  │    ├── boys
  │    │  ├── index.19ebbc80a1c187989dbf02d03192e84e.css
  │    │  └── index.19ebbc80a1c187989dbf02d03192e84e.css.map
  │    ├── goods
  │    │  ├── index.fe8f1bc39f33dce4c4d610c2326482c6.css
  │    │  └── index.fe8f1bc39f33dce4c4d610c2326482c6.css.map
  │    ├── index
  │    │  ├── index.f6340f14071a89cf2b092da280ffaf8c.css
  │    │  └── index.f6340f14071a89cf2b092da280ffaf8c.css.map
  │    └── sotho
  │      ├── index.7415ffd3ef7b9d1a4398cba49927b12b.css
  │      └── index.7415ffd3ef7b9d1a4398cba49927b12b.css.map
  └── js
    ├── manifest.f466ccb58b3271558be5.js
    ├── manifest.f466ccb58b3271558be5.js.map
    ├── pages
    │  ├── boys
    │  │  ├── index.2c268b75ba9424211d79.js
    │  │  └── index.2c268b75ba9424211d79.js.map
    │  ├── goods
    │  │  ├── index.7d0dda2791db2d3b1500.js
    │  │  └── index.7d0dda2791db2d3b1500.js.map
    │  ├── index
    │  │  ├── index.b2ce74f4155fb942a064.js
    │  │  └── index.b2ce74f4155fb942a064.js.map
    │  └── sotho
    │    ├── index.e706490d7c42ad8e4f73.js
    │    └── index.e706490d7c42ad8e4f73.js.map
    ├── vendor.d7548891d04d4f883b29.js
    └── vendor.d7548891d04d4f883b29.js.map

到此為止,一個(gè)簡(jiǎn)單的基于vue2.x的多頁(yè)應(yīng)用完成了。

升級(jí)

webpack.base.conf.js中的entry入口都是手工寫(xiě)入,如果頁(yè)面多的話(huà)這樣肯定有問(wèn)題。

所以我們通過(guò)如下的方式來(lái)自動(dòng)完成這段代碼:

var entryJS = glob.sync('./src/pages/**/*.js').reduce(function (prev, curr) {
  prev[curr.slice(6, -3)] = curr;
  return prev;
}, {});

這里的 './src/pages/**/*.js' 我們按照一定的規(guī)則去匹配我們的入口j s即可。

生成的的是:

{ 'pages/boys/index': './src/pages/boys/index.js',
 'pages/goods/index': './src/pages/goods/index.js',
 'pages/index/index': './src/pages/index/index.js',
 'pages/sotho/index': './src/pages/sotho/index.js' }

與我們想要的行為一致

同樣我們也升級(jí)下我們的webpack.dev.conf.js中的plugins

var htmls = glob.sync('./src/pages/**/*.html').map(function (item) {
  return new HtmlWebpackPlugin({
    filename: './' + item.slice(6),
    template: item,
    inject: true,
    chunks:[item.slice(2, -5)]
  });
});

module.exports = merge(baseWebpackConfig, {
 module: {
  rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
 },
 // cheap-module-eval-source-map is faster for development
 devtool: '#cheap-module-eval-source-map',
 plugins: [
  new webpack.DefinePlugin({
   'process.env': config.dev.env
  }),
  // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
  new webpack.HotModuleReplacementPlugin(),
  new webpack.NoEmitOnErrorsPlugin(),
  // https://github.com/ampedandwired/html-webpack-plugin
  new FriendlyErrorsPlugin()
 ].concat(htmls)
})

生成的是:

HtmlWebpackPlugin {
 options:
  { template: './src/pages/boys/index.html',
   filename: './pages/boys/index.html',
   hash: false,
   inject: true,
   compile: true,
   favicon: false,
   minify: false,
   cache: true,
   showErrors: true,
   chunks: [ 'pages/boys/index' ],
   excludeChunks: [],
   title: 'Webpack App',
   xhtml: false } }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js分頁(yè)之前端代碼實(shí)現(xiàn)和請(qǐng)求處理

    js分頁(yè)之前端代碼實(shí)現(xiàn)和請(qǐng)求處理

    這篇文章主要為大家詳細(xì)介紹了js分頁(yè)之前端代碼實(shí)現(xiàn)和請(qǐng)求處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • javascript canvas實(shí)現(xiàn)雨滴效果

    javascript canvas實(shí)現(xiàn)雨滴效果

    這篇文章主要為大家詳細(xì)介紹了javascript canvas實(shí)現(xiàn)雨滴效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 深入理解JavaScript系列(10) JavaScript核心(晉級(jí)高手必讀篇)

    深入理解JavaScript系列(10) JavaScript核心(晉級(jí)高手必讀篇)

    本篇是ECMA-262-3 in detail系列的一個(gè)概述(本人后續(xù)會(huì)翻譯整理這些文章到本系列(第11-19章)。每個(gè)章節(jié)都有一個(gè)更詳細(xì)的內(nèi)容鏈接,你可以繼續(xù)讀一下每個(gè)章節(jié)對(duì)應(yīng)的詳細(xì)內(nèi)容鏈接進(jìn)行更深入的了解
    2012-01-01
  • js放大鏡放大購(gòu)物圖片效果

    js放大鏡放大購(gòu)物圖片效果

    這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)放大鏡放大購(gòu)物圖片效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • from 表單提交返回值用post或者是get方法實(shí)現(xiàn)

    from 表單提交返回值用post或者是get方法實(shí)現(xiàn)

    from 表單提交的返回值可以用jquery的post或者是get方法去實(shí)現(xiàn),具體如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    2013-08-08
  • 微信小程序提交form操作示例

    微信小程序提交form操作示例

    這篇文章主要介紹了微信小程序提交form操作,結(jié)合實(shí)例形式分析了微信小程序開(kāi)發(fā)中使用form組件實(shí)現(xiàn)數(shù)據(jù)提交與數(shù)據(jù)處理相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • js 轉(zhuǎn)json格式的字符串為對(duì)象或數(shù)組(前后臺(tái))的方法

    js 轉(zhuǎn)json格式的字符串為對(duì)象或數(shù)組(前后臺(tái))的方法

    下面小編就為大家?guī)?lái)一篇js 轉(zhuǎn)json格式的字符串為對(duì)象或數(shù)組(前后臺(tái))的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 使用apifm-wxapi模塊中的問(wèn)題及解決方法

    使用apifm-wxapi模塊中的問(wèn)題及解決方法

    這篇文章主要介紹了使用apifm-wxapi模塊中的問(wèn)題及講解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • js前端日歷控件(懸浮、拖拽、自由變形)

    js前端日歷控件(懸浮、拖拽、自由變形)

    這篇文章主要為大家詳細(xì)介紹了js前端日歷控件,可根據(jù)日期自定義日歷上某日的顏色,另外可以懸浮,拖拽,自由變形
    2017-03-03
  • JS異步的執(zhí)行順序分析

    JS異步的執(zhí)行順序分析

    這篇文章介紹了JS異步的執(zhí)行順序,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論